From f4d7f2bfc929d5c207ae1949e8b9b828978fcde9 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 7 Feb 2023 00:53:34 +0800 Subject: [PATCH 001/122] chore: remove unused code --- packages/gqty/src/Interceptor/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/gqty/src/Interceptor/index.ts b/packages/gqty/src/Interceptor/index.ts index 985aedf40..995d4d4c1 100644 --- a/packages/gqty/src/Interceptor/index.ts +++ b/packages/gqty/src/Interceptor/index.ts @@ -61,13 +61,11 @@ export function createInterceptorManager(): InterceptorManager { function createInterceptor() { const interceptor = new Interceptor(); interceptors.add(interceptor); - // console.debug('+ interceptor', interceptors.size); return interceptor; } function removeInterceptor(interceptor: Interceptor) { interceptors.delete(interceptor); - // console.debug('- interceptor', interceptors.size); } function addSelection(selection: Selection) { From 26fc553df6a5cc5e25bcb2b89591a69d302fca71 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 7 Feb 2023 00:53:44 +0800 Subject: [PATCH 002/122] chore: linting and styling --- packages/react/src/query/useLazyQuery.ts | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/packages/react/src/query/useLazyQuery.ts b/packages/react/src/query/useLazyQuery.ts index c549f5fcb..19e4033e8 100644 --- a/packages/react/src/query/useLazyQuery.ts +++ b/packages/react/src/query/useLazyQuery.ts @@ -171,9 +171,7 @@ export function createUseLazyQuery< fetchPolicy?: LazyFetchPolicy; } = {} ) { - dispatch({ - type: 'loading', - }); + dispatch({ type: 'loading' }); const { fn: fnArg, @@ -190,9 +188,7 @@ export function createUseLazyQuery< : (() => { throw new GQtyError( 'You have to specify a function to be resolved', - { - caller: callback, - } + { caller: callback } ); })(); @@ -203,10 +199,7 @@ export function createUseLazyQuery< onCacheData(data): boolean { switch (fetchPolicy) { case 'cache-and-network': { - dispatch({ - type: 'cache-found', - data, - }); + dispatch({ type: 'cache-found', data }); stateRef.current.data = data; return true; } @@ -217,19 +210,13 @@ export function createUseLazyQuery< }).then( (data) => { optsRef.current.onCompleted?.(data); - dispatch({ - type: 'success', - data, - }); + dispatch({ type: 'success', data }); return data; }, (err) => { const error = GQtyError.create(err, useLazyQuery); optsRef.current.onError?.(error); - dispatch({ - type: 'failure', - error, - }); + dispatch({ type: 'failure', error }); throw error; } From 6987e75204cceb735b8fc96cef83e50bdb7ef86e Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 8 Feb 2023 23:00:14 +0800 Subject: [PATCH 003/122] chore(deps): fix peer deps and use lodash-es --- examples/react/package.json | 2 +- internal/website/package.json | 2 +- packages/cli/package.json | 5 +- packages/cli/src/deps.ts | 2 +- packages/react/package.json | 3 +- packages/react/test/utils.ts | 2 +- pnpm-lock.yaml | 7416 +++++++++++++++++---------------- 7 files changed, 3818 insertions(+), 3614 deletions(-) diff --git a/examples/react/package.json b/examples/react/package.json index 5d568d638..aa92b6fa9 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -34,7 +34,7 @@ "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", "graphql-ez": "^0.16.0", - "graphql-upload": "^16.0.2", + "graphql-upload": "^13.0.0", "localforage": "^1.10.0", "lodash": "^4.17.21", "ms": "^3.0.0-canary.1", diff --git a/internal/website/package.json b/internal/website/package.json index ff1c9c5ea..0dfd979f3 100644 --- a/internal/website/package.json +++ b/internal/website/package.json @@ -31,7 +31,7 @@ "react-i18next": "^12.2.0", "react-icons": "^4.8.0", "react-use": "^17.4.0", - "shiki": "^0.12.1" + "shiki": "^0.10.1" }, "devDependencies": { "@next/bundle-analyzer": "^12.3.4", diff --git a/packages/cli/package.json b/packages/cli/package.json index aae21169b..7503840a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -50,8 +50,7 @@ "@graphql-tools/utils": "^9.2.0", "@graphql-tools/wrap": "^9.3.4", "@size-limit/preset-small-lib": "^8.2.4", - "@types/lodash": "^4.14.191", - "@types/lodash.sortby": "^4.7.7", + "@types/lodash-es": "^4.14.191", "@types/mkdirp": "^1.0.2", "@types/node": "^18.15.5", "bob-ts": "^4.1.1", @@ -62,7 +61,7 @@ "esbuild": "^0.17.12", "fast-glob": "^3.2.12", "graphql": "^16.6.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "mkdirp": "^2.1.5", "open-cli": "^7.2.0", "prettier": "^2.8.6", diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index c88a6f4db..e431f482c 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -8,7 +8,7 @@ export * as typescriptPlugin from '@graphql-codegen/typescript'; export { printSchemaWithDirectives } from '@graphql-tools/utils'; -export { default as sortBy } from 'lodash/sortBy.js'; +export { default as sortBy } from 'lodash-es/sortBy.js'; export { introspectSchema, wrapSchema } from '@graphql-tools/wrap'; diff --git a/packages/react/package.json b/packages/react/package.json index de305de36..c3d210c70 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -47,7 +47,7 @@ "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", "@types/jest": "^29.5.0", - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.6", "@types/node": "^18.15.5", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", @@ -57,6 +57,7 @@ "graphql": "^16.6.0", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", + "lodash-es": "^4.17.21", "react": "^17.0.2", "react-dom": "^17.0.2", "react-test-renderer": "^17.0.2", diff --git a/packages/react/test/utils.ts b/packages/react/test/utils.ts index 49ee2ed56..7b0b659a5 100644 --- a/packages/react/test/utils.ts +++ b/packages/react/test/utils.ts @@ -1,5 +1,5 @@ import '@testing-library/jest-dom/extend-expect'; -import { merge } from 'lodash'; +import { merge } from 'lodash-es'; import { createTestApp, gql } from 'test-utils'; import { generate } from '../../cli/src/generate'; import { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76b273da8..466085cfa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' overrides: trim@<0.0.3: '>=0.0.3' @@ -14,359 +14,513 @@ overrides: importers: .: - specifiers: - '@changesets/apply-release-plan': ^6.1.3 - '@changesets/assemble-release-plan': ^5.2.3 - '@changesets/cli': ^2.26.0 - '@changesets/config': ^2.3.0 - '@changesets/read': ^0.5.9 - '@manypkg/get-packages': ^1.1.3 - '@types/node': ^18.15.5 - bob-esbuild: ^4.0.3 - bob-esbuild-cli: ^4.0.0 - bob-ts: ^4.1.1 - bob-tsm: ^1.1.2 - bufferutil: ^4.0.7 - chalk: ^5.2.0 - changesets-github-release: ^0.1.0 - concurrently: ^7.6.0 - esbuild: ^0.17.12 - globby: ^13.1.3 - graphql: ^16.6.0 - husky: ^8.0.3 - jest: ^29.5.0 - open: ^8.4.2 - prettier: ^2.8.6 - pretty-quick: ^3.1.3 - rimraf: ^4.4.0 - semver: ^7.3.8 - ts-jest: ^29.0.5 - ts-node: ^10.9.1 - tslib: ^2.5.0 - typescript: ^4.9.5 - utf-8-validate: ^6.0.3 - wait-on: ^7.0.1 devDependencies: - '@changesets/apply-release-plan': 6.1.3 - '@changesets/assemble-release-plan': 5.2.3 - '@changesets/cli': 2.26.0 - '@changesets/config': 2.3.0 - '@changesets/read': 0.5.9 - '@manypkg/get-packages': 1.1.3 - '@types/node': 18.15.5 - bob-esbuild: 4.0.3_zofgjzmca2gwtey4x4go3tg4j4 - bob-esbuild-cli: 4.0.0_bob-esbuild@4.0.3 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - bufferutil: 4.0.7 - chalk: 5.2.0 - changesets-github-release: 0.1.0 - concurrently: 7.6.0 - esbuild: 0.17.12 - globby: 13.1.3 - graphql: 16.6.0 - husky: 8.0.3 - jest: 29.5.0_757mb262zsxkcnuknwfdsckmku - open: 8.4.2 - prettier: 2.8.6 - pretty-quick: 3.1.3_prettier@2.8.6 - rimraf: 4.4.0 - semver: 7.3.8 - ts-jest: 29.0.5_kxkw7io5lipdvgpiby7d7545le - ts-node: 10.9.1_345kigqis4fipgyy5xb3ndshmq - tslib: 2.5.0 - typescript: 4.9.5 - utf-8-validate: 6.0.3 - wait-on: 7.0.1 + '@changesets/apply-release-plan': + specifier: ^6.1.3 + version: 6.1.3 + '@changesets/assemble-release-plan': + specifier: ^5.2.3 + version: 5.2.3 + '@changesets/cli': + specifier: ^2.26.0 + version: 2.26.0 + '@changesets/config': + specifier: ^2.3.0 + version: 2.3.0 + '@changesets/read': + specifier: ^0.5.9 + version: 0.5.9 + '@manypkg/get-packages': + specifier: ^1.1.3 + version: 1.1.3 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + bob-esbuild: + specifier: ^4.0.3 + version: 4.0.3(esbuild@0.17.12)(typescript@4.9.5) + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + bob-ts: + specifier: ^4.1.1 + version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + bufferutil: + specifier: ^4.0.7 + version: 4.0.7 + chalk: + specifier: ^5.2.0 + version: 5.2.0 + changesets-github-release: + specifier: ^0.1.0 + version: 0.1.0 + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + globby: + specifier: ^13.1.3 + version: 13.1.3 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + open: + specifier: ^8.4.2 + version: 8.4.2 + prettier: + specifier: ^2.8.6 + version: 2.8.6 + pretty-quick: + specifier: ^3.1.3 + version: 3.1.3(prettier@2.8.6) + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + semver: + specifier: ^7.3.8 + version: 7.3.8 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + utf-8-validate: + specifier: ^6.0.3 + version: 6.0.3 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/ez: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-ez/plugin-altair': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-typed-document-node/core': ^3.2.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/randomstring': ^1.1.8 - bob-tsm: ^1.1.2 - esbuild: ^0.17.12 - fastify: ^4.11.0 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - jest: ^29.5.0 - lodash: ^4.17.21 - randomstring: ^1.2.3 - test-utils: workspace:^0.1.0 - typescript: ^4.9.5 - dependencies: - '@gqty/cli': link:../../packages/cli - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/fastify-testing': 0.4.0_zow4snlfvwzlxlnfckljwyv4aa - '@graphql-ez/plugin-altair': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 - fastify: 4.11.0 - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - lodash: 4.17.21 - randomstring: 1.2.3 - test-utils: link:../../internal/test-utils + dependencies: + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-altair': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@16.6.0) + fastify: + specifier: ^4.11.0 + version: 4.11.0 + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + randomstring: + specifier: ^1.2.3 + version: 1.2.3 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils devDependencies: - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/randomstring': 1.1.8 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - esbuild: 0.17.12 - jest: 29.5.0_@types+node@18.15.5 - typescript: 4.9.5 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/randomstring': + specifier: ^1.1.8 + version: 1.1.8 + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + typescript: + specifier: ^4.9.5 + version: 4.9.5 examples/ez-react-next: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@gqty/logger': workspace:^2.0.2 - '@gqty/react': workspace:^2.1.1 - '@graphql-ez/nextjs': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-graphiql': ^0.12.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - concurrently: ^7.6.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - next: ^12.3.4 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - typescript: ^4.9.5 - wait-on: ^7.0.1 - dependencies: - '@gqty/logger': link:../../packages/logger - '@gqty/react': link:../../packages/react - '@graphql-ez/nextjs': 0.11.0_c5xlb76vribzm5vdd4qmd4rlja - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-graphiql': 0.12.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + dependencies: + '@gqty/logger': + specifier: workspace:^2.0.2 + version: link:../../packages/logger/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + '@graphql-ez/nextjs': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-graphiql': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) devDependencies: - '@gqty/cli': link:../../packages/cli - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - concurrently: 7.6.0 - esbuild: 0.17.12 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/github: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@types/node': ^18.15.5 - dotenv: ^16.0.3 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - isomorphic-unfetch: ^4.0.2 - jest: ^29.5.0 - test-utils: workspace:^0.1.0 - typescript: ^4.9.5 - dependencies: - '@gqty/cli': link:../../packages/cli - dotenv: 16.0.3 - gqty: link:../../packages/gqty - test-utils: link:../../internal/test-utils + dependencies: + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + dotenv: + specifier: ^16.0.3 + version: 16.0.3 + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils devDependencies: - '@types/node': 18.15.5 - esbuild: 0.17.12 - isomorphic-unfetch: 4.0.2 - jest: 29.5.0_@types+node@18.15.5 - typescript: 4.9.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + isomorphic-unfetch: + specifier: ^4.0.2 + version: 4.0.2 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + typescript: + specifier: ^4.9.5 + version: 4.9.5 examples/react: - specifiers: - '@chakra-ui/react': ^1.8.9 - '@emotion/react': ^11.10.6 - '@emotion/styled': ^11.10.6 - '@faker-js/faker': ^7.6.0 - '@fastify/nextjs': ^9.2.0 - '@gqty/cli': workspace:^3.3.0 - '@gqty/logger': workspace:^2.0.2 - '@gqty/react': workspace:^2.1.1 - '@gqty/subscriptions': workspace:^2.0.1 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/plugin-altair': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-dataloader': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-ez/plugin-upload': ^0.8.0 - '@graphql-ez/plugin-websockets': ^0.11.0 - '@react-native-async-storage/async-storage': ^1.17.12 - '@types/extract-files': ^8.1.1 - '@types/graphql-upload': ^16.0.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-tsm: ^1.1.2 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - date-fns: ^2.29.3 - esbuild: ^0.17.12 - extract-files: 13.0.0 - fastify: ^4.11.0 - framer-motion: ^6.5.1 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - graphql-upload: ^16.0.2 - jest: ^29.5.0 - localforage: ^1.10.0 - lodash: ^4.17.21 - ms: ^3.0.0-canary.1 - next: ^12.3.4 - node-json-db: ^2.1.5 - open: ^8.4.2 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-error-boundary: ^3.1.4 - react-intersection-observer: ^9.4.3 - react-ssr-prepass: ^1.5.0 - react-use: ^17.4.0 - serialize-error: ^11.0.0 - typescript: ^4.9.5 - use-error-boundary: ^2.0.6 - wait-on: ^7.0.1 - dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@faker-js/faker': 7.6.0 - '@gqty/cli': link:../../packages/cli - '@gqty/logger': link:../../packages/logger - '@gqty/react': link:../../packages/react - '@gqty/subscriptions': link:../../packages/subscriptions - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/plugin-altair': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-dataloader': 0.8.0_4khj4v5e4vfkswp32g74ajok3i - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-upload': 0.8.0_kjoqpzaqt57iapo3yu2w2aeoce - '@graphql-ez/plugin-websockets': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@react-native-async-storage/async-storage': 1.17.12 - '@types/extract-files': 8.1.1 - date-fns: 2.29.3 - extract-files: 13.0.0 - fastify: 4.11.0 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-upload: 16.0.2_graphql@16.6.0 - localforage: 1.10.0 - lodash: 4.17.21 - ms: 3.0.0-canary.1 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - node-json-db: 2.1.5 - open: 8.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-error-boundary: 3.1.4_react@17.0.2 - react-intersection-observer: 9.4.3_react@17.0.2 - react-ssr-prepass: 1.5.0_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m - serialize-error: 11.0.0 - use-error-boundary: 2.0.6_sfoxds7t5ydpegc3knd667wn6m + dependencies: + '@chakra-ui/react': + specifier: ^1.8.9 + version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@emotion/react': + specifier: ^11.10.6 + version: 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@faker-js/faker': + specifier: ^7.6.0 + version: 7.6.0 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@gqty/logger': + specifier: workspace:^2.0.2 + version: link:../../packages/logger/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + '@gqty/subscriptions': + specifier: workspace:^2.0.1 + version: link:../../packages/subscriptions/dist + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-altair': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-dataloader': + specifier: ^0.8.0 + version: 0.8.0(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-upload': + specifier: ^0.8.0 + version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0) + '@graphql-ez/plugin-websockets': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + '@react-native-async-storage/async-storage': + specifier: ^1.17.12 + version: 1.17.12 + '@types/extract-files': + specifier: ^8.1.1 + version: 8.1.1 + date-fns: + specifier: ^2.29.3 + version: 2.29.3 + extract-files: + specifier: 13.0.0 + version: 13.0.0 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + framer-motion: + specifier: ^6.5.1 + version: 6.5.1(react-dom@17.0.2)(react@17.0.2) + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-upload: + specifier: ^13.0.0 + version: 13.0.0(graphql@16.6.0) + localforage: + specifier: ^1.10.0 + version: 1.10.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + ms: + specifier: ^3.0.0-canary.1 + version: 3.0.0-canary.1 + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + node-json-db: + specifier: ^2.1.5 + version: 2.1.5 + open: + specifier: ^8.4.2 + version: 8.4.2 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-error-boundary: + specifier: ^3.1.4 + version: 3.1.4(react@17.0.2) + react-intersection-observer: + specifier: ^9.4.3 + version: 9.4.3(react@17.0.2) + react-ssr-prepass: + specifier: ^1.5.0 + version: 1.5.0(react@17.0.2) + react-use: + specifier: ^17.4.0 + version: 17.4.0(react-dom@17.0.2)(react@17.0.2) + serialize-error: + specifier: ^11.0.0 + version: 11.0.0 + use-error-boundary: + specifier: ^2.0.6 + version: 2.0.6(react-dom@17.0.2)(react@17.0.2) devDependencies: - '@fastify/nextjs': 9.2.0_next@12.3.4 - '@types/graphql-upload': 16.0.0 - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - jest: 29.5.0_@types+node@18.15.5 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@fastify/nextjs': + specifier: ^9.2.0 + version: 9.2.0(next@12.3.4) + '@types/graphql-upload': + specifier: ^16.0.0 + version: 16.0.0 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/vite-example: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@gqty/react': workspace:^2.1.1 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - '@vitejs/plugin-react-refresh': ^1.3.6 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - react: ^17.0.2 - react-dom: ^17.0.2 - typescript: ^4.9.5 - vite: ^4.2.1 dependencies: - '@gqty/cli': link:../../packages/cli - '@gqty/react': link:../../packages/react - gqty: link:../../packages/gqty - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) devDependencies: - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - '@vitejs/plugin-react-refresh': 1.3.6 - esbuild: 0.17.12 - typescript: 4.9.5 - vite: 4.2.1_@types+node@18.15.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + '@vitejs/plugin-react-refresh': + specifier: ^1.3.6 + version: 1.3.6 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + vite: + specifier: ^4.2.1 + version: 4.2.1(@types/node@18.15.5) integration/graphql-17: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-typed-document-node/core': ^3.2.0 - '@types/node': ^18.15.5 - ava: ^5.2.0 - bob-tsm: ^1.1.2 - c8: ^7.13.0 - esbuild: ^0.17.12 - fastify: ^4.11.0 - gqty: workspace:^2.3.0 - graphql: 17.0.0-alpha.2 - graphql-ez: ^0.16.0 - typescript: ^4.9.5 devDependencies: - '@gqty/cli': file:packages/cli_graphql@17.0.0-alpha.2 - '@graphql-ez/fastify': 0.12.0_sjoruv57pci442joaaplrlyrfa - '@graphql-ez/fastify-testing': 0.4.0_ea5semnvare4dczwxuvgvhhrim - '@graphql-typed-document-node/core': 3.2.0_graphql@17.0.0-alpha.2 - '@types/node': 18.15.5 - ava: 5.2.0 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - c8: 7.13.0 - esbuild: 0.17.12 - fastify: 4.11.0 - gqty: file:packages/gqty_graphql@17.0.0-alpha.2 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm - typescript: 4.9.5 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: file:packages/cli/dist(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@17.0.0-alpha.2) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + ava: + specifier: ^5.2.0 + version: 5.2.0 + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + c8: + specifier: ^7.13.0 + version: 7.13.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + gqty: + specifier: workspace:^2.3.0 + version: file:packages/gqty/dist(graphql@17.0.0-alpha.2) + graphql: + specifier: 17.0.0-alpha.2 + version: 17.0.0-alpha.2 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + typescript: + specifier: ^4.9.5 + version: 4.9.5 dependenciesMeta: '@gqty/cli': injected: true @@ -374,401 +528,562 @@ importers: injected: true internal/test-utils: - specifiers: - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-ez/plugin-websockets': ^0.11.0 - '@jest/types': ^29.5.0 - '@rollup/plugin-babel': ^6.0.3 - '@types/jest': ^29.5.0 - '@types/node': ^18.15.5 - '@types/randomstring': ^1.1.8 - bob-esbuild-cli: ^4.0.0 - bob-ts: ^4.1.1 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - esbuild: ^0.17.12 - fastify: ^4.11.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - jest: ^29.5.0 - jest-watch-typeahead: ^2.2.2 - prettier: ^2.8.6 - randomstring: ^1.2.3 - ts-jest: ^29.0.5 - tslib: ^2.5.0 - typescript: ^4.9.5 - wait-for-expect: ^3.0.2 - dependencies: - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/fastify-testing': 0.4.0_gw55l7m33unpztkcavxnnvhm5q - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@rollup/plugin-babel': 6.0.3 - '@types/jest': 29.5.0 - cross-env: 7.0.3 - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - jest: 29.5.0_@types+node@18.15.5 - jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.6 - randomstring: 1.2.3 - ts-jest: 29.0.5_7zwficsud2wmcwakxus3xxpqke - wait-for-expect: 3.0.2 + dependencies: + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@rollup/plugin-babel': + specifier: ^6.0.3 + version: 6.0.3 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-watch-typeahead: + specifier: ^2.2.2 + version: 2.2.2(jest@29.5.0) + prettier: + specifier: ^2.8.6 + version: 2.8.6 + randomstring: + specifier: ^1.2.3 + version: 1.2.3 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + wait-for-expect: + specifier: ^3.0.2 + version: 3.0.2 devDependencies: - '@graphql-ez/plugin-websockets': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - '@types/randomstring': 1.1.8 - bob-esbuild-cli: 4.0.0 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - concurrently: 7.6.0 - esbuild: 0.17.12 - tslib: 2.5.0 - typescript: 4.9.5 + '@graphql-ez/plugin-websockets': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + '@jest/types': + specifier: ^29.5.0 + version: 29.5.0 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/randomstring': + specifier: ^1.1.8 + version: 1.1.8 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + bob-ts: + specifier: ^4.1.1 + version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 internal/website: - specifiers: - '@chakra-ui/icons': ^1.1.7 - '@chakra-ui/react': ^1.8.9 - '@chakra-ui/theme-tools': ^1.3.6 - '@chakra-ui/utils': ^1.10.4 - '@emotion/react': ^11.10.6 - '@emotion/styled': ^11.10.6 - '@guild-docs/client': 2.1.1 - '@guild-docs/server': 4.0.0 - '@mdx-js/react': ^2.3.0 - '@next/bundle-analyzer': ^12.3.4 - '@theguild/components': ^1.12.0 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-tsm: ^1.1.2 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - csstype: ^3.1.1 - esbuild: ^0.17.12 - framer-motion: ^6.5.1 - i18next: ^22.4.13 - next: ^12.3.4 - next-i18next: ^13.2.2 - next-remote-watch: ^2.0.0 - next-seo: ^5.15.0 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-i18next: ^12.2.0 - react-icons: ^4.8.0 - react-use: ^17.4.0 - shiki: ^0.12.1 - typescript: ^4.9.5 - wait-on: ^7.0.1 - dependencies: - '@chakra-ui/icons': 1.1.7_react@17.0.2 - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q - '@chakra-ui/theme-tools': 1.3.6 - '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@guild-docs/client': 2.1.1_i7yamdcqgfam5kgmi3p25dpzk4 - '@guild-docs/server': 4.0.0_vunfziydkmle7wbsgwsinw3tpa - '@mdx-js/react': 2.3.0_react@17.0.2 - '@theguild/components': 1.12.0_zsjcj4gvi24ks76nprapl4hsmq - csstype: 3.1.1 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m - i18next: 22.4.13 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy - next-seo: 5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-i18next: 12.2.0_ffdbohwx3htqpx4tpuhghjrmkq - react-icons: 4.8.0_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m - shiki: 0.12.1 + dependencies: + '@chakra-ui/icons': + specifier: ^1.1.7 + version: 1.1.7(react@17.0.2) + '@chakra-ui/react': + specifier: ^1.8.9 + version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/theme-tools': + specifier: ^1.3.6 + version: 1.3.6(@chakra-ui/system@1.12.1) + '@chakra-ui/utils': + specifier: ^1.10.4 + version: 1.10.4 + '@emotion/react': + specifier: ^11.10.6 + version: 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@guild-docs/client': + specifier: 2.1.1 + version: 2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1) + '@guild-docs/server': + specifier: 4.0.0 + version: 4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.10.1) + '@mdx-js/react': + specifier: ^2.3.0 + version: 2.3.0(react@17.0.2) + '@theguild/components': + specifier: ^1.12.0 + version: 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + csstype: + specifier: ^3.1.1 + version: 3.1.1 + framer-motion: + specifier: ^6.5.1 + version: 6.5.1(react-dom@17.0.2)(react@17.0.2) + i18next: + specifier: ^22.4.13 + version: 22.4.13 + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: + specifier: ^13.2.2 + version: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) + next-seo: + specifier: ^5.15.0 + version: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-i18next: + specifier: ^12.2.0 + version: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) + react-icons: + specifier: ^4.8.0 + version: 4.8.0(react@17.0.2) + react-use: + specifier: ^17.4.0 + version: 17.4.0(react-dom@17.0.2)(react@17.0.2) + shiki: + specifier: ^0.10.1 + version: 0.10.1 devDependencies: - '@next/bundle-analyzer': 12.3.4 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - next-remote-watch: 2.0.0_next@12.3.4 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@next/bundle-analyzer': + specifier: ^12.3.4 + version: 12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + next-remote-watch: + specifier: ^2.0.0 + version: 2.0.0(next@12.3.4) + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 packages/cli: - specifiers: - '@graphql-codegen/core': ^3.1.0 - '@graphql-codegen/typescript': ^3.0.2 - '@graphql-tools/delegate': ^9.0.25 - '@graphql-tools/utils': ^9.2.0 - '@graphql-tools/wrap': ^9.3.4 - '@size-limit/preset-small-lib': ^8.2.4 - '@types/lodash': ^4.14.191 - '@types/lodash.sortby': ^4.7.7 - '@types/mkdirp': ^1.0.2 - '@types/node': ^18.15.5 - bob-ts: ^4.1.1 - bob-tsm: ^1.1.2 - changesets-github-release: ^0.1.0 - commander: ^10.0.0 - cosmiconfig: ^8.1.3 - esbuild: ^0.17.12 - fast-glob: ^3.2.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - lodash: ^4.17.21 - mkdirp: ^2.1.5 - open-cli: ^7.2.0 - prettier: ^2.8.6 - rimraf: ^4.4.0 - serve: ^14.2.0 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tmp-promise: ^3.0.3 - tslib: ^2.5.0 - typescript: ^4.9.5 - undici: 5.7.0 - wait-on: ^7.0.1 dependencies: - gqty: link:../gqty - undici: 5.7.0 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + undici: + specifier: 5.7.0 + version: 5.7.0 devDependencies: - '@graphql-codegen/core': 3.1.0_graphql@16.6.0 - '@graphql-codegen/typescript': 3.0.2_graphql@16.6.0 - '@graphql-tools/delegate': 9.0.25_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - '@graphql-tools/wrap': 9.3.4_graphql@16.6.0 - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/lodash': 4.14.191 - '@types/lodash.sortby': 4.7.7 - '@types/mkdirp': 1.0.2 - '@types/node': 18.15.5 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - changesets-github-release: 0.1.0 - commander: 10.0.0 - cosmiconfig: 8.1.3 - esbuild: 0.17.12 - fast-glob: 3.2.12 - graphql: 16.6.0 - lodash: 4.17.21 - mkdirp: 2.1.5 - open-cli: 7.2.0 - prettier: 2.8.6 - rimraf: 4.4.0 - serve: 14.2.0 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tmp-promise: 3.0.3 - tslib: 2.5.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@graphql-codegen/core': + specifier: ^3.1.0 + version: 3.1.0(graphql@16.6.0) + '@graphql-codegen/typescript': + specifier: ^3.0.2 + version: 3.0.2(graphql@16.6.0) + '@graphql-tools/delegate': + specifier: ^9.0.25 + version: 9.0.28(graphql@16.6.0) + '@graphql-tools/utils': + specifier: ^9.2.0 + version: 9.2.1(graphql@16.6.0) + '@graphql-tools/wrap': + specifier: ^9.3.4 + version: 9.3.7(graphql@16.6.0) + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/lodash-es': + specifier: ^4.14.191 + version: 4.17.7 + '@types/mkdirp': + specifier: ^1.0.2 + version: 1.0.2 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + bob-ts: + specifier: ^4.1.1 + version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + changesets-github-release: + specifier: ^0.1.0 + version: 0.1.0 + commander: + specifier: ^10.0.0 + version: 10.0.0 + cosmiconfig: + specifier: ^8.1.3 + version: 8.1.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + mkdirp: + specifier: ^2.1.5 + version: 2.1.5 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + prettier: + specifier: ^2.8.6 + version: 2.8.6 + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + serve: + specifier: ^14.2.0 + version: 14.2.0 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tmp-promise: + specifier: ^3.0.3 + version: 3.0.3 + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 publishDirectory: dist packages/gqty: - specifiers: - '@gqty/utils': workspace:^1.0.0 - '@size-limit/preset-small-lib': ^8.2.4 - '@types/mkdirp': ^1.0.2 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - '@types/wait-on': ^5.3.1 - '@types/ws': ^8.5.4 - bob-esbuild-cli: ^4.0.0 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - esbuild: ^0.17.12 - graphql: ^16.6.0 - jest: ^29.5.0 - mkdirp: ^2.1.5 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - rimraf: ^4.4.0 - serve: ^14.2.0 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tsc-watch: ^6.0.0 - typescript: ^4.9.5 - wait-on: ^7.0.1 - ws: ^8.13.0 - dependencies: - '@gqty/utils': link:../utils + dependencies: + '@gqty/utils': + specifier: workspace:^1.0.0 + version: link:../utils/dist devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/mkdirp': 1.0.2 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - '@types/wait-on': 5.3.1 - '@types/ws': 8.5.4 - bob-esbuild-cli: 4.0.0 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - graphql: 16.6.0 - jest: 29.5.0_@types+node@18.15.5 - mkdirp: 2.1.5 - open-cli: 7.2.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - rimraf: 4.4.0 - serve: 14.2.0 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tsc-watch: 6.0.0_typescript@4.9.5 - typescript: 4.9.5 - wait-on: 7.0.1 - ws: 8.13.0 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/mkdirp': + specifier: ^1.0.2 + version: 1.0.2 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + '@types/wait-on': + specifier: ^5.3.1 + version: 5.3.1 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.4 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + mkdirp: + specifier: ^2.1.5 + version: 2.1.5 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + serve: + specifier: ^14.2.0 + version: 14.2.0 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tsc-watch: + specifier: ^6.0.0 + version: 6.0.0(typescript@4.9.5) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 + ws: + specifier: ^8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) publishDirectory: dist packages/logger: - specifiers: - '@size-limit/preset-small-lib': ^8.2.4 - '@types/node': ^18.15.5 - '@types/prettier': ^2.7.2 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - jest: ^29.5.0 - prettier: ^2.8.6 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 dependencies: - prettier: 2.8.6 + prettier: + specifier: ^2.8.6 + version: 2.8.6 devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/node': 18.15.5 - '@types/prettier': 2.7.2 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - jest: 29.5.0_@types+node@18.15.5 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/react: - specifiers: - '@size-limit/preset-small-lib': ^8.2.4 - '@testing-library/jest-dom': ^5.16.5 - '@testing-library/react': ^12.1.5 - '@testing-library/react-hooks': ^8.0.1 - '@types/jest': ^29.5.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-ssr-prepass: ^1.5.0 - react-test-renderer: ^17.0.2 - regenerator-runtime: ^0.13.11 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 - dependencies: - react-ssr-prepass: 1.5.0_react@17.0.2 + dependencies: + react-ssr-prepass: + specifier: ^1.5.0 + version: 1.5.0(react@17.0.2) devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m - '@testing-library/react-hooks': 8.0.1_x4rus6jnwzjq3zgm4bvjbdzauy - '@types/jest': 29.5.0 - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - graphql: 16.6.0 - jest: 29.5.0_@types+node@18.15.5 - jest-environment-jsdom: 29.5.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-test-renderer: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.11 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@testing-library/jest-dom': + specifier: ^5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: ^12.1.5 + version: 12.1.5(react-dom@17.0.2)(react@17.0.2) + '@testing-library/react-hooks': + specifier: ^8.0.1 + version: 8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2) + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.7 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-environment-jsdom: + specifier: ^29.5.0 + version: 29.5.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-test-renderer: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + regenerator-runtime: + specifier: ^0.13.11 + version: 0.13.11 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/subscriptions: - specifiers: - '@types/node': ^18.15.5 - '@types/ws': ^8.5.4 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - isomorphic-ws: ^5.0.0 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 - ws: ^8.13.0 - dependencies: - isomorphic-ws: 5.0.0_ws@8.13.0 - ws: 8.13.0 + dependencies: + isomorphic-ws: + specifier: ^5.0.0 + version: 5.0.0(ws@8.13.0) + ws: + specifier: ^8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) devDependencies: - '@types/node': 18.15.5 - '@types/ws': 8.5.4 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - graphql: 16.6.0 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.4 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/utils: - specifiers: - '@types/lodash-es': ^4.17.7 - '@types/sha1': 1.1.3 - lodash-es: ^4.17.21 - sha1: 1.1.1 devDependencies: - '@types/lodash-es': 4.17.7 - '@types/sha1': 1.1.3 - lodash-es: 4.17.21 - sha1: 1.1.1 + '@types/lodash-es': + specifier: ^4.17.7 + version: 4.17.7 + '@types/sha1': + specifier: 1.1.3 + version: 1.1.3 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + sha1: + specifier: 1.1.1 + version: 1.1.1 publishDirectory: dist packages: - /@adobe/css-tools/4.0.1: + /@adobe/css-tools@4.0.1: resolution: {integrity: sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==} dev: true - /@algolia/autocomplete-core/1.7.2: + /@algolia/autocomplete-core@1.7.2: resolution: {integrity: sha512-eclwUDC6qfApNnEfu1uWcL/rudQsn59tjEoUYZYE2JSXZrHLRjBUGMxiCoknobU2Pva8ejb0eRxpIYDtVVqdsw==} dependencies: '@algolia/autocomplete-shared': 1.7.2 dev: false - /@algolia/autocomplete-js/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-js@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-/x0r0510yEHtTt9+JIhWa9CIvS2s95n5eSyKrCXA6QF8DYKJV+LQpGCpHnO4gEHJFEe0itVdmws3DzOZrBGa9Q==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' @@ -777,7 +1092,7 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-preset-algolia': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 htm: 3.1.1 preact: 10.11.2 @@ -785,12 +1100,12 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-algolia-insights/1.7.2_nl7ecob7oenl7dfhoewptlc4ye: + /@algolia/autocomplete-plugin-algolia-insights@1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1): resolution: {integrity: sha512-dyWJ3Hpn0vGy+Lxd6BZYUupIPB/j7ZA4uzmQ+ThRQF3fjQMpDk4/zNi8/hf0r0Ow9tXOQ7ALKJtHbxWIT/f/Uw==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 search-insights: 2.2.1 transitivePeerDependencies: @@ -798,7 +1113,7 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-query-suggestions/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-plugin-query-suggestions@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-lM1B4tsJP+5ePHqXl4kuanmclu8uppmknNTTzWfinjuNRY2WrypwfqrBaCIztbZZYAfs7s0qeC/XXhA4PPSqoA==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' @@ -808,13 +1123,13 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 - '@algolia/autocomplete-preset-algolia': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-preset-algolia/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-preset-algolia@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-+RYEG6B0QiGGfRb2G3MtPfyrl0dALF3cQNTWBzBX6p5o01vCCGTTinAm2UKG3tfc2CnOMAtnPLkzNZyJUpnVJw==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' @@ -827,31 +1142,31 @@ packages: algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-shared/1.7.2: + /@algolia/autocomplete-shared@1.7.2: resolution: {integrity: sha512-QCckjiC7xXHIUaIL3ektBtjJ0w7tTA3iqKcAE/Hjn1lZ5omp7i3Y4e09rAr9ZybqirL7AbxCLLq0Ra5DDPKeug==} dev: false - /@algolia/autocomplete-theme-classic/1.7.2: + /@algolia/autocomplete-theme-classic@1.7.2: resolution: {integrity: sha512-bUoT4wdScyAY4oZrk3zcaGwSKYJ11MGXNFIckWWN/Bd9xqoFu8/09Ujyw5WyzYZidHrs8D3FSTJi6sfHz5g3/Q==} dev: false - /@algolia/cache-browser-local-storage/4.14.2: + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: '@algolia/cache-common': 4.14.2 dev: false - /@algolia/cache-common/4.14.2: + /@algolia/cache-common@4.14.2: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: false - /@algolia/cache-in-memory/4.14.2: + /@algolia/cache-in-memory@4.14.2: resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: '@algolia/cache-common': 4.14.2 dev: false - /@algolia/client-account/4.14.2: + /@algolia/client-account@4.14.2: resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} dependencies: '@algolia/client-common': 4.14.2 @@ -859,7 +1174,7 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-analytics/4.14.2: + /@algolia/client-analytics@4.14.2: resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} dependencies: '@algolia/client-common': 4.14.2 @@ -868,14 +1183,14 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-common/4.14.2: + /@algolia/client-common@4.14.2: resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} dependencies: '@algolia/requester-common': 4.14.2 '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-personalization/4.14.2: + /@algolia/client-personalization@4.14.2: resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: '@algolia/client-common': 4.14.2 @@ -883,7 +1198,7 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-search/4.14.2: + /@algolia/client-search@4.14.2: resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} dependencies: '@algolia/client-common': 4.14.2 @@ -891,37 +1206,37 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/events/4.0.1: + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common/4.14.2: + /@algolia/logger-common@4.14.2: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: false - /@algolia/logger-console/4.14.2: + /@algolia/logger-console@4.14.2: resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: '@algolia/logger-common': 4.14.2 dev: false - /@algolia/requester-browser-xhr/4.14.2: + /@algolia/requester-browser-xhr@4.14.2: resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} dependencies: '@algolia/requester-common': 4.14.2 dev: false - /@algolia/requester-common/4.14.2: + /@algolia/requester-common@4.14.2: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: false - /@algolia/requester-node-http/4.14.2: + /@algolia/requester-node-http@4.14.2: resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: '@algolia/requester-common': 4.14.2 dev: false - /@algolia/transporter/4.14.2: + /@algolia/transporter@4.14.2: resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} dependencies: '@algolia/cache-common': 4.14.2 @@ -929,26 +1244,26 @@ packages: '@algolia/requester-common': 4.14.2 dev: false - /@ampproject/remapping/2.2.0: + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 - /@ardatan/relay-compiler/12.0.0_graphql@16.6.0: + /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true peerDependencies: graphql: '*' dependencies: - '@babel/core': 7.19.6 - '@babel/generator': 7.20.1 - '@babel/parser': 7.20.1 - '@babel/runtime': 7.20.13 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 - babel-preset-fbjs: 3.4.0_@babel+core@7.19.6 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/parser': 7.21.2 + '@babel/runtime': 7.21.0 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) chalk: 4.1.2 fb-watchman: 2.0.2 fbjs: 3.0.4 @@ -964,36 +1279,40 @@ packages: - encoding - supports-color - /@babel/code-frame/7.16.7: + /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.1: + /@babel/compat-data@7.20.1: resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} engines: {node: '>=6.9.0'} - /@babel/core/7.19.6: + /@babel/compat-data@7.21.0: + resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.19.6: resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.1 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) '@babel/helper-module-transforms': 7.19.6 '@babel/helpers': 7.20.1 '@babel/parser': 7.20.1 '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 + '@babel/traverse': 7.21.2 '@babel/types': 7.20.0 convert-source-map: 1.9.0 debug: 4.3.4 @@ -1003,21 +1322,44 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.20.1: - resolution: {integrity: sha512-u1dMdBUmA7Z0rBB97xh8pIhviK7oItYOkjbsCxTWMknyvbQRBwX7/gn4JXurRdirWMFh+ZtYARqkA6ydogVZpg==} + /@babel/core@7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.19.6: + /@babel/helper-compilation-targets@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1032,8 +1374,8 @@ packages: browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.6: - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} + /@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1041,47 +1383,64 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.0 + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-member-expression-to-functions/7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} + /@babel/helper-member-expression-to-functions@7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-module-transforms/7.19.6: + /@babel/helper-module-transforms@7.19.6: resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} engines: {node: '>=6.9.0'} dependencies: @@ -1091,74 +1450,110 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 + '@babel/traverse': 7.21.2 '@babel/types': 7.20.0 transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-module-transforms@7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-plugin-utils/7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} + /@babel/helper-plugin-utils@7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers/7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} + /@babel/helper-replace-supers@7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.19.4: + /@babel/helper-simple-access@7.19.4: resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + /@babel/helper-simple-access@7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.20.1: + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + + /@babel/helpers@7.20.1: resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 + '@babel/traverse': 7.21.2 '@babel/types': 7.20.0 transitivePeerDependencies: - supports-color - /@babel/highlight/7.18.6: + /@babel/helpers@7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -1166,14 +1561,21 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.1: + /@babel/parser@7.20.1: resolution: {integrity: sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.20.0 - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.6: + /@babel/parser@7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1182,14 +1584,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-object-rest-spread/7.19.4_@babel+core@7.19.6: - resolution: {integrity: sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==} + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1197,14 +1599,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/compat-data': 7.20.1 - '@babel/core': 7.19.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-transform-parameters': 7.20.1_@babel+core@7.19.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.6: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.6): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1213,9 +1615,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1224,9 +1626,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.6: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.6): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1235,9 +1637,20 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.6: + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1246,10 +1659,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1258,9 +1671,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1269,9 +1682,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1281,9 +1694,21 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1292,9 +1717,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1303,9 +1728,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1314,9 +1739,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1325,9 +1750,20 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1336,9 +1772,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1347,9 +1783,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.6: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.19.6): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1359,9 +1795,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.19.6: + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1371,9 +1807,9 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1382,10 +1818,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1394,11 +1830,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-block-scoping/7.20.0_@babel+core@7.19.6: - resolution: {integrity: sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==} + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1406,11 +1842,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.6: - resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1418,20 +1854,20 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1440,11 +1876,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-destructuring/7.20.0_@babel+core@7.19.6: - resolution: {integrity: sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==} + /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1452,10 +1888,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.21.0): resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1464,11 +1900,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.6: + /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.0): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1477,10 +1913,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1489,12 +1925,12 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1503,10 +1939,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1515,10 +1951,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.19.6: + /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.21.0): resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1527,14 +1963,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.19.4 + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1543,14 +1979,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters/7.20.1_@babel+core@7.19.6: - resolution: {integrity: sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==} + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1558,10 +1994,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1570,10 +2006,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1582,10 +2018,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1594,11 +2030,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.0): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1607,11 +2043,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.0): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1620,14 +2056,14 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/types': 7.20.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/types': 7.21.2 - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1636,10 +2072,10 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.0): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1648,11 +2084,11 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1661,29 +2097,22 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - - /@babel/runtime/7.20.1: - resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + /@babel/runtime@7.20.6: + resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime/7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - dev: true - /@babel/template/7.18.10: + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: @@ -1691,24 +2120,32 @@ packages: '@babel/parser': 7.20.1 '@babel/types': 7.20.0 - /@babel/traverse/7.20.1: - resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} + /@babel/template@7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + + /@babel/traverse@7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.1 + '@babel/generator': 7.21.1 '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types/7.20.0: + /@babel/types@7.20.0: resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==} engines: {node: '>=6.9.0'} dependencies: @@ -1716,14 +2153,22 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@babel/types@7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@braintree/sanitize-url/6.0.1: + /@braintree/sanitize-url@6.0.1: resolution: {integrity: sha512-zr9Qs9KFQiEvMWdZesjcmRJlUck5NR+eKGS1uyKk+oYTWwlYrsoPEi6VmG6/TzBD1hKCGEimrhTgGS6hvn/xIQ==} dev: false - /@chakra-ui/accordion/1.4.12_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/accordion@1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-Hq5Ie1SI4mmtgBmeuir+f7QKgopZEyQOojgufo/A20keMSy5Yk9WZjkXNQgvoIRl1AsoziIPUlubQOtkBZjjbA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1733,18 +2178,18 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/alert/1.3.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/alert@1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-fFpJYBpHOIK/BX4BVl/xafYiDBUW+Bq/gUYDOo4iAiO4vHgxo74oa+yOwSRNlNjAgIX7pi2ridsYQALKyWyxxQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1753,14 +2198,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/anatomy/1.3.0_@chakra-ui+system@1.12.1: + /@chakra-ui/anatomy@1.3.0(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-vj/lcHkCuq/dtbl69DkNsftZTnrGEegB90ODs1B6rxw8iVMdDSYkthPPFAkqzNs4ppv1y2IBjELuVzpeta1OHA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1768,11 +2213,11 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false - /@chakra-ui/avatar/1.3.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1781,14 +2226,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/image': 1.1.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/image': 1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/breadcrumb/1.3.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/breadcrumb@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-iXxienBO6RUnJEcDvyDWyRt+mzPyl7/b6N8i0vrjGKGLpgtayJFvIdo33tFcvx6TCy7V9hiE3HTtZnNomWdR6A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1797,13 +2242,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/button/1.5.10_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/button@1.5.10(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-IVEOrleI378CckAa3b3CTUHMPZRfpy6LPwn1Mx3sMpHEkDTKu8zJcjgEvCE8HYzNC1KbwBsa1PfTgk40ui6EtA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1812,15 +2257,15 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/spinner': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/spinner': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/checkbox/1.7.1_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/checkbox@1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-9Io97yn8OrdaIynCj+3Z/neJV7lTT1MtcdYh3BKMd7WnoJDkRY/GlBM8zsdgC5Wvm+ZQ1M83t0YvRPKLLzusyA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1830,27 +2275,27 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/clickable/1.2.6_react@17.0.2: + /@chakra-ui/clickable@1.2.6(react@17.0.2): resolution: {integrity: sha512-89SsrQwwwAadcl/bN8nZqqaaVhVNFdBXqQnxVy1t07DL5ezubmNb5SgFh9LDznkm9YYPQhaGr3W6HFro7iAHMg==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/close-button/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/close-button@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-cYTxfgrIlPU4IZm1sehZXxx/TNQBk9c3LBPvTpywEM8GVRGINh4YLq8WiMaPtO+TDNBnKoWS/jS4IHnR+abADw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1859,24 +2304,24 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/color-mode/1.4.8_react@17.0.2: + /@chakra-ui/color-mode@1.4.8(react@17.0.2): resolution: {integrity: sha512-iD4126DVQi06c6ARr3uf3R2rtEu8aBVjW8rhZ+lOsV26Z15iCJA7OAut13Xu06fcZvgjSB/ChDy6Sx9sV9UjHA==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-env': 1.1.6_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/control-box/1.1.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1885,41 +2330,41 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/counter/1.2.10_react@17.0.2: + /@chakra-ui/counter@1.2.10(react@17.0.2): resolution: {integrity: sha512-HQd09IuJ4z8M8vWajH+99jBWWSHDesQZmnN95jUg3HKOuNleLaipf2JFdrqbO1uWQyHobn2PM6u+B+JCAh2nig==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/css-reset/1.1.3_lppulqnmkkrmfes7eqrbphxjnm: + /@chakra-ui/css-reset@1.1.3(@emotion/react@11.10.6)(react@17.0.2): resolution: {integrity: sha512-AgfrE7bRTJvNi/4zIfacI/kBHmHmHEIeQtHwCvk/0qM9V2gK1VM3ctYlnibf7BTh17F/UszweOGRb1lHSPfWjw==} peerDependencies: '@emotion/react': '>=10.0.35' react: '>=16.8.6' dependencies: - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/descendant/2.1.4_react@17.0.2: + /@chakra-ui/descendant@2.1.4(react@17.0.2): resolution: {integrity: sha512-k1olHM6c0fcI5fQxO9rqg9rxripcfHMEm2LkORgH0CAzFn/U75CxCw5ec0IMedNWCdiv740enVfnfhBAoSg7gw==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/editable/1.4.2_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/editable@1.4.2(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-a5zKghA/IvG7yNkmFl7Z9c2KSsf0FgyijsNPTg/4S5jxyz13QJtoTg40tdpyaxHHCT25y25iUcV4FYCj6Jd01w==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1928,26 +2373,26 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/focus-lock/1.2.6_h7fc2el62uaa77gho3xhys6ola: + /@chakra-ui/focus-lock@1.2.6(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-ZJNE1oNdUM1aGWuCJ+bxFa/d3EwxzfMWzTKzSvKDK50GWoUQQ10xFTT9nY/yFpkcwhBvx1KavxKf44mIhIbSog==} peerDependencies: react: '>=16.8.6' dependencies: '@chakra-ui/utils': 1.10.4 react: 17.0.2 - react-focus-lock: 2.5.2_h7fc2el62uaa77gho3xhys6ola + react-focus-lock: 2.5.2(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/form-control/1.6.0_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/form-control@1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-MtUE98aocP2QTgvyyJ/ABuG33mhT3Ox56phKreG3HzbUKByMwrbQSm1QcAgyYdqSZ9eKB2tXx+qgGNh+avAfDA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1956,41 +2401,27 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/hooks/1.9.1_react@17.0.2: + /@chakra-ui/hooks@1.9.1(react@17.0.2): resolution: {integrity: sha512-SEeh1alDKzrP9gMLWMnXOUDBQDKF/URL6iTmkumTn6vhawWNla6sPrcMyoCzWdMzwUhZp3QNtCKbUm7dxBXvPw==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 compute-scroll-into-view: 1.0.14 copy-to-clipboard: 3.3.1 react: 17.0.2 dev: false - /@chakra-ui/icon/2.0.5_5qblqjf622vzzkdskgddihcrca: - resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true - dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/utils': 1.10.4 - react: 17.0.2 - dev: false - - /@chakra-ui/icon/2.0.5_react@17.0.2: + /@chakra-ui/icon@2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1999,11 +2430,12 @@ packages: '@chakra-ui/system': optional: true dependencies: + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/icons/1.1.7_react@17.0.2: + /@chakra-ui/icons@1.1.7(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2012,12 +2444,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_react@17.0.2 + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false - /@chakra-ui/image/1.1.10_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/image@1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-PJZmhQ/R1PgdMyCRjALfoyq1FNh/WzMAw70sliHLtLcb9hBXniwQZuckYfUshCkUoFBj/ow9d4byn9Culdpk7Q==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2026,13 +2458,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/input/1.4.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/input@1.4.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Ljy/NbOhh9cNQxKTWQRsT4aQiXs2vVya+Cj5NpMAz08NFFjPZovsTawhI7m6ejT5Vsh76QYjh2rOLLI3fWqQQw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2041,14 +2473,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/layout/1.8.0_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/layout@1.8.0(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-GJtEKez5AZu0XQTxI6a6jwA/hMDD36pP0HBxBOGuHP1hWCebDzMjraiMfWiP9w7hKERFE4j19kocHxIXyocfJA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2057,14 +2489,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/live-region/1.1.6_react@17.0.2: + /@chakra-ui/live-region@1.1.6(react@17.0.2): resolution: {integrity: sha512-9gPQHXf7oW0jXyT5R/JzyDMfJ3hF70TqhN8bRH4fMyfNr2Se+SjztMBqCrv5FS5rPjcCeua+e0eArpoB3ROuWQ==} peerDependencies: react: '>=16.8.6' @@ -2073,7 +2505,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/media-query/2.0.4_sxr25aaor3bltw4csjjk62xw3q: + /@chakra-ui/media-query@2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2): resolution: {integrity: sha512-kn6g/L0IFFUHz2v4yiCsBnhg9jUeA7525Z+AWl+BPtvryi7i9J+AJ27y/QAge7vUGy4dwDeFyxOZTs2oZ9/BsA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2083,14 +2515,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/menu/1.8.12_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/menu@1.8.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-X/s74VpOReQW4fCRCa21f/VOe++cXhPz2Sh7pDjtaT3zmKjrJwgk1Kw75cXfNX1eke6hf/wZ0FGweu/m7+C3OA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2100,19 +2532,19 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/clickable': 1.2.6_react@17.0.2 - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/clickable': 1.2.6(react@17.0.2) + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/modal/1.11.1_znojjvmuimc52wc6sir6sqg4da: + /@chakra-ui/modal@1.11.1(@chakra-ui/system@1.12.1)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-B2BBDonHb04vbPLAWgko1JYBwgW8ZNSLyhTJK+rbrCsRSgazuLTcwq4hdyJqrYNWtaQEfSwpAXqJ7joMZdv59A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2123,24 +2555,24 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/focus-lock': 1.2.6_h7fc2el62uaa77gho3xhys6ola - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/focus-lock': 1.2.6(@types/react@17.0.53)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - aria-hidden: 1.2.1_h7fc2el62uaa77gho3xhys6ola - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + aria-hidden: 1.2.1(@types/react@17.0.53)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-remove-scroll: 2.4.1_h7fc2el62uaa77gho3xhys6ola + react-dom: 17.0.2(react@17.0.2) + react-remove-scroll: 2.4.1(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/number-input/1.4.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/number-input@1.4.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-LorGRZFMipom8vCUEbLi2s7bTHF2Fgiu766W0jTbzMje+8Z1ZoRQunH9OZWQnxnWQTUfUM2KBW8KwToYh1ojfQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2149,17 +2581,17 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/counter': 1.2.10_react@17.0.2 - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/counter': 1.2.10(react@17.0.2) + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/pin-input/1.7.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2168,15 +2600,15 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/popover/1.11.9_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/popover@1.11.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-hJ1/Lwukox3ryTN7W1wnj+nE44utfLwQYvfUSdatt5dznnh8k0P6Wx7Hmjm1cYffRavBhqzwua/QZDWjJN9N0g==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2186,40 +2618,40 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/popper/2.4.3_react@17.0.2: + /@chakra-ui/popper@2.4.3(react@17.0.2): resolution: {integrity: sha512-TGzFnYt3mtIVkIejtYIAu4Ka9DaYLzMR4NgcqI6EtaTvgK7Xep+6RTiY/Nq+ZT3l/eaNUwqHRFoNrDUg1XYasA==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@popperjs/core': 2.11.6 react: 17.0.2 dev: false - /@chakra-ui/portal/1.3.10_sfoxds7t5ydpegc3knd667wn6m: + /@chakra-ui/portal@1.3.10(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-t2KQ6MXbyf1qFYxWw/bs//CnwD+Clq7mbsP1Y7g+THCz2FvlLlMj45BWocLB30NoNyA8WCS2zyMBszW2/qvDiA==} peerDependencies: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/progress/1.2.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/progress@1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-thaHRIYTVktgV78vJMNwzfCX+ickhSpn2bun6FtGVUphFx4tjV+ggz+IGohm6AH2hapskoR1mQU2iNZb6BK0hQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2228,13 +2660,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/provider/1.7.14_6dvm3afkgzqn7vmqvog4mojbze: + /@chakra-ui/provider@1.7.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-FCA33CZy/jFzExglKMioeri8sr9NtDTcNVPnx95ZJiA7WpfFo0xuZ6/fMC4DwIQPkJKbSIZBXYLZ3U10Ntylrw==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2242,19 +2674,19 @@ packages: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/css-reset': 1.1.3_lppulqnmkkrmfes7eqrbphxjnm - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/css-reset': 1.1.3(@emotion/react@11.10.6)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/radio/1.5.1_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/radio@1.5.1(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-zO5eShz+j68A7935jJ2q5u3brX/bjPEGh9Pj2+bnKbmC9Vva6jEzBSJsAx9n4WbkAzR3xDMGWsbpivFp8X1tJw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2263,16 +2695,16 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/react-env/1.1.6_react@17.0.2: + /@chakra-ui/react-env@1.1.6(react@17.0.2): resolution: {integrity: sha512-L90LNvCfe04FTkN9OPok/o2e60zLJNBH8Im/5dUHvqy7dXLXok8ZDad5vEL46XmGbhe7O8fbxhG6FmAYdcCHrQ==} peerDependencies: react: '>=16.8.6' @@ -2281,7 +2713,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-utils/1.2.3_react@17.0.2: + /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: react: '>=16.8.6' @@ -2290,7 +2722,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react/1.8.9_pizuovw4rxklnfeqfejc6mp34q: + /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2299,63 +2731,63 @@ packages: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/accordion': 1.4.12_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/alert': 1.3.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/avatar': 1.3.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/breadcrumb': 1.3.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/button': 1.5.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/checkbox': 1.7.1_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/control-box': 1.1.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/counter': 1.2.10_react@17.0.2 - '@chakra-ui/css-reset': 1.1.3_lppulqnmkkrmfes7eqrbphxjnm - '@chakra-ui/editable': 1.4.2_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/image': 1.1.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/input': 1.4.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/layout': 1.8.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/live-region': 1.1.6_react@17.0.2 - '@chakra-ui/media-query': 2.0.4_sxr25aaor3bltw4csjjk62xw3q - '@chakra-ui/menu': 1.8.12_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/modal': 1.11.1_znojjvmuimc52wc6sir6sqg4da - '@chakra-ui/number-input': 1.4.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/pin-input': 1.7.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/popover': 1.11.9_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/progress': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/provider': 1.7.14_6dvm3afkgzqn7vmqvog4mojbze - '@chakra-ui/radio': 1.5.1_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/select': 1.2.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/skeleton': 1.2.14_glnyuheil4qa4aagin4jhz34ei - '@chakra-ui/slider': 1.5.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/spinner': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/stat': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/switch': 1.3.10_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/table': 1.3.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/tabs': 1.6.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/tag': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/textarea': 1.2.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 - '@chakra-ui/toast': 1.5.9_zbxngkwtndcajnqyumwskenfdm - '@chakra-ui/tooltip': 1.5.1_zbxngkwtndcajnqyumwskenfdm - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/accordion': 1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/alert': 1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/avatar': 1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/breadcrumb': 1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/button': 1.5.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/checkbox': 1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/control-box': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/counter': 1.2.10(react@17.0.2) + '@chakra-ui/css-reset': 1.1.3(@emotion/react@11.10.6)(react@17.0.2) + '@chakra-ui/editable': 1.4.2(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/image': 1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/input': 1.4.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/layout': 1.8.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/live-region': 1.1.6(react@17.0.2) + '@chakra-ui/media-query': 2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2) + '@chakra-ui/menu': 1.8.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/modal': 1.11.1(@chakra-ui/system@1.12.1)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/number-input': 1.4.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/pin-input': 1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/popover': 1.11.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/progress': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/provider': 1.7.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/radio': 1.5.1(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/select': 1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/skeleton': 1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/slider': 1.5.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/spinner': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/stat': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/switch': 1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/table': 1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/tabs': 1.6.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/tag': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/textarea': 1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) + '@chakra-ui/toast': 1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/tooltip': 1.5.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/select/1.2.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/select@1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-6Tis1+ZrRjQeWhQfziQn3ZdPphV5ccafpZOhiPdTcM2J1XcXOlII+9rHxvaW+jx7zQ5ly5o8kd7iXzalDgl5wA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2364,13 +2796,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/skeleton/1.2.14_glnyuheil4qa4aagin4jhz34ei: + /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: '@chakra-ui/theme': '>=1.0.0' @@ -2378,17 +2810,17 @@ packages: '@emotion/styled': ^11.0.0 react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/media-query': 2.0.4_sxr25aaor3bltw4csjjk62xw3q - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/media-query': 2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/slider/1.5.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/slider@1.5.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-THkGU2BsA6XMosXcEVQkWVRftqUIAKCb+y4iEpR3C2ztqL7Fl/CbIGwyr5majhPhKc275rb8dfxwp8R0L0ZIiQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2397,14 +2829,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/spinner/1.2.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/spinner@1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-GoUCccN120fGRVgUtfuwcEjeoaxffB+XsgpxX7jhWloXf8b6lkqm68bsxX4Ybb2vGN1fANI98/45JmrnddZO/A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2413,13 +2845,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/stat/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/stat@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-m76jumFW1N+mCG4ytrUz9Mh09nZtS4OQcADEvOslfdI5StwwuzasTA1tueaelPzdhBioMwFUWL05Fr1fXbPJ/Q==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2428,21 +2860,21 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/styled-system/1.19.0: + /@chakra-ui/styled-system@1.19.0: resolution: {integrity: sha512-z+bMfWs6jQGkpgarge1kmk78DuDhJIXRUMyRqZ3+CiIkze88bIIsww6mV2i8tEfUfTAvALeMnlYZ1DYsHsTTJw==} dependencies: '@chakra-ui/utils': 1.10.4 csstype: 3.0.9 dev: false - /@chakra-ui/switch/1.3.10_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2452,31 +2884,31 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/checkbox': 1.7.1_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/checkbox': 1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/system/1.12.1_zc6uy6i6ttehedii47aio4ko3u: + /@chakra-ui/system@1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-Rp09/rMuPA3hF38OJxeQciGO9N0Ie1GxwHRAw1AFA/TY3fVyK9pNI5oN+J/1cAxq7v9yKdIr1YfnruJTI9xfEg==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 react: '>=16.8.6' dependencies: - '@chakra-ui/color-mode': 1.4.8_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/color-mode': 1.4.8(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/styled-system': 1.19.0 '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 react-fast-compare: 3.2.0 dev: false - /@chakra-ui/table/1.3.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2485,12 +2917,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/tabs/1.6.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/tabs@1.6.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-hGs2REEVVWyfgs+qEkPiUsNnqwv3QwXfKYyXaMnGS7CCkGgUiEvIO7n9968/KGnGbM4GuEHX+BxG2suIUf24yg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2499,16 +2931,16 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/clickable': 1.2.6_react@17.0.2 - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/clickable': 1.2.6(react@17.0.2) + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/tag/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/tag@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-RKrKOol4i/CnpFfo3T9LMm1abaqM+5Bs0soQLbo1iJBbBACY09sWXrQYvveQ2GYzU/OrAUloHqqmKjyVGOlNtg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2517,13 +2949,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/textarea/1.2.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/textarea@1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-RDWbMyC87/AFRX98EnVum5eig/7hhcvS1BrqW5lvmTgrpr7KVr80Dfa8hUj58Iq37Z7AqZijDPkBn/zg7bPdIg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2532,25 +2964,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/theme-tools/1.3.6: - resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true - dependencies: - '@chakra-ui/utils': 1.10.4 - '@ctrl/tinycolor': 3.4.1 - dev: false - - /@chakra-ui/theme-tools/1.3.6_@chakra-ui+system@1.12.1: + /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2558,12 +2978,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@ctrl/tinycolor': 3.4.1 dev: false - /@chakra-ui/theme/1.14.1_@chakra-ui+system@1.12.1: + /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2571,13 +2991,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/anatomy': 1.3.0_@chakra-ui+system@1.12.1 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/anatomy': 1.3.0(@chakra-ui/system@1.12.1) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 dev: false - /@chakra-ui/toast/1.5.9_zbxngkwtndcajnqyumwskenfdm: + /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2588,20 +3008,20 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/alert': 1.3.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/alert': 1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@reach/alert': 0.13.2_sfoxds7t5ydpegc3knd667wn6m - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@reach/alert': 0.13.2(react-dom@17.0.2)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/tooltip/1.5.1_zbxngkwtndcajnqyumwskenfdm: + /@chakra-ui/tooltip@1.5.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-EUAlDdlCBt63VpEVtj/RkFjHQVN/xA9gEAumngQdi1Sp+OXPYCBM9GwSY0NwrM1RfKBnhPSH9wz7FwredJWeaw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2612,30 +3032,30 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/transition/1.4.8_4bcqv2kvtjx6raziruhdnbn2uq: + /@chakra-ui/transition@1.4.8(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-5uc8LEuCH7+0h++wqAav/EktTHOjbLDSTXQlU9fzPIlNNgyf2eXrHVN2AGMGKiMR9Z4gS7umQjZ54r0w/mZ/Fw==} peerDependencies: framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' dependencies: '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/utils/1.10.4: + /@chakra-ui/utils@1.10.4: resolution: {integrity: sha512-AM91VQQxw8F4F1WDA28mqKY6NFIOuzc2Ekkna88imy2OiqqmYH0xkq8J16L2qj4cLiLozpYqba3C79pWioy6FA==} dependencies: '@types/lodash.mergewith': 4.6.6 @@ -2644,7 +3064,7 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/visually-hidden/1.1.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2653,12 +3073,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@changesets/apply-release-plan/6.1.3: + /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: '@babel/runtime': 7.20.6 @@ -2676,7 +3096,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/assemble-release-plan/5.2.3: + /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: '@babel/runtime': 7.20.6 @@ -2687,13 +3107,13 @@ packages: semver: 5.7.1 dev: true - /@changesets/changelog-git/0.1.14: + /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 dev: true - /@changesets/cli/2.26.0: + /@changesets/cli@2.26.0: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: @@ -2732,7 +3152,7 @@ packages: tty-table: 4.1.6 dev: true - /@changesets/config/2.3.0: + /@changesets/config@2.3.0: resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 @@ -2744,13 +3164,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors/0.1.4: + /@changesets/errors@0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.5: + /@changesets/get-dependents-graph@1.3.5: resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 @@ -2760,10 +3180,10 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-release-plan/3.0.16: + /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -2772,14 +3192,14 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type/0.3.2: + /@changesets/get-version-range-type@0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git/2.0.0: + /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -2788,30 +3208,30 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger/0.0.5: + /@changesets/logger@0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse/0.3.16: + /@changesets/parse@0.3.16: resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 dev: true - /@changesets/pre/1.0.14: + /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 dev: true - /@changesets/read/0.5.9: + /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: '@babel/runtime': 7.20.6 @@ -2824,41 +3244,40 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types/4.1.0: + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types/5.2.1: + /@changesets/types@5.2.1: resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} dev: true - /@changesets/write/0.2.3: + /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.6 dev: true - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@ctrl/tinycolor/3.4.1: + /@ctrl/tinycolor@3.4.1: resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} engines: {node: '>=10'} dev: false - /@emotion/babel-plugin/11.10.6: + /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -2870,7 +3289,7 @@ packages: stylis: 4.1.3 dev: false - /@emotion/cache/11.10.5: + /@emotion/cache@11.10.5: resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: '@emotion/memoize': 0.8.0 @@ -2880,11 +3299,11 @@ packages: stylis: 4.1.3 dev: false - /@emotion/hash/0.9.0: + /@emotion/hash@0.9.0: resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} dev: false - /@emotion/is-prop-valid/0.8.8: + /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true dependencies: @@ -2892,22 +3311,22 @@ packages: dev: false optional: true - /@emotion/is-prop-valid/1.2.0: + /@emotion/is-prop-valid@1.2.0: resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: '@emotion/memoize': 0.8.0 dev: false - /@emotion/memoize/0.7.4: + /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false optional: true - /@emotion/memoize/0.8.0: + /@emotion/memoize@0.8.0: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.6_h7fc2el62uaa77gho3xhys6ola: + /@emotion/react@11.10.6(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2916,11 +3335,11 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@17.0.2) '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 '@types/react': 17.0.53 @@ -2928,7 +3347,7 @@ packages: react: 17.0.2 dev: false - /@emotion/serialize/1.1.1: + /@emotion/serialize@1.1.1: resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: '@emotion/hash': 0.9.0 @@ -2938,11 +3357,11 @@ packages: csstype: 3.1.1 dev: false - /@emotion/sheet/1.2.1: + /@emotion/sheet@1.2.1: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi: + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2952,22 +3371,22 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@17.0.2) '@emotion/utils': 1.2.0 '@types/react': 17.0.53 react: 17.0.2 dev: false - /@emotion/unitless/0.8.0: + /@emotion/unitless@0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} dev: false - /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@17.0.2: + /@emotion/use-insertion-effect-with-fallbacks@1.0.0(react@17.0.2): resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} peerDependencies: react: '>=16.8.0' @@ -2975,21 +3394,21 @@ packages: react: 17.0.2 dev: false - /@emotion/utils/1.2.0: + /@emotion/utils@1.2.0: resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} dev: false - /@emotion/weak-memoize/0.3.0: + /@emotion/weak-memoize@0.3.0: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@envelop/core/3.0.4: + /@envelop/core@3.0.4: resolution: {integrity: sha512-AybIZxQsDlFQTWHy6YtX/MSQPVuw+eOFtTW90JsHn6EbmcQnD6N3edQfSiTGjggPRHLoC0+0cuYXp2Ly2r3vrQ==} dependencies: '@envelop/types': 3.0.1 tslib: 2.4.0 - /@envelop/dataloader/4.0.4_dataloader@2.1.0: + /@envelop/dataloader@4.0.4(dataloader@2.1.0): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} peerDependencies: '@envelop/core': ^3.0.4 @@ -3002,7 +3421,7 @@ packages: tslib: 2.5.0 dev: false - /@envelop/execute-subscription-event/3.0.4_graphql@16.6.0: + /@envelop/execute-subscription-event@3.0.4(graphql@16.6.0): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 @@ -3015,28 +3434,28 @@ packages: tslib: 2.5.0 dev: false - /@envelop/types/3.0.1: + /@envelop/types@3.0.1: resolution: {integrity: sha512-Ok62K1K+rlS+wQw77k8Pis8+1/h7+/9Wk5Fgcc2U6M5haEWsLFAHcHsk8rYlnJdEUl2Y3yJcCSOYbt1dyTaU5w==} dependencies: tslib: 2.5.0 - /@esbuild/android-arm/0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} + /@esbuild/android-arm64@0.17.12: + resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm64/0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} + /@esbuild/android-arm@0.17.12: + resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64/0.17.12: + /@esbuild/android-x64@0.17.12: resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} engines: {node: '>=12'} cpu: [x64] @@ -3044,7 +3463,7 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64/0.17.12: + /@esbuild/darwin-arm64@0.17.12: resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} engines: {node: '>=12'} cpu: [arm64] @@ -3052,7 +3471,7 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64/0.17.12: + /@esbuild/darwin-x64@0.17.12: resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} engines: {node: '>=12'} cpu: [x64] @@ -3060,7 +3479,7 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64/0.17.12: + /@esbuild/freebsd-arm64@0.17.12: resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} engines: {node: '>=12'} cpu: [arm64] @@ -3068,7 +3487,7 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64/0.17.12: + /@esbuild/freebsd-x64@0.17.12: resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} engines: {node: '>=12'} cpu: [x64] @@ -3076,23 +3495,23 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm/0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + /@esbuild/linux-arm64@0.17.12: + resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm64/0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + /@esbuild/linux-arm@0.17.12: + resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32/0.17.12: + /@esbuild/linux-ia32@0.17.12: resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} engines: {node: '>=12'} cpu: [ia32] @@ -3100,7 +3519,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64/0.17.12: + /@esbuild/linux-loong64@0.17.12: resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} engines: {node: '>=12'} cpu: [loong64] @@ -3108,7 +3527,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el/0.17.12: + /@esbuild/linux-mips64el@0.17.12: resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} engines: {node: '>=12'} cpu: [mips64el] @@ -3116,7 +3535,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64/0.17.12: + /@esbuild/linux-ppc64@0.17.12: resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} engines: {node: '>=12'} cpu: [ppc64] @@ -3124,7 +3543,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64/0.17.12: + /@esbuild/linux-riscv64@0.17.12: resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} engines: {node: '>=12'} cpu: [riscv64] @@ -3132,7 +3551,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x/0.17.12: + /@esbuild/linux-s390x@0.17.12: resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} engines: {node: '>=12'} cpu: [s390x] @@ -3140,7 +3559,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64/0.17.12: + /@esbuild/linux-x64@0.17.12: resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} engines: {node: '>=12'} cpu: [x64] @@ -3148,7 +3567,7 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64/0.17.12: + /@esbuild/netbsd-x64@0.17.12: resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} engines: {node: '>=12'} cpu: [x64] @@ -3156,7 +3575,7 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64/0.17.12: + /@esbuild/openbsd-x64@0.17.12: resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} engines: {node: '>=12'} cpu: [x64] @@ -3164,7 +3583,7 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64/0.17.12: + /@esbuild/sunos-x64@0.17.12: resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} engines: {node: '>=12'} cpu: [x64] @@ -3172,7 +3591,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64/0.17.12: + /@esbuild/win32-arm64@0.17.12: resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} engines: {node: '>=12'} cpu: [arm64] @@ -3180,7 +3599,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32/0.17.12: + /@esbuild/win32-ia32@0.17.12: resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} engines: {node: '>=12'} cpu: [ia32] @@ -3188,7 +3607,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64/0.17.12: + /@esbuild/win32-x64@0.17.12: resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} engines: {node: '>=12'} cpu: [x64] @@ -3196,96 +3615,82 @@ packages: requiresBuild: true optional: true - /@faker-js/faker/7.6.0: + /@faker-js/faker@7.6.0: resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} dev: false - /@fastify/ajv-compiler/3.4.0: + /@fastify/ajv-compiler@3.4.0: resolution: {integrity: sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w==} dependencies: ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1(ajv@8.11.0) fast-uri: 2.1.0 - /@fastify/cors/8.2.0: + /@fastify/cors@8.2.0: resolution: {integrity: sha512-qDgwpmg6C4D0D3nh8MTMuRXWyEwPnDZDBODaJv90FP2o9ukbahJByW4FtrM5Bpod5KbTf1oIExBmpItbUTQmHg==} dependencies: fastify-plugin: 4.3.0 mnemonist: 0.39.5 - /@fastify/deepmerge/1.1.0: + /@fastify/deepmerge@1.1.0: resolution: {integrity: sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==} - /@fastify/error/3.0.0: + /@fastify/error@3.0.0: resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} - /@fastify/fast-json-stringify-compiler/4.1.0: + /@fastify/fast-json-stringify-compiler@4.1.0: resolution: {integrity: sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==} dependencies: fast-json-stringify: 5.4.0 - /@fastify/nextjs/9.2.0_next@12.3.4: + /@fastify/nextjs@9.2.0(next@12.3.4): resolution: {integrity: sha512-javnZvkO0+HLfuHYUqNF/14mE0T01gy2gkBCiJ2IFDIvpVhFzp65ElF3c7meGAF7Osqz//6useY04+vTIxGU3A==} peerDependencies: next: 12.x.x || 13.x.x dependencies: '@fastify/under-pressure': 8.1.0 fastify-plugin: 4.3.0 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) dev: true - /@fastify/under-pressure/8.1.0: + /@fastify/under-pressure@8.1.0: resolution: {integrity: sha512-2Nm0UyVxTdssvNTbYVZFSH4C2LwgQcphOxgX6hIQce8jH1sm1gx/wusDBr6+0lyzwE06V537kwA7JeAvysK3xw==} dependencies: '@fastify/error': 3.0.0 fastify-plugin: 4.3.0 dev: true - /@graphql-codegen/core/2.6.8_graphql@16.6.0: + /@graphql-codegen/core@2.6.8(graphql@16.6.0): resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.1_graphql@16.6.0 - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/schema': 9.0.14(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.4.1 dev: false - /@graphql-codegen/core/3.1.0_graphql@16.6.0: + /@graphql-codegen/core@3.1.0(graphql@16.6.0): resolution: {integrity: sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/schema': 9.0.16(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: true - /@graphql-codegen/plugin-helpers/3.1.1_graphql@16.6.0: - resolution: {integrity: sha512-+V1WK4DUhejVSbkZrAsyv9gA4oQABVrtEUkT7vWq7gSf7Ln6OEM59lDUDsjp5wpLPTBIDJANbAe3qEd+iCB3Ow==} - peerDependencies: - graphql: '*' - dependencies: - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 - change-case-all: 1.0.15 - common-tags: 1.8.2 - graphql: 16.6.0 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 - dev: false - - /@graphql-codegen/plugin-helpers/3.1.2_graphql@16.6.0: + /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.6.0 @@ -3294,12 +3699,12 @@ packages: tslib: 2.4.1 dev: false - /@graphql-codegen/plugin-helpers/4.1.0_graphql@16.6.0: + /@graphql-codegen/plugin-helpers@4.1.0(graphql@16.6.0): resolution: {integrity: sha512-xvSHJb9OGb5CODIls0AI1rCenLz+FuiaNPCsfHMCNsLDjOZK2u0jAQ9zUBdc/Wb+21YXZujBCc0Vm1QX+Zz0nw==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.6.0 @@ -3308,35 +3713,35 @@ packages: tslib: 2.5.0 dev: true - /@graphql-codegen/schema-ast/2.6.1_graphql@16.6.0: + /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.4.1 dev: false - /@graphql-codegen/schema-ast/3.0.1_graphql@16.6.0: + /@graphql-codegen/schema-ast@3.0.1(graphql@16.6.0): resolution: {integrity: sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: true - /@graphql-codegen/typed-document-node/2.3.10_graphql@16.6.0: + /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.6.0 @@ -3346,14 +3751,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript-operations/2.5.10_graphql@16.6.0: + /@graphql-codegen/typescript-operations@2.5.10(graphql@16.6.0): resolution: {integrity: sha512-N5H7JhcMRzjM2KdvCitqkOd4hphzD9q3NVWGLvBe3Xgqx5Cs3Y4GUcCJbRolSXdQcYBVgZpLZrUe/qoxwYyfeg==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.8_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3362,31 +3767,15 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript-resolvers/2.7.10_graphql@16.6.0: + /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.6.0): resolution: {integrity: sha512-MCts4Vq4l8j5zxbfSjm3bkqYOsMWF9yzzNakYSTWsQZqxqAggsiMz18GTdhQvWCtFt6eKYadVrX3WDZBLuAHOA==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.8_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 - auto-bind: 4.0.0 - graphql: 16.6.0 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@graphql-codegen/typescript/2.8.5_graphql@16.6.0: - resolution: {integrity: sha512-5w3zNlnNKM9tI5ZRbhESmsJ4G16rSiFmNQX6Ot56fmcYUC6bnAt5fqvSqs2C+8fVGIIjeWuwjQA5Xn1VkaLY8A==} - peerDependencies: - graphql: '*' - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/schema-ast': 2.6.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3395,14 +3784,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript/2.8.8_graphql@16.6.0: + /@graphql-codegen/typescript@2.8.8(graphql@16.6.0): resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/schema-ast': 2.6.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.8_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/schema-ast': 2.6.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3411,14 +3800,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript/3.0.2_graphql@16.6.0: + /@graphql-codegen/typescript@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-qD6QkTB+2eJmIaZ6Tihv6HRz7daWWLz9uw5vwCmPeZN6XL2RINZGLkR7D8BQzLDlNGMrpQ4SeSM9o3ZALSCIuQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-codegen/schema-ast': 3.0.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 3.0.2_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-codegen/schema-ast': 3.0.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 3.0.2(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.5.0 @@ -3427,20 +3816,20 @@ packages: - supports-color dev: true - /@graphql-codegen/visitor-plugin-common/2.13.5_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -3448,20 +3837,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common/2.13.8_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.6.0): resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -3469,20 +3858,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common/3.0.2_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-dKblRFrB0Fdl3+nPlzlLBka+TN/EGwr/q09mwry0H58z3j6gXkMbsdPr+dc8MhgOV7w/8egRvSPIvd7m6eFCnw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.5.0 transitivePeerDependencies: @@ -3490,24 +3879,7 @@ packages: - supports-color dev: true - /@graphql-ez/client/0.6.1_b243oerbkaq6iicamxlfxsskte: - resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} - peerDependencies: - '@graphql-typed-document-node/core': '*' - '@types/node': '*' - graphql: '*' - peerDependenciesMeta: - '@graphql-typed-document-node/core': - optional: true - dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 - '@types/node': 18.15.5 - graphql: 16.6.0 - undici: 5.7.0 - dev: false - - /@graphql-ez/client/0.6.1_cqyb4buyc4habqgvcucexr22xm: + /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -3517,13 +3889,14 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) '@types/node': 18.15.5 graphql: 16.6.0 undici: 5.7.0 dev: false - /@graphql-ez/client/0.6.1_ecm5me3wxveow2jprdqx4kgwjq: + /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -3533,33 +3906,13 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - '@graphql-typed-document-node/core': 3.2.0_graphql@17.0.0-alpha.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.0-alpha.2) '@types/node': 18.15.5 graphql: 17.0.0-alpha.2 undici: 5.7.0 - dev: true - - /@graphql-ez/fastify-testing/0.4.0_ea5semnvare4dczwxuvgvhhrim: - resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} - peerDependencies: - '@graphql-ez/fastify': 0.12.0 - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - dependencies: - '@graphql-ez/client': 0.6.1_ecm5me3wxveow2jprdqx4kgwjq - '@graphql-ez/fastify': 0.12.0_sjoruv57pci442joaaplrlyrfa - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - fastify: 4.11.0 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm - transitivePeerDependencies: - - '@graphql-typed-document-node/core' - - '@types/node' - dev: true - /@graphql-ez/fastify-testing/0.4.0_gw55l7m33unpztkcavxnnvhm5q: + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -3567,18 +3920,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1_cqyb4buyc4habqgvcucexr22xm - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) fastify: 4.11.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' dev: false - /@graphql-ez/fastify-testing/0.4.0_zow4snlfvwzlxlnfckljwyv4aa: + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -3586,18 +3939,17 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1_b243oerbkaq6iicamxlfxsskte - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql: 17.0.0-alpha.2 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' - dev: false - /@graphql-ez/fastify/0.12.0_orbaahc6eekuqylvdxzf34kuru: + /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3612,14 +3964,14 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 fastify: 4.11.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) dev: false - /@graphql-ez/fastify/0.12.0_sjoruv57pci442joaaplrlyrfa: + /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3634,14 +3986,13 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) '@types/node': 18.15.5 fastify: 4.11.0 graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm - dev: true + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - /@graphql-ez/nextjs/0.11.0_c5xlb76vribzm5vdd4qmd4rlja: + /@graphql-ez/nextjs@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4): resolution: {integrity: sha512-oZNeAu8Kbi0QmGpyK17QIjS5Vxzn6smCjZ4qE5+OKmAeJ8iSlTJlZtUn+ALEG0DzEIFg2nPM5xTAMlKO47WdCg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3659,29 +4010,29 @@ packages: '@types/node': 18.15.5 cors: 2.8.5 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) dev: false - /@graphql-ez/plugin-altair/0.11.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} peerDependencies: '@types/node': '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 altair-static-slim: 5.0.9 cross-undici-fetch: 0.4.14 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) mime-types: 2.1.35 transitivePeerDependencies: - encoding - graphql dev: false - /@graphql-ez/plugin-codegen/0.8.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-dv0nW2PAG4EqaFwLn0lmm45rPtQ7yqfP4ega3J3JPHM1qUCBNi/QBTk2X2V3k2bBLCyDzDtXiNNDKgu9ILKW0w==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3691,56 +4042,56 @@ packages: graphql: optional: true dependencies: - '@graphql-codegen/core': 2.6.8_graphql@16.6.0 - '@graphql-codegen/plugin-helpers': 3.1.1_graphql@16.6.0 - '@graphql-codegen/typed-document-node': 2.3.10_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.5_graphql@16.6.0 - '@graphql-codegen/typescript-operations': 2.5.10_graphql@16.6.0 - '@graphql-codegen/typescript-resolvers': 2.7.10_graphql@16.6.0 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-tools/graphql-file-loader': 7.5.13_graphql@16.6.0 - '@graphql-tools/load': 7.8.8_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-codegen/core': 2.6.8(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.6.0) + '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.6.0) + '@graphql-tools/load': 7.8.8(graphql@16.6.0) + '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) mkdirp: 1.0.4 - prettier: 2.8.1 + prettier: 2.8.3 transitivePeerDependencies: - '@types/node' - encoding - supports-color dev: false - /@graphql-ez/plugin-dataloader/0.8.0_4khj4v5e4vfkswp32g74ajok3i: + /@graphql-ez/plugin-dataloader@0.8.0(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@envelop/dataloader': 4.0.4_dataloader@2.1.0 - '@envelop/execute-subscription-event': 3.0.4_graphql@16.6.0 + '@envelop/dataloader': 4.0.4(dataloader@2.1.0) + '@envelop/execute-subscription-event': 3.0.4(graphql@16.6.0) dataloader: 2.1.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@envelop/core' - graphql dev: false - /@graphql-ez/plugin-graphiql/0.12.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-graphiql@0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-d2MPAi6MXaDzKPr/Ai2+GNn/6mQKoNfbeQLudIzNOr1/zc00tO5HAgDaO8WwhHTDfCX+GwFw2Bgr4ZOU3lv+Uw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@pablosz/graphql-helix-graphiql': 4.2.2_cqyb4buyc4habqgvcucexr22xm - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@pablosz/graphql-helix-graphiql': 4.2.2(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' - graphql dev: false - /@graphql-ez/plugin-schema/0.9.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3750,16 +4101,16 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-tools/schema': 9.0.12(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-upload/0.8.0_kjoqpzaqt57iapo3yu2w2aeoce: + /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0): resolution: {integrity: sha512-R/cE1vT5kZxWe4EpuwV15znWU+GSu4KsUIgdCUYcE897XO1O9+Iadn4K/RyPuRY3tv//6+7Bj5gKruJaFgmsbg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3773,16 +4124,16 @@ packages: graphql-upload: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/graphql-upload': 16.0.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-upload: 16.0.2_graphql@16.6.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-upload: 13.0.0(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-websockets/0.11.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): resolution: {integrity: sha512-jtvw5o3rw3Y6JNFfl+CoybQWdzqy0ml+eHNelHEd1Jd1b/Jbsc9RsIyOHE6uRqOxQhsBi6/1HL+nJCUuW+/n9A==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3792,19 +4143,19 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/ws': 8.5.3 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-ws: 5.11.2_graphql@16.6.0 - subscriptions-transport-ws-envelop: 2.0.2_graphql@16.6.0+ws@8.11.0 - ws: 8.11.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ws: 5.11.3(graphql@16.6.0) + subscriptions-transport-ws-envelop: 2.0.2(graphql@16.6.0)(ws@8.13.0) + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - '@types/node' - bufferutil - utf-8-validate - /@graphql-ez/utils/0.2.0_cqyb4buyc4habqgvcucexr22xm: + /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' @@ -3813,7 +4164,7 @@ packages: '@types/node': 18.15.5 graphql: 16.6.0 - /@graphql-ez/utils/0.2.0_ddkhnomv6qakhz4wmciki3kakm: + /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' @@ -3821,105 +4172,114 @@ packages: dependencies: '@types/node': 18.15.5 graphql: 17.0.0-alpha.2 - dev: true - /@graphql-tools/batch-execute/8.5.16_graphql@16.6.0: - resolution: {integrity: sha512-x/gXA6R1Q/qigT5LDesZYemErzFYvBBuTaVgiIJuE2wG6oMV1cln0O35Z7WVQw6H3I4vF7cCG7c7wKSoC+3z4Q==} + /@graphql-tools/batch-execute@8.5.18(graphql@16.6.0): + resolution: {integrity: sha512-mNv5bpZMLLwhkmPA6+RP81A6u3KF4CSKLf3VX9hbomOkQR4db8pNs8BOvpZU54wKsUzMzdlws/2g/Dabyb2Vsg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - dataloader: 2.1.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/delegate/9.0.25_graphql@16.6.0: - resolution: {integrity: sha512-M7DMrPx8uEjXUshkki0ufcL//9Dj12eR3vykvteFB6odYL9cX5dhZC9l1D2IdQRuHzLMskhkhRtfnXRoa82KTA==} + /@graphql-tools/delegate@9.0.28(graphql@16.6.0): + resolution: {integrity: sha512-8j23JCs2mgXqnp+5K0v4J3QBQU/5sXd9miaLvMfRf/6963DznOXTECyS9Gcvj1VEeR5CXIw6+aX/BvRDKDdN1g==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/batch-execute': 8.5.16_graphql@16.6.0 - '@graphql-tools/executor': 0.0.13_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - dataloader: 2.1.0 + '@graphql-tools/batch-execute': 8.5.18(graphql@16.6.0) + '@graphql-tools/executor': 0.0.15(graphql@16.6.0) + '@graphql-tools/schema': 9.0.16(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + dataloader: 2.2.2 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/executor/0.0.13_graphql@16.6.0: - resolution: {integrity: sha512-bZ7QdUV5URLCjD/WuDkvyROYoDVoueTN5W1PatkcN949lwIwEKXUW6y3gRSpiZjXw8IH4/NmN3xPk10OT1emRw==} + /@graphql-tools/executor@0.0.15(graphql@16.6.0): + resolution: {integrity: sha512-6U7QLZT8cEUxAMXDP4xXVplLi6RBwx7ih7TevlBto66A/qFp3PDb6o/VFo07yBKozr8PGMZ4jMfEWBGxmbGdxA==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - '@graphql-typed-document-node/core': 3.1.1_graphql@16.6.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.1.2(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/graphql-file-loader/7.5.13_graphql@16.6.0: + /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/import': 6.7.14_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/import': 6.7.14(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 tslib: 2.5.0 unixify: 1.0.0 dev: false - /@graphql-tools/import/6.7.14_graphql@16.6.0: + /@graphql-tools/import@6.7.14(graphql@16.6.0): resolution: {integrity: sha512-lRX/MHM0Km497kg4VXMvtV1DeG/AfPJFO2ovaL0kDujWEdyCsWxsB4whY7nPeiNaPA/nT3mQ8MU7yFzVjogF/Q==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 resolve-from: 5.0.0 tslib: 2.5.0 dev: false - /@graphql-tools/load/7.8.8_graphql@16.6.0: + /@graphql-tools/load@7.8.8(graphql@16.6.0): resolution: {integrity: sha512-gMuQdO2jXmI0BNUc1MafxRQTWVMUtuH500pZAQtOdDdNJppV7lJdY6mMhITQ2qnhYDuMrcZPHhIkcftyQfkgUg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/schema': 9.0.12(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 p-limit: 3.1.0 tslib: 2.5.0 dev: false - /@graphql-tools/merge/8.3.14_graphql@16.6.0: + /@graphql-tools/merge@8.3.14(graphql@16.6.0): resolution: {integrity: sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.5.0 + dev: false + + /@graphql-tools/merge@8.3.16(graphql@16.6.0): + resolution: {integrity: sha512-In0kcOZcPIpYOKaqdrJ3thdLPE7TutFnL9tbrHUy2zCinR2O/blpRC48jPckcs0HHrUQ0pGT4HqvzMkZUeEBAw==} + peerDependencies: + graphql: '*' + dependencies: + '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: false - /@graphql-tools/merge/8.3.17_graphql@16.6.0: - resolution: {integrity: sha512-CLzz49lc6BavPhH9gPRm0sJeNA7kC/tF/jLUTQsyef6xj82Jw3rqIJ9PE+bk1cqPCOG01WLOfquBu445OMDO2g==} + /@graphql-tools/merge@8.3.18(graphql@16.6.0): + resolution: {integrity: sha512-R8nBglvRWPAyLpZL/f3lxsY7wjnAeE0l056zHhcO/CgpvK76KYUt9oEkR05i8Hmt8DLRycBN0FiotJ0yDQWTVA==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: true - /@graphql-tools/optimize/1.3.1_graphql@16.6.0: + /@graphql-tools/optimize@1.3.1(graphql@16.6.0): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} peerDependencies: graphql: '*' @@ -3927,44 +4287,56 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/relay-operation-optimizer/6.5.8_graphql@16.6.0: + /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} peerDependencies: graphql: '*' dependencies: - '@ardatan/relay-compiler': 12.0.0_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 transitivePeerDependencies: - encoding - supports-color - /@graphql-tools/schema/9.0.12_graphql@16.6.0: + /@graphql-tools/schema@9.0.12(graphql@16.6.0): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/merge': 8.3.14_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/merge': 8.3.14(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.11 dev: false - /@graphql-tools/schema/9.0.15_graphql@16.6.0: - resolution: {integrity: sha512-p2DbpkOBcsi+yCEjwoS+r4pJ5z+3JjlJdhbPkCwC4q8lGf5r93dVYrExOrqGKTU5kxLXI/mxabSxcunjNIsDIg==} + /@graphql-tools/schema@9.0.14(graphql@16.6.0): + resolution: {integrity: sha512-U6k+HY3Git+dsOEhq+dtWQwYg2CAgue8qBvnBXoKu5eEeH284wymMUoNm0e4IycOgMCJANVhClGEBIkLRu3FQQ==} + peerDependencies: + graphql: '*' + dependencies: + '@graphql-tools/merge': 8.3.16(graphql@16.6.0) + '@graphql-tools/utils': 9.1.4(graphql@16.6.0) + graphql: 16.6.0 + tslib: 2.5.0 + value-or-promise: 1.0.12 + dev: false + + /@graphql-tools/schema@9.0.16(graphql@16.6.0): + resolution: {integrity: sha512-kF+tbYPPf/6K2aHG3e1SWIbapDLQaqnIHVRG6ow3onkFoowwtKszvUyOASL6Krcv2x9bIMvd1UkvRf9OaoROQQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/merge': 8.3.17_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/merge': 8.3.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/utils/8.13.1_graphql@16.6.0: + /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: graphql: '*' @@ -3972,7 +4344,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/utils/9.1.3_graphql@16.6.0: + /@graphql-tools/utils@9.1.3(graphql@16.6.0): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} peerDependencies: graphql: '*' @@ -3981,52 +4353,60 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/utils/9.2.0_graphql@16.6.0: - resolution: {integrity: sha512-s3lEG1iYkyYEnKCWrIFECX3XH2wmZvbg6Ir3udCvIDynq+ydaO7JQXobclpPtwSJtjlS353haF//6V7mnBQ4bg==} + /@graphql-tools/utils@9.1.4(graphql@16.6.0): + resolution: {integrity: sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg==} + peerDependencies: + graphql: '*' + dependencies: + graphql: 16.6.0 + tslib: 2.5.0 + dev: false + + /@graphql-tools/utils@9.2.1(graphql@16.6.0): + resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: graphql: '*' dependencies: - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/wrap/9.3.4_graphql@16.6.0: - resolution: {integrity: sha512-MJY6lZqi+j96izjOYOLk5fys34oiLt7U34SQ4Wd6V/sy1utVMbh2H7XiZAuDJ38JIKmr72qN7kLgNcnNOxXjHQ==} + /@graphql-tools/wrap@9.3.7(graphql@16.6.0): + resolution: {integrity: sha512-gavfiWLKgvmC2VPamnMzml3zmkBoo0yt+EmOLIHY6O92o4uMTR281WGM77tZIfq+jzLtjoIOThUSjC/cN/6XKg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/delegate': 9.0.25_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/delegate': 9.0.28(graphql@16.6.0) + '@graphql-tools/schema': 9.0.16(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-typed-document-node/core/3.1.1_graphql@16.6.0: - resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} + /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): + resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 dev: true - /@graphql-typed-document-node/core/3.2.0_graphql@16.6.0: + /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 - /@graphql-typed-document-node/core/3.2.0_graphql@17.0.0-alpha.2: + /@graphql-typed-document-node/core@3.2.0(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: '*' dependencies: graphql: 17.0.0-alpha.2 - dev: true - /@guild-docs/client/2.1.1_i7yamdcqgfam5kgmi3p25dpzk4: + /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1): resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} peerDependencies: '@chakra-ui/icons': '*' @@ -4049,32 +4429,32 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7_react@17.0.2 - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/icons': 1.1.7(react@17.0.2) + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@guild-docs/mdx-remote': 2.0.2_utcvqzmoogmguqse2qaqwut5au - '@guild-docs/types': 2.0.0_plm56vbnmjadqejeinvs2v2cgm - '@mdx-js/react': 2.3.0_react@17.0.2 - '@theguild/components': 1.12.0_zsjcj4gvi24ks76nprapl4hsmq - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) + '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) + '@mdx-js/react': 2.3.0(react@17.0.2) + '@theguild/components': 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) immer: 9.0.12 - mdx-mermaid: 1.3.2_mermaid@9.1.7+react@17.0.2 + mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2) mermaid: 9.1.7 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy - next-seo: 5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) + next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) nprogress: 0.2.0 react: 17.0.2 - react-children-utilities: 2.7.0_react@17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-icons: 4.8.0_react@17.0.2 - react-intersection-observer: 8.33.1_react@17.0.2 - react-sticky-box: 1.0.2_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m + react-children-utilities: 2.7.0(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + react-icons: 4.8.0(react@17.0.2) + react-intersection-observer: 8.33.1(react@17.0.2) + react-sticky-box: 1.0.2(react@17.0.2) + react-use: 17.4.0(react-dom@17.0.2)(react@17.0.2) remove-markdown: 0.3.0 - use-immer: 0.6.0_immer@9.0.12+react@17.0.2 - zustand: 3.7.2_react@17.0.2 + use-immer: 0.6.0(immer@9.0.12)(react@17.0.2) + zustand: 3.7.2(react@17.0.2) transitivePeerDependencies: - '@types/react' - shiki @@ -4082,17 +4462,17 @@ packages: - unist-util-visit dev: false - /@guild-docs/mdx-remote/2.0.2_utcvqzmoogmguqse2qaqwut5au: + /@guild-docs/mdx-remote@2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1): resolution: {integrity: sha512-g35B/Lo7s4l3HLcB9Z7jvTYrhMjCLMbfeS4i3rEhzhP54S0lvQ6gFTbVY25nDGZjZGMgMpkykY4Rk/p73UF2qQ==} peerDependencies: '@mdx-js/react': ^2.1.1 react: '*' dependencies: '@babel/code-frame': 7.16.7 - '@guild-docs/types': 3.0.0_plm56vbnmjadqejeinvs2v2cgm + '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) '@mdx-js/mdx': 2.1.1 - '@mdx-js/react': 2.3.0_react@17.0.2 - '@stefanprobst/rehype-shiki': 2.2.0_shiki@0.12.1 + '@mdx-js/react': 2.3.0(react@17.0.2) + '@stefanprobst/rehype-shiki': 2.2.0(shiki@0.10.1) react: 17.0.2 remark-gfm: 3.0.1 unified: 10.1.2 @@ -4107,7 +4487,7 @@ packages: - supports-color dev: false - /@guild-docs/server/4.0.0_vunfziydkmle7wbsgwsinw3tpa: + /@guild-docs/server@4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.10.1): resolution: {integrity: sha512-LlDr4U8LMwoE3LEmbMgUXlmFBUdHVKzGIOofKG1SR6VNwZEQ8/qAR5eEIdl3xA5VyOCs4PJ0lDJg5pzoECxq8w==} peerDependencies: next: '>=12.1.5' @@ -4116,19 +4496,19 @@ packages: react-dom: '*' shiki: '*' dependencies: - '@guild-docs/mdx-remote': 2.0.2_utcvqzmoogmguqse2qaqwut5au - '@guild-docs/types': 3.0.0_plm56vbnmjadqejeinvs2v2cgm - '@stefanprobst/remark-shiki': 2.1.0_shiki@0.12.1 + '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) + '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) + '@stefanprobst/remark-shiki': 2.1.0(shiki@0.10.1) github-slugger: 1.4.0 globby: 13.1.1 gray-matter: 4.0.3 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) rehype-slug: 5.0.1 remark-emoji: 3.0.2 - shiki: 0.12.1 + shiki: 0.10.1 tiny-lru: 8.0.2 undici: 5.7.0 transitivePeerDependencies: @@ -4138,49 +4518,49 @@ packages: - supports-color dev: false - /@guild-docs/types/2.0.0_plm56vbnmjadqejeinvs2v2cgm: + /@guild-docs/types@2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): resolution: {integrity: sha512-BeObMB7WokzcFO5quSWOOouJL96zneEzE0VS6rkZmg/bG/ukX0S6ODy4/UhxsWphxPYqQ68VAdM57WqTkdlamg==} peerDependencies: '@chakra-ui/react': '*' '@types/react': '*' next-i18next: '*' dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@mdx-js/mdx': 2.1.5 '@types/react': 17.0.53 - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false - /@guild-docs/types/3.0.0_plm56vbnmjadqejeinvs2v2cgm: + /@guild-docs/types@3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): resolution: {integrity: sha512-Vd8lgw+p7boag31I2hqpiCgp3aKsLgPNs2WNWx3MZA2bWJ7+qKKDvPP3KiioMGK5nadEq9SsCbG72ogBZbwpag==} peerDependencies: '@chakra-ui/react': '*' '@types/react': '*' next-i18next: '*' dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@mdx-js/mdx': 2.1.5 '@types/react': 17.0.53 - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false - /@hapi/hoek/9.3.0: + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true - /@hapi/topo/5.1.0: + /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -4190,23 +4570,11 @@ packages: js-yaml: 3.14.1 resolve-from: 5.0.0 - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - /@jest/console/29.4.2: - resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: false - - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4217,48 +4585,7 @@ packages: jest-util: 29.5.0 slash: 3.0.0 - /@jest/core/29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.7.1 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.5 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - - /@jest/core/29.5.0_ts-node@10.9.1: + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4279,7 +4606,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_757mb262zsxkcnuknwfdsckmku + jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -4298,9 +4625,8 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4309,13 +4635,13 @@ packages: '@types/node': 18.15.5 jest-mock: 29.5.0 - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4324,7 +4650,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4335,7 +4661,7 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4346,7 +4672,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4382,13 +4708,13 @@ packages: transitivePeerDependencies: - supports-color - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.21 - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4396,17 +4722,7 @@ packages: callsites: 3.1.0 graceful-fs: 4.2.10 - /@jest/test-result/29.4.0: - resolution: {integrity: sha512-EtRklzjpddZU/aBVxJqqejfzfOcnehmjNXufs6u6qwd05kkhXpAPhZdt8bLlQd7cA2nD+JqZQ5Dx9NX5Jh6mjA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.4.2 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: false - - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4415,7 +4731,7 @@ packages: '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4424,7 +4740,7 @@ packages: jest-haste-map: 29.5.0 slash: 3.0.0 - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4446,7 +4762,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4457,14 +4773,14 @@ packages: '@types/yargs': 17.0.13 chalk: 4.1.2 - /@jridgewell/gen-mapping/0.1.1: + /@jridgewell/gen-mapping@0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -4472,43 +4788,42 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@manypkg/find-root/1.1.0: + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 dev: true - /@manypkg/get-packages/1.1.3: + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.6 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -4516,7 +4831,7 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdx-js/mdx/2.1.1: + /@mdx-js/mdx@2.1.1: resolution: {integrity: sha512-SXC18cChut3F2zkVXwsb2no0fzTQ1z6swjK13XwFbF5QU/SFQM0orAItPypSdL3GvqYyzVJtz8UofzJhPEQtMw==} dependencies: '@types/estree-jsx': 0.0.1 @@ -4535,12 +4850,12 @@ packages: unist-util-position-from-estree: 1.1.1 unist-util-stringify-position: 3.0.2 unist-util-visit: 4.1.1 - vfile: 5.3.2 + vfile: 5.3.5 transitivePeerDependencies: - supports-color dev: false - /@mdx-js/mdx/2.1.5: + /@mdx-js/mdx@2.1.5: resolution: {integrity: sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==} dependencies: '@types/estree-jsx': 1.0.0 @@ -4564,7 +4879,7 @@ packages: - supports-color dev: false - /@mdx-js/react/2.3.0_react@17.0.2: + /@mdx-js/react@2.3.0(react@17.0.2): resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: react: '>=16' @@ -4574,7 +4889,7 @@ packages: react: 17.0.2 dev: false - /@motionone/animation/10.14.0: + /@motionone/animation@10.14.0: resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: '@motionone/easing': 10.14.0 @@ -4583,7 +4898,7 @@ packages: tslib: 2.5.0 dev: false - /@motionone/dom/10.12.0: + /@motionone/dom@10.12.0: resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} dependencies: '@motionone/animation': 10.14.0 @@ -4594,14 +4909,14 @@ packages: tslib: 2.5.0 dev: false - /@motionone/easing/10.14.0: + /@motionone/easing@10.14.0: resolution: {integrity: sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==} dependencies: '@motionone/utils': 10.14.0 tslib: 2.5.0 dev: false - /@motionone/generators/10.14.0: + /@motionone/generators@10.14.0: resolution: {integrity: sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==} dependencies: '@motionone/types': 10.14.0 @@ -4609,11 +4924,11 @@ packages: tslib: 2.5.0 dev: false - /@motionone/types/10.14.0: + /@motionone/types@10.14.0: resolution: {integrity: sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==} dev: false - /@motionone/utils/10.14.0: + /@motionone/utils@10.14.0: resolution: {integrity: sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==} dependencies: '@motionone/types': 10.14.0 @@ -4621,19 +4936,19 @@ packages: tslib: 2.5.0 dev: false - /@next/bundle-analyzer/12.3.4: + /@next/bundle-analyzer@12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-eKjgRICzbLTmod0UnJcArFVs5uEAiuZwB6NCf84m+btW7jdylUVoOYf1wi5tA14xk5L9Lho7Prm6/XJ8gxYzfQ==} dependencies: - webpack-bundle-analyzer: 4.3.0 + webpack-bundle-analyzer: 4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@next/env/12.3.4: + /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} - /@next/swc-android-arm-eabi/12.3.4: + /@next/swc-android-arm-eabi@12.3.4: resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} cpu: [arm] @@ -4641,7 +4956,7 @@ packages: requiresBuild: true optional: true - /@next/swc-android-arm64/12.3.4: + /@next/swc-android-arm64@12.3.4: resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==} engines: {node: '>= 10'} cpu: [arm64] @@ -4649,7 +4964,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64/12.3.4: + /@next/swc-darwin-arm64@12.3.4: resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==} engines: {node: '>= 10'} cpu: [arm64] @@ -4657,7 +4972,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64/12.3.4: + /@next/swc-darwin-x64@12.3.4: resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} cpu: [x64] @@ -4665,7 +4980,7 @@ packages: requiresBuild: true optional: true - /@next/swc-freebsd-x64/12.3.4: + /@next/swc-freebsd-x64@12.3.4: resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} cpu: [x64] @@ -4673,7 +4988,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm-gnueabihf/12.3.4: + /@next/swc-linux-arm-gnueabihf@12.3.4: resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==} engines: {node: '>= 10'} cpu: [arm] @@ -4681,7 +4996,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu/12.3.4: + /@next/swc-linux-arm64-gnu@12.3.4: resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==} engines: {node: '>= 10'} cpu: [arm64] @@ -4689,7 +5004,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl/12.3.4: + /@next/swc-linux-arm64-musl@12.3.4: resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -4697,7 +5012,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu/12.3.4: + /@next/swc-linux-x64-gnu@12.3.4: resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} cpu: [x64] @@ -4705,7 +5020,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl/12.3.4: + /@next/swc-linux-x64-musl@12.3.4: resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} cpu: [x64] @@ -4713,7 +5028,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc/12.3.4: + /@next/swc-win32-arm64-msvc@12.3.4: resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -4721,7 +5036,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc/12.3.4: + /@next/swc-win32-ia32-msvc@12.3.4: resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} cpu: [ia32] @@ -4729,7 +5044,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc/12.3.4: + /@next/swc-win32-x64-msvc@12.3.4: resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==} engines: {node: '>= 10'} cpu: [x64] @@ -4737,270 +5052,269 @@ packages: requiresBuild: true optional: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pablosz/graphql-helix-graphiql/4.2.2_cqyb4buyc4habqgvcucexr22xm: + /@pablosz/graphql-helix-graphiql@4.2.2(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-KvSzKAM7amhSsr1D2ZeAynSXzkZfCWOrRPdawcCowKR2t7o8BkUQc91o0wcVgnqzf5YJLp1xYKhxUvzYsHxy1g==} dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' - graphql dev: false - /@pablosz/graphql-helix/2.0.3_graphql@16.6.0: + /@pablosz/graphql-helix@2.0.3(graphql@16.6.0): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 - /@pablosz/graphql-helix/2.0.3_graphql@17.0.0-alpha.2: + /@pablosz/graphql-helix@2.0.3(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' dependencies: graphql: 17.0.0-alpha.2 - dev: true - /@pnpm/types/8.8.0: + /@pnpm/types@8.8.0: resolution: {integrity: sha512-IKUpbWRHDB9C4Yy4UeBpeYhU7eIsLj50jF5HNRUkbJnM0CWHPLxX9TGCI+ov8pgGeTP1t1g0GPDHD6en9D8LxQ==} engines: {node: '>=14.6'} dev: true - /@polka/url/1.0.0-next.21: + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@popperjs/core/2.11.6: + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@radix-ui/primitive/0.1.0: + /@radix-ui/primitive@0.1.0: resolution: {integrity: sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false - /@radix-ui/react-collection/0.1.4_react@17.0.2: + /@radix-ui/react-collection@0.1.4(react@17.0.2): resolution: {integrity: sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-context': 0.1.1_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-slot': 0.1.2_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-context': 0.1.1(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-slot': 0.1.2(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-compose-refs/0.1.0_react@17.0.2: + /@radix-ui/react-compose-refs@0.1.0(react@17.0.2): resolution: {integrity: sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-context/0.1.1_react@17.0.2: + /@radix-ui/react-context@0.1.1(react@17.0.2): resolution: {integrity: sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-dismissable-layer/0.1.5_react@17.0.2: + /@radix-ui/react-dismissable-layer@0.1.5(react@17.0.2): resolution: {integrity: sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-use-body-pointer-events': 0.1.1_react@17.0.2 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 - '@radix-ui/react-use-escape-keydown': 0.1.0_react@17.0.2 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-use-body-pointer-events': 0.1.1(react@17.0.2) + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) + '@radix-ui/react-use-escape-keydown': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-id/0.1.5_react@17.0.2: + /@radix-ui/react-id@0.1.5(react@17.0.2): resolution: {integrity: sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-navigation-menu/0.1.2_sfoxds7t5ydpegc3knd667wn6m: + /@radix-ui/react-navigation-menu@0.1.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-b9+2ambunxMNw4pgOt9xqzVN/A5NPajpiKvR45zI/BS/uOWfV1A3N5Kn+OIbRMln9GyBnuoxXV0tUBLC2rAzpw==} peerDependencies: react: ^16.8 || ^17.0 react-dom: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-collection': 0.1.4_react@17.0.2 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-context': 0.1.1_react@17.0.2 - '@radix-ui/react-dismissable-layer': 0.1.5_react@17.0.2 - '@radix-ui/react-id': 0.1.5_react@17.0.2 - '@radix-ui/react-presence': 0.1.2_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 - '@radix-ui/react-use-controllable-state': 0.1.0_react@17.0.2 - '@radix-ui/react-use-direction': 0.1.0_react@17.0.2 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 - '@radix-ui/react-use-previous': 0.1.1_react@17.0.2 - '@radix-ui/react-visually-hidden': 0.1.4_react@17.0.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - dev: false - - /@radix-ui/react-presence/0.1.2_react@17.0.2: + '@radix-ui/react-collection': 0.1.4(react@17.0.2) + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-context': 0.1.1(react@17.0.2) + '@radix-ui/react-dismissable-layer': 0.1.5(react@17.0.2) + '@radix-ui/react-id': 0.1.5(react@17.0.2) + '@radix-ui/react-presence': 0.1.2(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) + '@radix-ui/react-use-controllable-state': 0.1.0(react@17.0.2) + '@radix-ui/react-use-direction': 0.1.0(react@17.0.2) + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) + '@radix-ui/react-use-previous': 0.1.1(react@17.0.2) + '@radix-ui/react-visually-hidden': 0.1.4(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@radix-ui/react-presence@0.1.2(react@17.0.2): resolution: {integrity: sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==} peerDependencies: react: '>=16.8' dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-primitive/0.1.4_react@17.0.2: + /@radix-ui/react-primitive@0.1.4(react@17.0.2): resolution: {integrity: sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-slot': 0.1.2_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-slot': 0.1.2(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-slot/0.1.2_react@17.0.2: + /@radix-ui/react-slot@0.1.2(react@17.0.2): resolution: {integrity: sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-body-pointer-events/0.1.1_react@17.0.2: + /@radix-ui/react-use-body-pointer-events@0.1.1(react@17.0.2): resolution: {integrity: sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-callback-ref/0.1.0_react@17.0.2: + /@radix-ui/react-use-callback-ref@0.1.0(react@17.0.2): resolution: {integrity: sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-use-controllable-state/0.1.0_react@17.0.2: + /@radix-ui/react-use-controllable-state@0.1.0(react@17.0.2): resolution: {integrity: sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-direction/0.1.0_react@17.0.2: + /@radix-ui/react-use-direction@0.1.0(react@17.0.2): resolution: {integrity: sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-use-escape-keydown/0.1.0_react@17.0.2: + /@radix-ui/react-use-escape-keydown@0.1.0(react@17.0.2): resolution: {integrity: sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-layout-effect/0.1.0_react@17.0.2: + /@radix-ui/react-use-layout-effect@0.1.0(react@17.0.2): resolution: {integrity: sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-use-previous/0.1.1_react@17.0.2: + /@radix-ui/react-use-previous@0.1.1(react@17.0.2): resolution: {integrity: sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false - /@radix-ui/react-visually-hidden/0.1.4_react@17.0.2: + /@radix-ui/react-visually-hidden@0.1.4(react@17.0.2): resolution: {integrity: sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: - '@babel/runtime': 7.20.13 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) react: 17.0.2 dev: false - /@reach/alert/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/alert@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg==} peerDependencies: react: ^16.8.0 || 17.x react-dom: ^16.8.0 || 17.x dependencies: - '@reach/utils': 0.13.2_sfoxds7t5ydpegc3knd667wn6m - '@reach/visually-hidden': 0.13.2_sfoxds7t5ydpegc3knd667wn6m + '@reach/utils': 0.13.2(react-dom@17.0.2)(react@17.0.2) + '@reach/visually-hidden': 0.13.2(react-dom@17.0.2)(react@17.0.2) prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 dev: false - /@reach/utils/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/utils@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-3ir6cN60zvUrwjOJu7C6jec/samqAeyAB12ZADK+qjnmQPdzSYldrFWwDVV5H0WkhbYXR3uh+eImu13hCetNPQ==} peerDependencies: react: ^16.8.0 || 17.x @@ -5008,12 +5322,12 @@ packages: dependencies: '@types/warning': 3.0.0 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 warning: 4.0.3 dev: false - /@reach/visually-hidden/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/visually-hidden@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-sPZwNS0/duOuG0mYwE5DmgEAzW9VhgU3aIt1+mrfT/xiT9Cdncqke+kRBQgU708q/Ttm9tWsoHni03nn/SuPTQ==} peerDependencies: react: ^16.8.0 || 17.x @@ -5021,11 +5335,11 @@ packages: dependencies: prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 dev: false - /@react-native-async-storage/async-storage/1.17.12: + /@react-native-async-storage/async-storage@1.17.12: resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} peerDependencies: react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 @@ -5036,11 +5350,11 @@ packages: merge-options: 3.0.4 dev: false - /@repeaterjs/repeater/3.0.4: + /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true - /@rollup/plugin-babel/6.0.3: + /@rollup/plugin-babel@6.0.3: resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5059,7 +5373,7 @@ packages: '@rollup/pluginutils': 5.0.2 dev: false - /@rollup/pluginutils/4.2.1: + /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} dependencies: @@ -5067,7 +5381,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5081,34 +5395,34 @@ packages: picomatch: 2.3.1 dev: false - /@sideway/address/4.1.4: + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@sideway/formula/3.0.0: + /@sideway/formula@3.0.0: resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} dev: true - /@sideway/pinpoint/2.0.0: + /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sinclair/typebox/0.25.21: + /@sinclair/typebox@0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 - /@size-limit/esbuild/8.2.4_size-limit@8.2.4: + /@size-limit/esbuild@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-kPgNfpwUvBD98s5axlf1UciFg4Ki4AYSl/cOmSyyYBuzksHiwW7Myeu0w4mTxtV9nwBFbkrrNXqszE7b+OhFLA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} peerDependencies: @@ -5119,7 +5433,7 @@ packages: size-limit: 8.2.4 dev: true - /@size-limit/file/8.2.4_size-limit@8.2.4: + /@size-limit/file@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-xLuF97W7m7lxrRJvqXRlxO/4t7cpXtfxOnjml/t4aRVUCMXLdyvebRr9OM4jjoK8Fmiz8jomCbETUCI3jVhLzA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} peerDependencies: @@ -5129,17 +5443,17 @@ packages: size-limit: 8.2.4 dev: true - /@size-limit/preset-small-lib/8.2.4_size-limit@8.2.4: + /@size-limit/preset-small-lib@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-AL4384oBgMcDPlNblgWHreqFSSOui0J9NbgyHhegB1h8AgRyHbdVGC3yWLpEESYQXHYnKdbNrYeRE/TclsViog==} peerDependencies: size-limit: 8.2.4 dependencies: - '@size-limit/esbuild': 8.2.4_size-limit@8.2.4 - '@size-limit/file': 8.2.4_size-limit@8.2.4 + '@size-limit/esbuild': 8.2.4(size-limit@8.2.4) + '@size-limit/file': 8.2.4(size-limit@8.2.4) size-limit: 8.2.4 dev: true - /@stefanprobst/rehype-shiki/2.2.0_shiki@0.12.1: + /@stefanprobst/rehype-shiki@2.2.0(shiki@0.10.1): resolution: {integrity: sha512-X/m9hUMifZYJk77pc9dTl8Q5DLWdXegzmHhPZ5yraFpQXG9n/m2jKMLvIR7F6gI8l5plj6aNx/qcMCMnfBwBOA==} engines: {node: '>=14.17', yarn: 1.x} peerDependencies: @@ -5150,15 +5464,15 @@ packages: parse-numeric-range: 1.3.0 remark-parse: 10.0.1 remark-rehype: 10.1.0 - shiki: 0.12.1 - shiki-renderer-hast: 1.1.5_shiki@0.12.1 + shiki: 0.10.1 + shiki-renderer-hast: 1.1.5(shiki@0.10.1) unified: 10.1.2 unist-util-visit: 4.1.1 transitivePeerDependencies: - supports-color dev: false - /@stefanprobst/remark-shiki/2.1.0_shiki@0.12.1: + /@stefanprobst/remark-shiki@2.1.0(shiki@0.10.1): resolution: {integrity: sha512-cIQBMke/gP2W8sqxW2QW0qWQFbPnE8WQU4k32lKwEAOm/hZRuXxULRDdhNgJzMRoZBtVedyuW0RsedKKD94CCQ==} engines: {node: '>=14.17', yarn: 1.x} peerDependencies: @@ -5166,22 +5480,22 @@ packages: dependencies: json5: 2.2.3 parse-numeric-range: 1.3.0 - shiki: 0.12.1 + shiki: 0.10.1 unified: 10.1.2 unist-util-visit: 4.1.1 dev: false - /@swc/helpers/0.4.11: + /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: tslib: 2.5.0 - /@testing-library/dom/8.19.0: + /@testing-library/dom@8.19.0: resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/aria-query': 4.2.2 aria-query: 5.1.3 chalk: 4.1.2 @@ -5190,12 +5504,12 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom/5.16.5: + /@testing-library/jest-dom@5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.0.1 - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.6 '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.1.3 chalk: 3.0.0 @@ -5205,7 +5519,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks/8.0.1_x4rus6jnwzjq3zgm4bvjbdzauy: + /@testing-library/react-hooks@8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -5221,53 +5535,53 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.6 '@types/react': 17.0.53 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-error-boundary: 3.1.4_react@17.0.2 - react-test-renderer: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-error-boundary: 3.1.4(react@17.0.2) + react-test-renderer: 17.0.2(react@17.0.2) dev: true - /@testing-library/react/12.1.5_sfoxds7t5ydpegc3knd667wn6m: + /@testing-library/react@12.1.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} engines: {node: '>=12'} peerDependencies: react: <18.0.0 react-dom: <18.0.0 dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.6 '@testing-library/dom': 8.19.0 '@types/react-dom': 17.0.18 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: true - /@theguild/components/1.12.0_zsjcj4gvi24ks76nprapl4hsmq: + /@theguild/components@1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} peerDependencies: react: ^17.0.2 react-dom: ^17.0.2 dependencies: - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 - '@algolia/autocomplete-plugin-algolia-insights': 1.7.2_nl7ecob7oenl7dfhoewptlc4ye - '@algolia/autocomplete-plugin-query-suggestions': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1) + '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-theme-classic': 1.7.2 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@radix-ui/react-navigation-menu': 0.1.2_sfoxds7t5ydpegc3knd667wn6m + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@radix-ui/react-navigation-menu': 0.1.2(react-dom@17.0.2)(react@17.0.2) algoliasearch: 4.14.2 - focus-trap-react: 9.0.2_sfoxds7t5ydpegc3knd667wn6m + focus-trap-react: 9.0.2(react-dom@17.0.2)(react@17.0.2) polished: 4.2.2 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-instantsearch-dom: 6.17.0_kr5x6cjikajrhwznglqptdxk4q - react-paginate: 7.1.5_react@17.0.2 - react-player: 2.11.0_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-instantsearch-dom: 6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2) + react-paginate: 7.1.5(react@17.0.2) + react-player: 2.11.0(react@17.0.2) search-insights: 2.2.1 tinykeys: 1.4.0 - twin.macro: 2.8.2 - use-debounce: 8.0.4_react@17.0.2 + twin.macro: 2.8.2(ts-node@10.9.1) + use-debounce: 8.0.4(react@17.0.2) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -5275,92 +5589,82 @@ packages: - ts-node dev: false - /@tokenizer/token/0.3.0: + /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - /@types/accepts/1.3.5: + /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: '@types/node': 18.15.5 - /@types/acorn/4.0.6: + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/aria-query/4.2.2: + /@types/aria-query@4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.2 - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 '@types/node': 18.15.5 - /@types/busboy/1.5.0: - resolution: {integrity: sha512-ncOOhwmyFDW76c/Tuvv9MA9VGYUCn8blzyWmzYELcNGDb0WXWLSmFi7hJq25YdRBYJrmMBB5jZZwUjlJe9HCjQ==} - dependencies: - '@types/node': 18.15.5 - dev: false - - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 18.15.5 - /@types/content-disposition/0.5.5: + /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} - /@types/cookies/0.7.7: + /@types/cookies@0.7.7: resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} dependencies: '@types/connect': 3.4.35 @@ -5368,42 +5672,42 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.15.5 - /@types/cors/2.8.13: + /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: '@types/node': 18.15.5 dev: false - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: false - /@types/estree-jsx/0.0.1: + /@types/estree-jsx@0.0.1: resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/estree-jsx/1.0.0: + /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false - /@types/express-serve-static-core/4.17.31: + /@types/express-serve-static-core@4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: '@types/node': 18.15.5 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 - /@types/express/4.17.14: + /@types/express@4.17.14: resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} dependencies: '@types/body-parser': 1.19.2 @@ -5411,16 +5715,16 @@ packages: '@types/qs': 6.9.7 '@types/serve-static': 1.15.0 - /@types/extract-files/8.1.1: + /@types/extract-files@8.1.1: resolution: {integrity: sha512-dMJJqBqyhsfJKuK7p7HyyNmki7qj1AlwhUKWx6KrU7i1K2T2SPsUsSUTWFmr/sEM1q8rfR8j5IyUmYrDbrhfjQ==} dev: false - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 18.15.5 - /@types/graphql-upload/16.0.0: + /@types/graphql-upload@16.0.0: resolution: {integrity: sha512-X2YD1w9cCYSRPFmYDUwfdNNcgjK3TP1uqZfmKvI9/jdGizkpkj0Q/gOzJkkPnpIhR8z0UK4lNtgeQmVW5PsyzA==} dependencies: '@types/express': 4.17.14 @@ -5428,59 +5732,59 @@ packages: fs-capacitor: 8.0.0 graphql: 16.6.0 - /@types/hast/2.3.4: + /@types/hast@2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/hoist-non-react-statics/3.3.1: + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: '@types/react': 17.0.53 hoist-non-react-statics: 3.3.2 dev: false - /@types/http-assert/1.5.3: + /@types/http-assert@1.5.3: resolution: {integrity: sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==} - /@types/http-errors/2.0.1: + /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - /@types/is-ci/3.0.0: + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.7.1 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - /@types/jest/29.5.0: + /@types/jest@29.5.0: resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 - /@types/js-cookie/2.2.7: + /@types/js-cookie@2.2.7: resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} dev: false - /@types/js-yaml/4.0.5: + /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: false - /@types/jsdom/20.0.0: + /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: '@types/node': 18.15.5 @@ -5488,15 +5792,15 @@ packages: parse5: 7.1.1 dev: true - /@types/keygrip/1.0.2: + /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} - /@types/koa-compose/3.2.5: + /@types/koa-compose@3.2.5: resolution: {integrity: sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==} dependencies: '@types/koa': 2.13.5 - /@types/koa/2.13.5: + /@types/koa@2.13.5: resolution: {integrity: sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==} dependencies: '@types/accepts': 1.3.5 @@ -5508,213 +5812,203 @@ packages: '@types/koa-compose': 3.2.5 '@types/node': 18.15.5 - /@types/lodash-es/4.17.7: + /@types/lodash-es@4.17.7: resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} dependencies: '@types/lodash': 4.14.191 dev: true - /@types/lodash.mergewith/4.6.6: + /@types/lodash.mergewith@4.6.6: resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} dependencies: '@types/lodash': 4.14.191 dev: false - /@types/lodash.sortby/4.7.7: - resolution: {integrity: sha512-J/4IS+jQopGBrrRetBXDCX0KnSeXJZ0rOTmGAxR9MWGV24YdHxX8IRi9LCGAU9GKWlBov9KRSfQpuup9PReqrw==} - dependencies: - '@types/lodash': 4.14.191 - dev: true - - /@types/lodash/4.14.191: + /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - /@types/mdast/3.0.10: + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/mdx/2.0.3: + /@types/mdx@2.0.3: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: false - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - /@types/minimatch/3.0.5: + /@types/minimatch@3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/mkdirp/1.0.2: + /@types/mkdirp@1.0.2: resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} dependencies: '@types/node': 18.15.5 dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.15.5: + /@types/node@18.15.5: resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/object-path/0.11.1: - resolution: {integrity: sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==} - dev: false - - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - /@types/randomstring/1.1.8: + /@types/randomstring@1.1.8: resolution: {integrity: sha512-NPOJcW+TTjT9Qiog0UjSoG3Sj24c7EfzZO39BU9E61D7fQtwNmBNblyQhSsK9+5s9Fm0o31rvX+ZyZkpE/c7jA==} dev: true - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom/17.0.18: + /@types/react-dom@17.0.18: resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} dependencies: '@types/react': 17.0.53 dev: true - /@types/react-dom/18.0.11: + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 17.0.53 dev: true - /@types/react/17.0.53: + /@types/react@17.0.53: resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.1 - /@types/scheduler/0.16.2: + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - /@types/semver/6.2.3: + /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /@types/serve-static/1.15.0: + /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 '@types/node': 18.15.5 - /@types/sha1/1.1.3: + /@types/sha1@1.1.3: resolution: {integrity: sha512-bXfx/6xrPu1l6pLItGRMPX00lhnJavpj2qiQeLHflXvL2Ix97aC8FTF2/pQoqukRzcCwKyN3csZvOLzamIoaSA==} dependencies: '@types/node': 18.15.5 dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - /@types/testing-library__jest-dom/5.14.5: + /@types/testing-library__jest-dom@5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: '@types/jest': 29.5.0 dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/unist/2.0.6: + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/wait-on/5.3.1: + /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: '@types/node': 18.15.5 dev: true - /@types/warning/3.0.0: + /@types/warning@3.0.0: resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} dev: false - /@types/ws/8.5.3: + /@types/ws@8.5.3: resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} dependencies: '@types/node': 18.15.5 - /@types/ws/8.5.4: + /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: '@types/node': 18.15.5 dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - /@types/yargs/17.0.13: + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 21.0.0 - /@vitejs/plugin-react-refresh/1.3.6: + /@vitejs/plugin-react-refresh@1.3.6: resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} engines: {node: '>=12.0.0'} deprecated: This package has been deprecated in favor of @vitejs/plugin-react dependencies: - '@babel/core': 7.19.6 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.19.6 + '@babel/core': 7.21.0 + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.0) '@rollup/pluginutils': 4.2.1 react-refresh: 0.10.0 transitivePeerDependencies: - supports-color dev: true - /@xobotyi/scrollbar-width/1.9.5: + /@xobotyi/scrollbar-width@1.9.5: resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} dev: false - /@zeit/schemas/2.29.0: + /@zeit/schemas@2.29.0: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} dev: true - /abort-controller/3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - /abstract-logging/2.0.1: + /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -5722,14 +6016,14 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.8.1 acorn-walk: 8.2.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx@5.3.2(acorn@8.8.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5737,7 +6031,7 @@ packages: acorn: 8.8.1 dev: false - /acorn-node/1.8.2: + /acorn-node@1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: acorn: 7.4.1 @@ -5745,28 +6039,27 @@ packages: xtend: 4.0.2 dev: false - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: false - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /acorn/8.8.1: + /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -5775,7 +6068,7 @@ packages: - supports-color dev: true - /aggregate-error/4.0.1: + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -5783,15 +6076,17 @@ packages: indent-string: 5.0.0 dev: true - /ajv-formats/2.1.1: + /ajv-formats@2.1.1(ajv@8.11.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true dependencies: ajv: 8.11.0 - /ajv/8.11.0: + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 @@ -5799,7 +6094,7 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper/3.11.1_algoliasearch@4.14.2: + /algoliasearch-helper@3.11.1(algoliasearch@4.14.2): resolution: {integrity: sha512-mvsPN3eK4E0bZG0/WlWJjeqe/bUD2KOEVOl0GyL/TGXn6wcpZU8NOuztGHCUKXkyg5gq6YzUakVTmnmSSO5Yiw==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -5808,7 +6103,7 @@ packages: algoliasearch: 4.14.2 dev: false - /algoliasearch/4.14.2: + /algoliasearch@4.14.2: resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} dependencies: '@algolia/cache-browser-local-storage': 4.14.2 @@ -5827,93 +6122,92 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /altair-static-slim/5.0.9: + /altair-static-slim@5.0.9: resolution: {integrity: sha512-PlG7yCBfV+dvBWRJBFb/v9m8N7lZcBTFdYNV1WIQfHW7w/sU8yat35uxGoAQ9K7XkOHNpRF0wdyRqmGwtro0bg==} dev: false - /ansi-align/3.0.1: + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - /ansi-escapes/6.0.0: + /ansi-escapes@6.0.0: resolution: {integrity: sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==} engines: {node: '>=14.16'} dependencies: - type-fest: 3.2.0 + type-fest: 3.6.1 dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arch/2.2.0: + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archy/1.0.0: + /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-hidden/1.2.1_h7fc2el62uaa77gho3xhys6ola: + /aria-hidden@1.2.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==} engines: {node: '>=10'} peerDependencies: @@ -5928,36 +6222,36 @@ packages: tslib: 2.5.0 dev: false - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.0.5 dev: true - /array-differ/3.0.0: + /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} dev: true - /array-find-index/1.0.2: + /array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} dev: true - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array-uniq/1.0.2: + /array-uniq@1.0.2: resolution: {integrity: sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==} engines: {node: '>=0.10.0'} dev: false - /array.prototype.flat/1.3.0: + /array.prototype.flat@1.3.0: resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} dependencies: @@ -5967,47 +6261,47 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /arrgv/1.0.2: + /arrgv@1.0.2: resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} engines: {node: '>=8.0.0'} dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify/2.0.1: + /arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} dev: true - /arrify/3.0.0: + /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - /astring/1.8.3: + /astring@1.8.3: resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} hasBin: true dev: false - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /atomic-sleep/1.0.0: + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - /auto-bind/4.0.0: + /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} - /autoprefixer/10.4.13_postcss@8.4.21: + /autoprefixer@10.4.13(postcss@8.4.21): resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -6023,7 +6317,7 @@ packages: postcss-value-parser: 4.2.0 dev: false - /ava/5.2.0: + /ava@5.2.0: resolution: {integrity: sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==} engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'} hasBin: true @@ -6082,12 +6376,12 @@ packages: - supports-color dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /avvio/8.2.0: + /avvio@8.2.0: resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} dependencies: archy: 1.0.0 @@ -6096,7 +6390,7 @@ packages: transitivePeerDependencies: - supports-color - /axios/0.27.2: + /axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: follow-redirects: 1.15.2 @@ -6105,7 +6399,7 @@ packages: - debug dev: true - /babel-jest/29.5.0_@babel+core@7.19.6: + /babel-jest@29.5.0(@babel/core@7.19.6): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6118,18 +6412,18 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.19.6 + babel-preset-jest: 29.5.0(@babel/core@7.19.6) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 transitivePeerDependencies: - supports-color - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -6137,36 +6431,36 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.0 + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 - /babel-plugin-macros/2.8.0: + /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 cosmiconfig: 6.0.0 resolve: 1.22.1 dev: false - /babel-plugin-macros/3.1.0: + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false - /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.19.6: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.19.6): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -6175,20 +6469,20 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.6 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.6 - - /babel-preset-fbjs/3.4.0_@babel+core@7.19.6: + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.19.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.19.6) + + /babel-preset-fbjs@3.4.0(@babel/core@7.21.0): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 @@ -6196,38 +6490,38 @@ packages: '@babel/core': optional: true dependencies: - '@babel/core': 7.19.6 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-proposal-object-rest-spread': 7.19.4_@babel+core@7.19.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-block-scoping': 7.20.0_@babel+core@7.19.6 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-destructuring': 7.20.0_@babel+core@7.19.6 - '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.6 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.19.6 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-parameters': 7.20.1_@babel+core@7.19.6 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.6 + '@babel/core': 7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.21.0) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color - /babel-preset-jest/29.5.0_@babel+core@7.19.6: + /babel-preset-jest@29.5.0(@babel/core@7.19.6): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6238,55 +6532,42 @@ packages: dependencies: '@babel/core': 7.19.6 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) - /backo2/1.0.2: + /backo2@1.0.2: resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} - /bail/2.0.2: + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /big-integer/1.6.51: + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /blueimp-md5/2.19.0: + /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true - /bob-esbuild-cli/4.0.0: - resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} - engines: {node: '>=14.13.1'} - hasBin: true - peerDependencies: - bob-esbuild: ^4.0.0 - peerDependenciesMeta: - bob-esbuild: - optional: true - dependencies: - commander: 9.4.1 - dev: true - - /bob-esbuild-cli/4.0.0_bob-esbuild@4.0.3: + /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} hasBin: true @@ -6296,11 +6577,11 @@ packages: bob-esbuild: optional: true dependencies: - bob-esbuild: 4.0.3_zofgjzmca2gwtey4x4go3tg4j4 + bob-esbuild: 4.0.3(esbuild@0.17.12)(typescript@4.9.5) commander: 9.4.1 dev: true - /bob-esbuild-plugin/4.0.0_ywuimuzxrww3qfvp225qpyckgu: + /bob-esbuild-plugin@4.0.0(esbuild@0.17.12)(rollup@2.79.1): resolution: {integrity: sha512-Ymk0kEPc0JhL3eZQVnWpjT4/HMX8Hw7aD5CzqSvNAXeUgaR1+8m5O1RtkP/D42ZwNv+FPgD1wKM4pdoQ4ScmAQ==} peerDependencies: esbuild: '>=0.14.39' @@ -6316,7 +6597,7 @@ packages: rollup: 2.79.1 dev: true - /bob-esbuild/4.0.3_zofgjzmca2gwtey4x4go3tg4j4: + /bob-esbuild@4.0.3(esbuild@0.17.12)(typescript@4.9.5): resolution: {integrity: sha512-9AGuh6V5Whsditj5n2oJjWAvHwgadgD2HD0qZ4rEBwY9tpj8YbfYeiaXQQV9qJxwT9oUYOsQE53wPNYBFDIfJA==} peerDependencies: esbuild: '>=0.14.39' @@ -6328,13 +6609,13 @@ packages: optional: true dependencies: '@pnpm/types': 8.8.0 - bob-esbuild-plugin: 4.0.0_ywuimuzxrww3qfvp225qpyckgu + bob-esbuild-plugin: 4.0.0(esbuild@0.17.12)(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 typescript: 4.9.5 dev: true - /bob-ts/4.1.1_egtog7kfy74nw7rr3bmqx36oni: + /bob-ts@4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5): resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -6349,13 +6630,13 @@ packages: optional: true dependencies: '@types/node': 18.15.5 - bob-esbuild-plugin: 4.0.0_ywuimuzxrww3qfvp225qpyckgu + bob-esbuild-plugin: 4.0.0(esbuild@0.17.12)(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 typescript: 4.9.5 dev: true - /bob-tsm/1.1.2_zofgjzmca2gwtey4x4go3tg4j4: + /bob-tsm@1.1.2(esbuild@0.17.12)(typescript@4.9.5): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -6372,7 +6653,7 @@ packages: fsevents: 2.3.2 dev: true - /body-parser/1.20.1: + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -6392,7 +6673,7 @@ packages: - supports-color dev: true - /boxen/7.0.0: + /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} dependencies: @@ -6406,38 +6687,38 @@ packages: wrap-ansi: 8.0.1 dev: true - /bplist-parser/0.2.0: + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /breakword/1.0.5: + /breakword@1.0.5: resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6445,65 +6726,81 @@ packages: caniuse-lite: 1.0.30001429 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) + + /browserslist@4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001460 + electron-to-chromium: 1.4.284 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10(browserslist@4.21.5) - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /bufferutil/4.0.7: + /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.5.0 - dev: true - /bundle-name/3.0.0: + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 dev: true - /busboy/1.6.0: + /busboy@0.3.1: + resolution: {integrity: sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==} + engines: {node: '>=4.5.0'} + dependencies: + dicer: 0.3.0 + dev: false + + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: false - /bytes-iec/3.1.1: + /bytes-iec@3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} engines: {node: '>= 0.8'} dev: true - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: true - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - /c8/7.13.0: + /c8@7.13.0: resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} hasBin: true @@ -6522,34 +6819,34 @@ packages: yargs-parser: 20.2.9 dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /callsites/4.0.0: + /callsites@4.0.0: resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} engines: {node: '>=12.20'} dev: true - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 tslib: 2.5.0 - /camelcase-css/2.0.1: + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: false - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -6558,7 +6855,7 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys/8.0.2: + /camelcase-keys@8.0.2: resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} engines: {node: '>=14.16'} dependencies: @@ -6568,48 +6865,51 @@ packages: type-fest: 2.19.0 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /camelcase/7.0.0: + /camelcase@7.0.0: resolution: {integrity: sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==} engines: {node: '>=14.16'} dev: true - /caniuse-lite/1.0.30001429: + /caniuse-lite@1.0.30001429: resolution: {integrity: sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==} - /capital-case/1.0.4: + /caniuse-lite@1.0.30001460: + resolution: {integrity: sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==} + + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 - /cbor/8.1.0: + /cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} dependencies: nofilter: 3.1.0 dev: true - /ccount/2.0.1: + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false - /chalk-template/0.4.0: + /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} dependencies: chalk: 4.1.2 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -6617,7 +6917,7 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -6625,23 +6925,23 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk/5.0.1: + /chalk@5.0.1: resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - /change-case-all/1.0.15: + /change-case-all@1.0.15: resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} dependencies: change-case: 4.1.2 @@ -6655,7 +6955,7 @@ packages: upper-case: 2.0.2 upper-case-first: 2.0.2 - /change-case/4.1.2: + /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} dependencies: camel-case: 4.1.2 @@ -6671,45 +6971,45 @@ packages: snake-case: 3.0.4 tslib: 2.5.0 - /changesets-github-release/0.1.0: + /changesets-github-release@0.1.0: resolution: {integrity: sha512-ai++eLjlEjW4flLKExS8Li2a5qocO+N3YTR13aZCAwt4bgj6MYXgPfdoukLktaQXs3QUmaHz5dG2ISot/hZD5g==} hasBin: true dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - /char-regex/2.0.1: + /char-regex@2.0.1: resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} engines: {node: '>=12.20'} dev: false - /character-entities-html4/2.1.0: + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: false - /character-entities-legacy/3.0.0: + /character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} dev: false - /character-entities/2.0.2: + /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: false - /character-reference-invalid/2.0.1: + /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /charenc/0.0.2: + /charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -6723,47 +7023,47 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chunkd/2.0.1: + /chunkd@2.0.1: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} dev: true - /ci-info/3.7.1: + /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} - /ci-parallel-vars/1.0.1: + /ci-parallel-vars@1.0.1: resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - /classnames/2.3.2: + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /clean-set/1.1.2: + /clean-set@1.1.2: resolution: {integrity: sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==} dev: false - /clean-stack/4.2.0: + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /clean-yaml-object/0.1.0: + /clean-yaml-object@0.1.0: resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} engines: {node: '>=0.10.0'} dev: true - /cli-boxes/3.0.0: + /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} dev: true - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6771,7 +7071,7 @@ packages: string-width: 5.1.2 dev: true - /clipboardy/3.0.0: + /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6780,14 +7080,14 @@ packages: is-wsl: 2.2.0 dev: true - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -6795,7 +7095,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -6803,57 +7103,57 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - /code-excerpt/4.0.0: + /code-excerpt@4.0.0: resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: convert-to-spaces: 2.0.1 dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string/1.9.1: + /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /color/3.2.1: + /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: color-convert: 1.9.3 color-string: 1.9.1 dev: false - /color/4.2.3: + /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} dependencies: @@ -6861,67 +7161,67 @@ packages: color-string: 1.9.1 dev: false - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /comma-separated-tokens/2.0.2: + /comma-separated-tokens@2.0.2: resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} dev: false - /commander/10.0.0: + /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} dev: true - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander/5.1.0: + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: true - /commander/6.2.1: + /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: true - /commander/7.2.0: + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} dev: false - /commander/8.3.0: + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: false - /commander/9.4.1: + /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} dev: true - /common-path-prefix/3.0.0: + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true - /common-tags/1.8.2: + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /compression/1.7.4: + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -6936,14 +7236,14 @@ packages: - supports-color dev: true - /compute-scroll-into-view/1.0.14: + /compute-scroll-into-view@1.0.14: resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} dev: false - /concat-map/0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /concat-map@0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - /concordance/5.0.4: + /concordance@5.0.4: resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} dependencies: @@ -6957,7 +7257,7 @@ packages: well-known-symbols: 2.0.0 dev: true - /concurrently/7.6.0: + /concurrently@7.6.0: resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} hasBin: true @@ -6965,7 +7265,7 @@ packages: chalk: 4.1.2 date-fns: 2.29.3 lodash: 4.17.21 - rxjs: 7.5.7 + rxjs: 7.8.0 shell-quote: 1.7.4 spawn-command: 0.0.2-1 supports-color: 8.1.1 @@ -6973,66 +7273,66 @@ packages: yargs: 17.6.2 dev: true - /constant-case/3.0.4: + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case: 2.0.2 - /content-disposition/0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + /content-disposition@0.5.2: + resolution: {integrity: sha1-DPaLud318r55YcOoUXjLhdunjLQ=} engines: {node: '>= 0.6'} dev: true - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: true - /content-type/1.0.4: + /content-type@1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /convert-to-spaces/2.0.1: + /convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie/0.5.0: + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - /copy-to-clipboard/3.3.1: + /copy-to-clipboard@3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} dependencies: toggle-selection: 1.0.6 dev: false - /copy-to-clipboard/3.3.2: + /copy-to-clipboard@3.3.2: resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} dependencies: toggle-selection: 1.0.6 dev: false - /core-js/3.26.0: + /core-js@3.26.0: resolution: {integrity: sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==} requiresBuild: true dev: false - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -7040,7 +7340,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig/6.0.0: + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} dependencies: @@ -7051,7 +7351,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/7.1.0: + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: @@ -7062,7 +7362,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/8.1.3: + /cosmiconfig@8.1.3: resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} engines: {node: '>=14'} dependencies: @@ -7072,25 +7372,24 @@ packages: path-type: 4.0.0 dev: true - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - /cross-env/7.0.3: + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true dependencies: cross-spawn: 7.0.3 - /cross-fetch/3.1.5: + /cross-fetch@3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: node-fetch: 2.6.7 transitivePeerDependencies: - encoding - /cross-spawn-async/2.2.5: + /cross-spawn-async@2.2.5: resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} deprecated: cross-spawn no longer requires a build toolchain, use it instead dependencies: @@ -7098,7 +7397,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/5.1.0: + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -7106,7 +7405,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -7114,7 +7413,7 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /cross-undici-fetch/0.4.14: + /cross-undici-fetch@0.4.14: resolution: {integrity: sha512-CCep44A/baoO8kYJBIR1cRO/tRAk29xzb/tH3O85OtgwZGkL5I0tJZ47ccZdrnAJxrl5tlaYhAOx09fJXMcUqQ==} dependencies: abort-controller: 3.0.0 @@ -7128,35 +7427,35 @@ packages: - encoding dev: false - /crypt/0.0.2: + /crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: true - /crypto-random-string/4.0.0: + /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} dependencies: type-fest: 1.4.0 dev: true - /css-box-model/1.2.1: + /css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: tiny-invariant: 1.3.1 dev: false - /css-color-names/0.0.4: + /css-color-names@0.0.4: resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} dev: false - /css-in-js-utils/2.0.1: + /css-in-js-utils@2.0.1: resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} dependencies: hyphenate-style-name: 1.0.4 isobject: 3.0.1 dev: false - /css-tree/1.1.3: + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} dependencies: @@ -7164,55 +7463,55 @@ packages: source-map: 0.6.1 dev: false - /css-unit-converter/1.1.2: + /css-unit-converter@1.1.2: resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} dev: false - /css.escape/1.5.1: + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /csstype/3.0.9: + /csstype@3.0.9: resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==} dev: false - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - /csv-generate/3.4.3: + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse/4.16.3: + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify/5.6.5: + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv/5.5.3: + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -7222,34 +7521,34 @@ packages: stream-transform: 2.1.3 dev: true - /currently-unhandled/0.4.1: + /currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} dependencies: array-find-index: 1.0.2 dev: true - /d3-array/1.2.4: + /d3-array@1.2.4: resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} dev: false - /d3-array/3.2.0: + /d3-array@3.2.0: resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 dev: false - /d3-axis/1.0.12: + /d3-axis@1.0.12: resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==} dev: false - /d3-axis/3.0.0: + /d3-axis@3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} dev: false - /d3-brush/1.1.6: + /d3-brush@1.1.6: resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==} dependencies: d3-dispatch: 1.0.6 @@ -7259,7 +7558,7 @@ packages: d3-transition: 1.3.2 dev: false - /d3-brush/3.0.0: + /d3-brush@3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} dependencies: @@ -7267,69 +7566,69 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord/1.0.6: + /d3-chord@1.0.6: resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==} dependencies: d3-array: 1.2.4 d3-path: 1.0.9 dev: false - /d3-chord/3.0.1: + /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-collection/1.0.7: + /d3-collection@1.0.7: resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} dev: false - /d3-color/3.1.0: + /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} dev: false - /d3-contour/1.3.2: + /d3-contour@1.3.2: resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==} dependencies: d3-array: 1.2.4 dev: false - /d3-contour/4.0.0: + /d3-contour@4.0.0: resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-delaunay/6.0.2: + /d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch/1.0.6: + /d3-dispatch@1.0.6: resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} dev: false - /d3-dispatch/3.0.1: + /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag/1.2.5: + /d3-drag@1.2.5: resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==} dependencies: d3-dispatch: 1.0.6 d3-selection: 1.4.2 dev: false - /d3-drag/3.0.0: + /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} dependencies: @@ -7337,7 +7636,7 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv/1.2.0: + /d3-dsv@1.2.0: resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} hasBin: true dependencies: @@ -7346,7 +7645,7 @@ packages: rw: 1.3.3 dev: false - /d3-dsv/3.0.1: + /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true @@ -7356,29 +7655,29 @@ packages: rw: 1.3.3 dev: false - /d3-ease/1.0.7: + /d3-ease@1.0.7: resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} dev: false - /d3-ease/3.0.1: + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch/1.2.0: + /d3-fetch@1.2.0: resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==} dependencies: d3-dsv: 1.2.0 dev: false - /d3-fetch/3.0.1: + /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 dev: false - /d3-force/1.2.1: + /d3-force@1.2.1: resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} dependencies: d3-collection: 1.0.7 @@ -7387,7 +7686,7 @@ packages: d3-timer: 1.0.10 dev: false - /d3-force/3.0.0: + /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} dependencies: @@ -7396,94 +7695,94 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format/1.4.5: + /d3-format@1.4.5: resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} dev: false - /d3-format/3.1.0: + /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo/1.12.1: + /d3-geo@1.12.1: resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} dependencies: d3-array: 1.2.4 dev: false - /d3-geo/3.0.1: + /d3-geo@3.0.1: resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-hierarchy/1.1.9: + /d3-hierarchy@1.1.9: resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} dev: false - /d3-hierarchy/3.1.2: + /d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} dev: false - /d3-interpolate/1.4.0: + /d3-interpolate@1.4.0: resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} dependencies: d3-color: 3.1.0 dev: false - /d3-interpolate/3.0.1: + /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 dev: false - /d3-path/1.0.9: + /d3-path@1.0.9: resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} dev: false - /d3-path/3.0.1: + /d3-path@3.0.1: resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} engines: {node: '>=12'} dev: false - /d3-polygon/1.0.6: + /d3-polygon@1.0.6: resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==} dev: false - /d3-polygon/3.0.1: + /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree/1.0.7: + /d3-quadtree@1.0.7: resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} dev: false - /d3-quadtree/3.0.1: + /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random/1.1.2: + /d3-random@1.1.2: resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==} dev: false - /d3-random/3.0.1: + /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic/1.5.0: + /d3-scale-chromatic@1.5.0: resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==} dependencies: d3-color: 3.1.0 d3-interpolate: 1.4.0 dev: false - /d3-scale-chromatic/3.0.0: + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} dependencies: @@ -7491,7 +7790,7 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale/2.2.2: + /d3-scale@2.2.2: resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} dependencies: d3-array: 1.2.4 @@ -7502,7 +7801,7 @@ packages: d3-time-format: 2.3.0 dev: false - /d3-scale/4.0.2: + /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: @@ -7513,62 +7812,62 @@ packages: d3-time-format: 4.1.0 dev: false - /d3-selection/1.4.2: + /d3-selection@1.4.2: resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==} dev: false - /d3-selection/3.0.0: + /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape/1.3.7: + /d3-shape@1.3.7: resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} dependencies: d3-path: 1.0.9 dev: false - /d3-shape/3.1.0: + /d3-shape@3.1.0: resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-time-format/2.3.0: + /d3-time-format@2.3.0: resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} dependencies: d3-time: 1.1.0 dev: false - /d3-time-format/4.1.0: + /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.0.0 dev: false - /d3-time/1.1.0: + /d3-time@1.1.0: resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} dev: false - /d3-time/3.0.0: + /d3-time@3.0.0: resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-timer/1.0.10: + /d3-timer@1.0.10: resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} dev: false - /d3-timer/3.0.1: + /d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} dev: false - /d3-transition/1.3.2: + /d3-transition@1.3.2: resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==} dependencies: d3-color: 3.1.0 @@ -7579,7 +7878,7 @@ packages: d3-timer: 1.0.10 dev: false - /d3-transition/3.0.1_d3-selection@3.0.0: + /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: @@ -7593,11 +7892,11 @@ packages: d3-timer: 3.0.1 dev: false - /d3-voronoi/1.1.4: + /d3-voronoi@1.1.4: resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} dev: false - /d3-zoom/1.8.3: + /d3-zoom@1.8.3: resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==} dependencies: d3-dispatch: 1.0.6 @@ -7607,7 +7906,7 @@ packages: d3-transition: 1.3.2 dev: false - /d3-zoom/3.0.0: + /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} dependencies: @@ -7615,10 +7914,10 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3/5.16.0: + /d3@5.16.0: resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==} dependencies: d3-array: 1.2.4 @@ -7654,7 +7953,7 @@ packages: d3-zoom: 1.8.3 dev: false - /d3/7.6.1: + /d3@7.6.1: resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} engines: {node: '>=12'} dependencies: @@ -7686,11 +7985,11 @@ packages: d3-time: 3.0.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /dagre-d3/0.6.4: + /dagre-d3@0.6.4: resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==} dependencies: d3: 5.16.0 @@ -7699,19 +7998,19 @@ packages: lodash: 4.17.21 dev: false - /dagre/0.8.5: + /dagre@0.8.5: resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} dependencies: graphlib: 2.1.8 lodash: 4.17.21 dev: false - /data-uri-to-buffer/4.0.0: + /data-uri-to-buffer@4.0.0: resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} engines: {node: '>= 12'} dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -7720,21 +8019,26 @@ packages: whatwg-url: 11.0.0 dev: true - /dataloader/2.1.0: + /dataloader@2.1.0: resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} + dev: false + + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true - /date-fns/2.29.3: + /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} - /date-time/3.1.0: + /date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} dependencies: time-zone: 1.0.0 dev: true - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -7745,7 +8049,7 @@ packages: ms: 2.0.0 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -7756,7 +8060,7 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -7764,29 +8068,29 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decamelize/6.0.0: + /decamelize@6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /decimal.js/10.4.2: + /decimal.js@10.4.2: resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==} dev: true - /decode-named-character-reference/1.0.2: + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 dev: false - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - /deep-equal/2.0.5: + /deep-equal@2.0.5: resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} dependencies: call-bind: 1.0.2 @@ -7806,20 +8110,20 @@ packages: which-typed-array: 1.1.8 dev: true - /deep-extend/0.6.0: + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} - /default-browser-id/3.0.0: + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} dependencies: @@ -7827,7 +8131,7 @@ packages: untildify: 4.0.0 dev: true - /default-browser/3.1.0: + /default-browser@3.1.0: resolution: {integrity: sha512-SOHecvSoairSAWxEHP/0qcsld/KtI3DargfEuELQDyHIYmS2EMgdGhHOTC1GxaYr+NLUV6kDroeiSBfnNHnn8w==} engines: {node: '>=12'} dependencies: @@ -7837,22 +8141,22 @@ packages: xdg-default-browser: 2.1.0 dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - /define-lazy-prop/3.0.0: + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties/1.1.4: + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: @@ -7860,11 +8164,11 @@ packages: object-keys: 1.1.1 dev: true - /defined/1.0.1: + /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false - /del/7.0.0: + /del@7.0.0: resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} engines: {node: '>=14.16'} dependencies: @@ -7878,49 +8182,55 @@ packages: slash: 4.0.0 dev: true - /delaunator/5.0.0: + /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/2.0.0: + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dev: true - /dependency-graph/0.11.0: + /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: false - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - /detect-node-es/1.1.0: + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /detective/5.2.1: + /detective@5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} hasBin: true @@ -7930,135 +8240,141 @@ packages: minimist: 1.2.7 dev: false - /didyoumean/1.2.2: + /dicer@0.3.0: + resolution: {integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==} + engines: {node: '>=4.5.0'} + dependencies: + streamsearch: 0.1.2 + dev: false + + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true - /diff/5.1.0: + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: false - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false - /dom-accessibility-api/0.5.14: + /dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} dev: true - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} dependencies: webidl-conversions: 7.0.0 dev: true - /dompurify/2.4.0: + /dompurify@2.4.0: resolution: {integrity: sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==} dev: false - /dot-case/3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.5.0 - /dotenv/16.0.3: + /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} dev: false - /dset/3.1.2: + /dset@3.1.2: resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} engines: {node: '>=4'} dev: false - /duplexer/0.1.2: + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - /emittery/1.0.1: + /emittery@1.0.1: resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} engines: {node: '>=14.16'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /emoticon/4.0.1: + /emoticon@4.0.1: resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - /error-stack-parser/2.1.4: + /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 dev: false - /es-abstract/1.20.4: + /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} dependencies: @@ -8088,7 +8404,7 @@ packages: unbox-primitive: 1.0.2 dev: true - /es-get-iterator/1.1.2: + /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} dependencies: call-bind: 1.0.2 @@ -8101,13 +8417,13 @@ packages: isarray: 2.0.5 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -8116,7 +8432,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild/0.17.12: + /esbuild@0.17.12: resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} engines: {node: '>=12'} hasBin: true @@ -8145,32 +8461,32 @@ packages: '@esbuild/win32-ia32': 0.17.12 '@esbuild/win32-x64': 0.17.12 - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: false - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -8183,23 +8499,23 @@ packages: source-map: 0.6.1 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-util-attach-comments/2.1.0: + /estree-util-attach-comments@2.1.0: resolution: {integrity: sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==} dependencies: '@types/estree': 1.0.0 dev: false - /estree-util-build-jsx/2.2.0: + /estree-util-build-jsx@2.2.0: resolution: {integrity: sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==} dependencies: '@types/estree-jsx': 1.0.0 @@ -8207,11 +8523,11 @@ packages: estree-walker: 3.0.1 dev: false - /estree-util-is-identifier-name/2.0.1: + /estree-util-is-identifier-name@2.0.1: resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} dev: false - /estree-util-to-js/1.1.0: + /estree-util-to-js@1.1.0: resolution: {integrity: sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==} dependencies: '@types/estree-jsx': 1.0.0 @@ -8219,31 +8535,31 @@ packages: source-map: 0.7.4 dev: false - /estree-util-visit/1.2.0: + /estree-util-visit@1.2.0: resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} dependencies: '@types/estree-jsx': 1.0.0 '@types/unist': 2.0.6 dev: false - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker/3.0.1: + /estree-walker@3.0.1: resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} dev: false - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - /event-stream/3.3.4: + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: duplexer: 0.1.2 @@ -8255,18 +8571,18 @@ packages: through: 2.3.8 dev: true - /event-target-shim/5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /execa/0.2.2: + /execa@0.2.2: resolution: {integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ==} engines: {node: '>=0.12'} dependencies: @@ -8277,7 +8593,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/4.1.0: + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} dependencies: @@ -8292,7 +8608,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -8306,11 +8622,11 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8320,7 +8636,7 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 - /express/4.18.2: + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -8359,22 +8675,22 @@ packages: - supports-color dev: true - /extend-shallow/2.0.1: + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 dev: false - /extend/3.0.2: + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false - /extendable-error/0.1.7: + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -8383,24 +8699,24 @@ packages: tmp: 0.0.33 dev: true - /extract-files/13.0.0: + /extract-files@13.0.0: resolution: {integrity: sha512-FXD+2Tsr8Iqtm3QZy1Zmwscca7Jx3mMC5Crr+sEP1I303Jy1CYMuYCm7hRTplFNg3XdUavErkxnTzpaqdSoi6g==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} dependencies: is-plain-obj: 4.1.0 dev: false - /fast-decode-uri-component/1.0.1: + /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff/1.2.0: + /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -8410,53 +8726,53 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - /fast-json-stringify/5.4.0: + /fast-json-stringify@5.4.0: resolution: {integrity: sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==} dependencies: '@fastify/deepmerge': 1.1.0 ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1(ajv@8.11.0) fast-deep-equal: 3.1.3 fast-uri: 2.1.0 rfdc: 1.3.0 - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-querystring/1.0.0: + /fast-querystring@1.0.0: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} dependencies: fast-decode-uri-component: 1.0.1 - /fast-redact/3.1.2: + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} - /fast-shallow-equal/1.0.0: + /fast-shallow-equal@1.0.0: resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} dev: false - /fast-uri/2.1.0: + /fast-uri@2.1.0: resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==} - /fast-url-parser/1.1.3: + /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: punycode: 1.4.1 dev: true - /fastest-stable-stringify/2.0.2: + /fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} dev: false - /fastify-plugin/4.3.0: + /fastify-plugin@4.3.0: resolution: {integrity: sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==} - /fastify/4.11.0: + /fastify@4.11.0: resolution: {integrity: sha512-JteZ8pjEqd+6n+azQnQfSJV8MUMxAmxbvC2Dx/Mybj039Lf/u3kda9Kq84uy/huCpqCzZoyHIZS5JFGF3wLztw==} dependencies: '@fastify/ajv-compiler': 3.4.0 @@ -8477,20 +8793,20 @@ packages: transitivePeerDependencies: - supports-color - /fastq/1.13.0: + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - /fbjs-css-vars/1.0.2: + /fbjs-css-vars@1.0.2: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - /fbjs/3.0.4: + /fbjs@3.0.4: resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} dependencies: cross-fetch: 3.1.5 @@ -8503,7 +8819,7 @@ packages: transitivePeerDependencies: - encoding - /fetch-blob/3.2.0: + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} dependencies: @@ -8511,7 +8827,7 @@ packages: web-streams-polyfill: 3.2.1 dev: true - /figures/5.0.0: + /figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} dependencies: @@ -8519,7 +8835,7 @@ packages: is-unicode-supported: 1.3.0 dev: true - /file-type/18.2.1: + /file-type@18.2.1: resolution: {integrity: sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==} engines: {node: '>=14.16'} dependencies: @@ -8528,13 +8844,13 @@ packages: token-types: 5.0.1 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /finalhandler/1.2.0: + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: @@ -8549,7 +8865,7 @@ packages: - supports-color dev: true - /find-my-way/7.3.1: + /find-my-way@7.3.1: resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} engines: {node: '>=14'} dependencies: @@ -8557,18 +8873,18 @@ packages: fast-querystring: 1.0.0 safe-regex2: 2.0.0 - /find-root/1.1.0: + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -8576,29 +8892,29 @@ packages: path-exists: 4.0.0 dev: true - /find-up/6.3.0: + /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - locate-path: 7.1.1 + locate-path: 7.2.0 path-exists: 5.0.0 dev: true - /find-yarn-workspace-root2/1.2.16: + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /focus-lock/0.9.2: + /focus-lock@0.9.2: resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} engines: {node: '>=10'} dependencies: tslib: 2.5.0 dev: false - /focus-trap-react/9.0.2_sfoxds7t5ydpegc3knd667wn6m: + /focus-trap-react@9.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ZwhO5by6KG5r3dy48Lk00A1/0zNYw1Z3RZTN6O6kgAPsWFcwTFszOcQ1dLSfM8pIxpS/ttc7wTttJowjVT3jpg==} peerDependencies: prop-types: ^15.8.1 @@ -8610,17 +8926,17 @@ packages: dependencies: focus-trap: 6.9.4 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tabbable: 5.3.3 dev: false - /focus-trap/6.9.4: + /focus-trap@6.9.4: resolution: {integrity: sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==} dependencies: tabbable: 5.3.3 dev: false - /follow-redirects/1.15.2: + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -8630,13 +8946,13 @@ packages: optional: true dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /foreground-child/2.0.0: + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -8644,11 +8960,11 @@ packages: signal-exit: 3.0.7 dev: true - /form-data-encoder/1.7.2: + /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} dev: false - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -8657,7 +8973,7 @@ packages: mime-types: 2.1.35 dev: true - /formdata-node/4.4.1: + /formdata-node@4.4.1: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} dependencies: @@ -8665,22 +8981,22 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false - /formdata-polyfill/4.0.10: + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 dev: true - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - /fraction.js/4.2.0: + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /framer-motion/6.5.1_sfoxds7t5ydpegc3knd667wn6m: + /framer-motion@6.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0' @@ -8691,39 +9007,44 @@ packages: hey-listen: 1.0.8 popmotion: 11.0.3 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) style-value-types: 5.0.0 - tslib: 2.4.1 + tslib: 2.5.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false - /framesync/5.3.0: + /framesync@5.3.0: resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} dependencies: tslib: 2.5.0 dev: false - /framesync/6.0.1: + /framesync@6.0.1: resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} dependencies: tslib: 2.5.0 dev: false - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - /from/0.1.7: + /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true - /fs-capacitor/8.0.0: + /fs-capacitor@6.2.0: + resolution: {integrity: sha512-nKcE1UduoSKX27NSZlg879LdQc94OtbOsEmKMN2MBNudXREvijRKx2GEBsTMTfws+BrbkJoEuynbGSVRSpauvw==} + engines: {node: '>=10'} + dev: false + + /fs-capacitor@8.0.0: resolution: {integrity: sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==} engines: {node: ^14.17.0 || >=16.0.0} - /fs-extra/10.1.0: + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: @@ -8732,7 +9053,7 @@ packages: universalify: 2.0.0 dev: false - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8741,7 +9062,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8750,20 +9071,20 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -8773,19 +9094,19 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -8793,32 +9114,32 @@ packages: has-symbols: 1.0.3 dev: true - /get-nonce/1.0.1: + /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} dev: false - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - /get-stdin/9.0.0: + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} dev: true - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -8826,24 +9147,24 @@ packages: get-intrinsic: 1.1.3 dev: true - /github-slugger/1.4.0: + /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: false - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -8853,7 +9174,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob/9.2.1: + /glob@9.2.1: resolution: {integrity: sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: @@ -8863,11 +9184,11 @@ packages: path-scurry: 1.6.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -8878,7 +9199,7 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby/13.1.1: + /globby@13.1.1: resolution: {integrity: sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8889,7 +9210,7 @@ packages: slash: 4.0.0 dev: false - /globby/13.1.3: + /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8900,20 +9221,20 @@ packages: slash: 4.0.0 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphlib/2.1.8: + /graphlib@2.1.8: resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} dependencies: lodash: 4.17.21 dev: false - /graphql-ez/0.16.0_cqyb4buyc4habqgvcucexr22xm: + /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -8924,14 +9245,14 @@ packages: dependencies: '@envelop/core': 3.0.4 '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@pablosz/graphql-helix': 2.0.3_graphql@16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@pablosz/graphql-helix': 2.0.3(graphql@16.6.0) graphql: 16.6.0 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' - /graphql-ez/0.16.0_ddkhnomv6qakhz4wmciki3kakm: + /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -8942,15 +9263,14 @@ packages: dependencies: '@envelop/core': 3.0.4 '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - '@pablosz/graphql-helix': 2.0.3_graphql@17.0.0-alpha.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@pablosz/graphql-helix': 2.0.3(graphql@17.0.0-alpha.2) graphql: 17.0.0-alpha.2 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' - dev: true - /graphql-tag/2.12.6_graphql@16.6.0: + /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: @@ -8959,47 +9279,36 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /graphql-upload/16.0.2_graphql@16.6.0: - resolution: {integrity: sha512-enwIkZqUELdNH9lrjHlTNfj7gLitSa0EAX4TNXZtg2frnmQzPhpjH0l+6K7ft274fhoRCIcz8SKiNRJDf/cG4Q==} - engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} + /graphql-upload@13.0.0(graphql@16.6.0): + resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==} + engines: {node: ^12.22.0 || ^14.17.0 || >= 16.0.0} peerDependencies: - '@types/express': ^4.0.29 - '@types/koa': ^2.11.4 graphql: '*' - peerDependenciesMeta: - '@types/express': - optional: true - '@types/koa': - optional: true dependencies: - '@types/busboy': 1.5.0 - '@types/node': 18.15.5 - '@types/object-path': 0.11.1 - busboy: 1.6.0 - fs-capacitor: 8.0.0 + busboy: 0.3.1 + fs-capacitor: 6.2.0 graphql: 16.6.0 - http-errors: 2.0.0 + http-errors: 1.8.1 object-path: 0.11.8 dev: false - /graphql-ws/5.11.2_graphql@16.6.0: - resolution: {integrity: sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==} + /graphql-ws@5.11.3(graphql@16.6.0): + resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 - /graphql/16.6.0: + /graphql@16.6.0: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - /graphql/17.0.0-alpha.2: + /graphql@17.0.0-alpha.2: resolution: {integrity: sha512-aRAd/BQ5hSO0+l7x+sHBfJVUp2JUOjPTE/iwJ3BhtYNH/MC7n4gjlZbKvnBVFZZAczyMS3vezS4teEZivoqIzw==} engines: {node: ^14.19.0 || ^16.10.0 || >=18.0.0} - dev: true - /gray-matter/4.0.3: + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} dependencies: @@ -9009,71 +9318,71 @@ packages: strip-bom-string: 1.0.0 dev: false - /gzip-size/6.0.0: + /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} dependencies: duplexer: 0.1.2 dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hast-util-has-property/2.0.0: + /hast-util-has-property@2.0.0: resolution: {integrity: sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==} dev: false - /hast-util-heading-rank/2.1.0: + /hast-util-heading-rank@2.1.0: resolution: {integrity: sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-parse-selector/3.1.0: + /hast-util-parse-selector@3.1.0: resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-to-estree/2.1.0: + /hast-util-to-estree@2.1.0: resolution: {integrity: sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==} dependencies: '@types/estree': 1.0.0 @@ -9095,17 +9404,17 @@ packages: - supports-color dev: false - /hast-util-to-string/2.0.0: + /hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-whitespace/2.0.0: + /hast-util-whitespace@2.0.0: resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} dev: false - /hastscript/7.1.0: + /hastscript@7.1.0: resolution: {integrity: sha512-uBjaTTLN0MkCZxY/R2fWUOcu7FRtUVzKRO5P/RAfgsu3yFiMB1JWCO4AjeVkgHxAira1f2UecHK5WfS9QurlWA==} dependencies: '@types/hast': 2.3.4 @@ -9115,78 +9424,89 @@ packages: space-separated-tokens: 2.0.1 dev: false - /header-case/2.0.4: + /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 tslib: 2.5.0 - /hex-color-regex/1.1.0: + /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false - /hey-listen/1.0.8: + /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false - /hoist-non-react-statics/3.3.2: + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hosted-git-info/5.2.1: + /hosted-git-info@5.2.1: resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: lru-cache: 7.18.1 dev: true - /hsl-regex/1.0.0: + /hsl-regex@1.0.0: resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} dev: false - /hsla-regex/1.0.0: + /hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} dev: false - /htm/3.1.1: + /htm@3.1.1: resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} dev: false - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /html-parse-stringify/3.0.1: + /html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 dev: false - /html-tags/3.2.0: + /html-tags@3.2.0: resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} engines: {node: '>=8'} dev: false - /http-errors/2.0.0: + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + dev: false + + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -9195,8 +9515,9 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 + dev: true - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -9207,7 +9528,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -9217,87 +9538,87 @@ packages: - supports-color dev: true - /human-id/1.0.2: + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals/1.1.1: + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - /husky/8.0.3: + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /hyphenate-style-name/1.0.4: + /hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} dev: false - /i18next-fs-backend/2.1.1: + /i18next-fs-backend@2.1.1: resolution: {integrity: sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==} dev: false - /i18next/22.4.13: + /i18next@22.4.13: resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 dev: false - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-by-default/2.1.0: + /ignore-by-default@2.1.0: resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} engines: {node: '>=10 <11 || >=12 <13 || >=14'} dev: true - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - /immediate/3.0.6: + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false - /immer/9.0.12: + /immer@9.0.12: resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} dev: false - /immutable/3.7.6: + /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-from/4.0.0: + /import-from@4.0.0: resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} engines: {node: '>=12.2'} - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -9305,44 +9626,44 @@ packages: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indent-string/5.0.0: + /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /inline-style-parser/0.1.1: + /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inline-style-prefixer/6.0.1: + /inline-style-prefixer@6.0.1: resolution: {integrity: sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ==} dependencies: css-in-js-utils: 2.0.1 dev: false - /internal-slot/1.0.3: + /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: @@ -9351,44 +9672,44 @@ packages: side-channel: 1.0.4 dev: true - /internmap/2.0.3: + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: false - /invariant/2.2.4: + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /irregular-plurals/3.3.0: - resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} + /irregular-plurals@3.4.1: + resolution: {integrity: sha512-JR7VL+1Kd9z79bE+2uSgifpzrTwLWmTvyeUewhxZCHVtpPImAsLk4adfRxg86uvdsJ8etYYrpzN7vRT30gGnOA==} engines: {node: '>=8'} dev: true - /is-absolute/1.0.0: + /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} dependencies: is-relative: 1.0.0 is-windows: 1.0.2 - /is-alphabetical/2.0.1: + /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: false - /is-alphanumerical/2.0.1: + /is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 dev: false - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -9396,26 +9717,26 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish/0.3.2: + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -9423,24 +9744,24 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: false - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.7.1 dev: true - /is-color-stop/1.1.0: + /is-color-stop@1.1.0: resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} dependencies: css-color-names: 0.0.4 @@ -9451,70 +9772,70 @@ packages: rgba-regex: 1.0.0 dev: false - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-decimal/2.0.1: + /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - /is-docker/3.0.0: + /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dev: true - /is-error/2.2.2: + /is-error@2.2.2: resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} dev: true - /is-extendable/0.1.1: + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-hexadecimal/2.0.1: + /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false - /is-inside-container/1.0.0: + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -9522,81 +9843,81 @@ packages: is-docker: 3.0.0 dev: true - /is-lower-case/2.0.2: + /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: tslib: 2.5.0 - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd/3.0.0: + /is-path-cwd@3.0.0: resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-path-inside/4.0.0: + /is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: false - /is-plain-obj/4.1.0: + /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: false - /is-plain-object/5.0.0: + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} dev: true - /is-port-reachable/4.0.0: + /is-port-reachable@4.0.0: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-promise/4.0.0: + /is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} dev: true - /is-reference/3.0.0: + /is-reference@3.0.0: resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} dependencies: '@types/estree': 1.0.0 dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -9604,53 +9925,53 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-relative/1.0.0: + /is-relative@1.0.0: resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} engines: {node: '>=0.10.0'} dependencies: is-unc-path: 1.0.0 - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-typed-array/1.1.9: + /is-typed-array@1.1.9: resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} engines: {node: '>= 0.4'} dependencies: @@ -9661,100 +9982,100 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-unc-path/1.0.0: + /is-unc-path@1.0.0: resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} dependencies: unc-path-regex: 0.1.2 - /is-unicode-supported/1.3.0: + /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} dev: true - /is-upper-case/2.0.2: + /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: tslib: 2.5.0 - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 dev: true - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} dev: false - /isomorphic-unfetch/4.0.2: + /isomorphic-unfetch@4.0.2: resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} dependencies: node-fetch: 3.3.0 unfetch: 5.0.0 dev: true - /isomorphic-ws/4.0.1_ws@8.11.0: + /isomorphic-ws@4.0.1(ws@8.13.0): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' dependencies: - ws: 8.11.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /isomorphic-ws/5.0.0_ws@8.13.0: + /isomorphic-ws@5.0.0(ws@8.13.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' dependencies: - ws: 8.13.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) dev: false - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.19.6 - '@babel/parser': 7.20.1 + '@babel/core': 7.21.0 + '@babel/parser': 7.21.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 transitivePeerDependencies: - supports-color - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -9762,7 +10083,7 @@ packages: make-dir: 3.1.0 supports-color: 7.2.0 - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -9772,24 +10093,24 @@ packages: transitivePeerDependencies: - supports-color - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - /iterall/1.3.0: + /iterall@1.3.0: resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==} - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9816,35 +10137,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli/29.5.0_757mb262zsxkcnuknwfdsckmku: - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0_757mb262zsxkcnuknwfdsckmku - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest-cli/29.5.0_@types+node@18.15.5: + /jest-cli@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9854,14 +10147,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.5 + jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -9871,47 +10164,7 @@ packages: - supports-color - ts-node - /jest-config/29.5.0_757mb262zsxkcnuknwfdsckmku: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.19.6 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - babel-jest: 29.5.0_@babel+core@7.19.6 - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1_345kigqis4fipgyy5xb3ndshmq - transitivePeerDependencies: - - supports-color - dev: true - - /jest-config/29.5.0_@types+node@18.15.5: + /jest-config@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9927,7 +10180,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.5 - babel-jest: 29.5.0_@babel+core@7.19.6 + babel-jest: 29.5.0(@babel/core@7.19.6) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -9946,10 +10199,11 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) transitivePeerDependencies: - supports-color - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9958,13 +10212,13 @@ packages: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9974,7 +10228,7 @@ packages: jest-util: 29.5.0 pretty-format: 29.5.0 - /jest-environment-jsdom/29.5.0: + /jest-environment-jsdom@29.5.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9990,14 +10244,14 @@ packages: '@types/node': 18.15.5 jest-mock: 29.5.0 jest-util: 29.5.0 - jsdom: 20.0.2 + jsdom: 20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10008,11 +10262,11 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10030,14 +10284,14 @@ packages: optionalDependencies: fsevents: 2.3.2 - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10046,7 +10300,7 @@ packages: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10060,7 +10314,7 @@ packages: slash: 3.0.0 stack-utils: 2.0.6 - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10068,7 +10322,7 @@ packages: '@types/node': 18.15.5 jest-util: 29.5.0 - /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -10079,16 +10333,16 @@ packages: dependencies: jest-resolve: 29.5.0 - /jest-regex-util/29.2.0: + /jest-regex-util@29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: false - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10097,21 +10351,21 @@ packages: transitivePeerDependencies: - supports-color - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 resolve.exports: 2.0.0 slash: 3.0.0 - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10139,7 +10393,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10168,22 +10422,22 @@ packages: transitivePeerDependencies: - supports-color - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.19.6 - '@babel/generator': 7.20.1 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.19.6 - '@babel/traverse': 7.20.1 + '@babel/generator': 7.21.1 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.19.6) + '@babel/traverse': 7.21.2 '@babel/types': 7.20.0 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -10198,18 +10452,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-util/29.4.0: - resolution: {integrity: sha512-lCCwlze7UEV8TpR9ArS8w0cTbcMry5tlBkg7QSc5og5kNyV59dnY2aKHu5fY2k5aDJMQpCUGpvL2w6ZU44lveA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - chalk: 4.1.2 - ci-info: 3.7.1 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10220,7 +10463,7 @@ packages: graceful-fs: 4.2.10 picomatch: 2.3.1 - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10231,7 +10474,7 @@ packages: leven: 3.1.0 pretty-format: 29.5.0 - /jest-watch-typeahead/2.2.2_jest@29.5.0: + /jest-watch-typeahead@2.2.2(jest@29.5.0): resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10239,19 +10482,19 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.5 + jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) jest-regex-util: 29.2.0 - jest-watcher: 29.4.0 + jest-watcher: 29.4.1 slash: 5.0.0 string-length: 5.0.1 strip-ansi: 7.0.1 dev: false - /jest-watcher/29.4.0: - resolution: {integrity: sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==} + /jest-watcher@29.4.1: + resolution: {integrity: sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.4.0 + '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.5 ansi-escapes: 4.3.2 @@ -10261,7 +10504,7 @@ packages: string-length: 4.0.2 dev: false - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10274,7 +10517,7 @@ packages: jest-util: 29.5.0 string-length: 4.0.2 - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10283,27 +10526,7 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jest/29.5.0_757mb262zsxkcnuknwfdsckmku: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0_757mb262zsxkcnuknwfdsckmku - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest/29.5.0_@types+node@18.15.5: + /jest@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10313,16 +10536,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.5 + jest-cli: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node - /joi/17.7.0: + /joi@17.7.0: resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} dependencies: '@hapi/hoek': 9.3.0 @@ -10332,32 +10555,32 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /js-cookie/2.2.1: + /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: false - /js-string-escape/1.0.1: + /js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - /jsdom/20.0.2: + /jsdom@20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} engines: {node: '>=14'} peerDependencies: @@ -10390,7 +10613,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.13.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10398,33 +10621,33 @@ packages: - utf-8-validate dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: false - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -10432,27 +10655,27 @@ packages: graceful-fs: 4.2.10 dev: false - /khroma/2.0.0: + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -10460,36 +10683,36 @@ packages: type-check: 0.3.2 dev: true - /lie/3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + /lie@3.1.1: + resolution: {integrity: sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=} dependencies: immediate: 3.0.6 dev: false - /light-my-request/5.6.1: + /light-my-request@5.6.1: resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} dependencies: cookie: 0.5.0 process-warning: 2.0.0 set-cookie-parser: 2.5.1 - /lilconfig/2.0.6: + /lilconfig@2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /load-json-file/7.0.1: + /load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /load-script/1.0.0: + /load-script@1.0.0: resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} dev: false - /load-yaml-file/0.2.0: + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -10499,172 +10722,177 @@ packages: strip-bom: 3.0.0 dev: true - /localforage/1.10.0: + /localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} dependencies: lie: 3.1.1 dev: false - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /locate-path/7.1.1: - resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 dev: true - /lodash-es/4.17.21: + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true - /lodash.flatmap/4.5.0: + /lodash.flatmap@4.5.0: resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} dev: false - /lodash.get/4.4.2: + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: false - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: false - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.topath/4.5.2: + /lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} dev: false - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /longest-streak/3.0.1: + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /lower-case-first/2.0.2: + /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: tslib: 2.5.0 - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.5.0 - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache/6.0.0: + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /lru-cache/7.18.1: + /lru-cache@7.18.1: resolution: {integrity: sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==} engines: {node: '>=12'} dev: true - /lz-string/1.4.4: + /lz-string@1.4.4: resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} hasBin: true dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - /map-age-cleaner/0.1.3: + /map-age-cleaner@0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} dependencies: p-defer: 1.0.0 dev: true - /map-cache/0.2.2: + /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /map-stream/0.1.0: + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /markdown-extensions/1.1.1: + /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} dev: false - /markdown-table/3.0.2: + /markdown-table@3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: false - /matcher/5.0.0: + /matcher@5.0.0: resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: escape-string-regexp: 5.0.0 dev: true - /md5-hex/3.0.1: + /md5-hex@3.0.1: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} dependencies: blueimp-md5: 2.19.0 dev: true - /mdast-util-definitions/5.1.1: + /mdast-util-definitions@5.1.1: resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} dependencies: '@types/mdast': 3.0.10 @@ -10672,7 +10900,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /mdast-util-find-and-replace/2.2.1: + /mdast-util-find-and-replace@2.2.1: resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} dependencies: escape-string-regexp: 5.0.0 @@ -10680,7 +10908,7 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /mdast-util-from-markdown/1.2.0: + /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} dependencies: '@types/mdast': 3.0.10 @@ -10699,7 +10927,7 @@ packages: - supports-color dev: false - /mdast-util-gfm-autolink-literal/1.0.2: + /mdast-util-gfm-autolink-literal@1.0.2: resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} dependencies: '@types/mdast': 3.0.10 @@ -10708,7 +10936,7 @@ packages: micromark-util-character: 1.1.0 dev: false - /mdast-util-gfm-footnote/1.0.1: + /mdast-util-gfm-footnote@1.0.1: resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} dependencies: '@types/mdast': 3.0.10 @@ -10716,14 +10944,14 @@ packages: micromark-util-normalize-identifier: 1.0.0 dev: false - /mdast-util-gfm-strikethrough/1.0.1: + /mdast-util-gfm-strikethrough@1.0.1: resolution: {integrity: sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 dev: false - /mdast-util-gfm-table/1.0.6: + /mdast-util-gfm-table@1.0.6: resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} dependencies: '@types/mdast': 3.0.10 @@ -10734,14 +10962,14 @@ packages: - supports-color dev: false - /mdast-util-gfm-task-list-item/1.0.1: + /mdast-util-gfm-task-list-item@1.0.1: resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 dev: false - /mdast-util-gfm/2.0.1: + /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: mdast-util-from-markdown: 1.2.0 @@ -10755,7 +10983,7 @@ packages: - supports-color dev: false - /mdast-util-mdx-expression/1.3.1: + /mdast-util-mdx-expression@1.3.1: resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10767,7 +10995,7 @@ packages: - supports-color dev: false - /mdast-util-mdx-jsx/2.1.0: + /mdast-util-mdx-jsx@2.1.0: resolution: {integrity: sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10782,7 +11010,7 @@ packages: vfile-message: 3.1.2 dev: false - /mdast-util-mdx/2.0.0: + /mdast-util-mdx@2.0.0: resolution: {integrity: sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==} dependencies: mdast-util-mdx-expression: 1.3.1 @@ -10792,7 +11020,7 @@ packages: - supports-color dev: false - /mdast-util-mdxjs-esm/1.3.0: + /mdast-util-mdxjs-esm@1.3.0: resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10804,7 +11032,7 @@ packages: - supports-color dev: false - /mdast-util-to-hast/12.2.4: + /mdast-util-to-hast@12.2.4: resolution: {integrity: sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==} dependencies: '@types/hast': 2.3.4 @@ -10818,7 +11046,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /mdast-util-to-markdown/1.3.0: + /mdast-util-to-markdown@1.3.0: resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} dependencies: '@types/mdast': 3.0.10 @@ -10830,15 +11058,15 @@ packages: zwitch: 2.0.2 dev: false - /mdast-util-to-string/3.1.0: + /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} dev: false - /mdn-data/2.0.14: + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false - /mdx-mermaid/1.3.2_mermaid@9.1.7+react@17.0.2: + /mdx-mermaid@1.3.2(mermaid@9.1.7)(react@17.0.2): resolution: {integrity: sha512-8kw0tg3isKKBFzFwoe2DhIaEgKYtVeJXQtxZCCrdTPO0CTpXHnTHT0atDqsp7YkXi5iUCp/zAZPZu1cmr68T3w==} peerDependencies: mermaid: '>=8.11.0' @@ -10852,12 +11080,12 @@ packages: react: 17.0.2 dev: false - /media-typer/0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + /media-typer@0.3.0: + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} dev: true - /mem/9.0.2: + /mem@9.0.2: resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} engines: {node: '>=12.20'} dependencies: @@ -10865,11 +11093,11 @@ packages: mimic-fn: 4.0.0 dev: true - /memoize-one/5.2.1: + /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /meow/11.0.0: + /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} dependencies: @@ -10883,11 +11111,11 @@ packages: read-pkg-up: 9.1.0 redent: 4.0.0 trim-newlines: 4.0.2 - type-fest: 3.2.0 + type-fest: 3.6.1 yargs-parser: 21.1.1 dev: true - /meow/6.1.1: + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -10904,25 +11132,25 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-options/3.0.4: + /merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} engines: {node: '>=10'} dependencies: is-plain-obj: 2.1.0 dev: false - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid/9.1.7: + /mermaid@9.1.7: resolution: {integrity: sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==} dependencies: '@braintree/sanitize-url': 6.0.1 @@ -10936,12 +11164,12 @@ packages: stylis: 4.1.3 dev: false - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - /micromark-core-commonmark/1.0.6: + /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: decode-named-character-reference: 1.0.2 @@ -10962,7 +11190,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-autolink-literal/1.0.3: + /micromark-extension-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} dependencies: micromark-util-character: 1.1.0 @@ -10972,7 +11200,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-footnote/1.0.4: + /micromark-extension-gfm-footnote@1.0.4: resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} dependencies: micromark-core-commonmark: 1.0.6 @@ -10985,7 +11213,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-strikethrough/1.0.4: + /micromark-extension-gfm-strikethrough@1.0.4: resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} dependencies: micromark-util-chunked: 1.0.0 @@ -10996,7 +11224,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-table/1.0.5: + /micromark-extension-gfm-table@1.0.5: resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} dependencies: micromark-factory-space: 1.0.0 @@ -11006,13 +11234,13 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-tagfilter/1.0.1: + /micromark-extension-gfm-tagfilter@1.0.1: resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-extension-gfm-task-list-item/1.0.3: + /micromark-extension-gfm-task-list-item@1.0.3: resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} dependencies: micromark-factory-space: 1.0.0 @@ -11022,7 +11250,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm/2.0.1: + /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 @@ -11035,7 +11263,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-extension-mdx-expression/1.0.3: + /micromark-extension-mdx-expression@1.0.3: resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} dependencies: micromark-factory-mdx-expression: 1.0.6 @@ -11047,7 +11275,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-mdx-jsx/1.0.3: + /micromark-extension-mdx-jsx@1.0.3: resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} dependencies: '@types/acorn': 4.0.6 @@ -11061,13 +11289,13 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-extension-mdx-md/1.0.0: + /micromark-extension-mdx-md@1.0.0: resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-extension-mdxjs-esm/1.0.3: + /micromark-extension-mdxjs-esm@1.0.3: resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} dependencies: micromark-core-commonmark: 1.0.6 @@ -11080,11 +11308,11 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-extension-mdxjs/1.0.0: + /micromark-extension-mdxjs@1.0.0: resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} dependencies: acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 + acorn-jsx: 5.3.2(acorn@8.8.1) micromark-extension-mdx-expression: 1.0.3 micromark-extension-mdx-jsx: 1.0.3 micromark-extension-mdx-md: 1.0.0 @@ -11093,7 +11321,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-factory-destination/1.0.0: + /micromark-factory-destination@1.0.0: resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} dependencies: micromark-util-character: 1.1.0 @@ -11101,7 +11329,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-factory-label/1.0.2: + /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} dependencies: micromark-util-character: 1.1.0 @@ -11110,7 +11338,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-mdx-expression/1.0.6: + /micromark-factory-mdx-expression@1.0.6: resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} dependencies: micromark-factory-space: 1.0.0 @@ -11123,14 +11351,14 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-factory-space/1.0.0: + /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 dev: false - /micromark-factory-title/1.0.2: + /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} dependencies: micromark-factory-space: 1.0.0 @@ -11140,7 +11368,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-whitespace/1.0.0: + /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} dependencies: micromark-factory-space: 1.0.0 @@ -11149,20 +11377,20 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-util-character/1.1.0: + /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 dev: false - /micromark-util-chunked/1.0.0: + /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-classify-character/1.0.0: + /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} dependencies: micromark-util-character: 1.1.0 @@ -11170,20 +11398,20 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-util-combine-extensions/1.0.0: + /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 dev: false - /micromark-util-decode-numeric-character-reference/1.0.0: + /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-decode-string/1.0.2: + /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} dependencies: decode-named-character-reference: 1.0.2 @@ -11192,11 +11420,11 @@ packages: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-encode/1.0.1: + /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: false - /micromark-util-events-to-acorn/1.2.0: + /micromark-util-events-to-acorn@1.2.0: resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} dependencies: '@types/acorn': 4.0.6 @@ -11208,23 +11436,23 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-util-html-tag-name/1.1.0: + /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} dev: false - /micromark-util-normalize-identifier/1.0.0: + /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-resolve-all/1.0.0: + /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-util-sanitize-uri/1.1.0: + /micromark-util-sanitize-uri@1.1.0: resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} dependencies: micromark-util-character: 1.1.0 @@ -11232,7 +11460,7 @@ packages: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-subtokenize/1.0.2: + /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} dependencies: micromark-util-chunked: 1.0.0 @@ -11241,15 +11469,15 @@ packages: uvu: 0.5.6 dev: false - /micromark-util-symbol/1.0.1: + /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} dev: false - /micromark-util-types/1.0.2: + /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} dev: false - /micromark/3.1.0: + /micromark@3.1.0: resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} dependencies: '@types/debug': 4.1.7 @@ -11273,68 +11501,68 @@ packages: - supports-color dev: false - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db/1.33.0: + /mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - /mime-types/2.1.18: + /mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.33.0 dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/7.4.2: + /minimatch@7.4.2: resolution: {integrity: sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -11343,71 +11571,71 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.7: + /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - /minipass/4.2.4: + /minipass@4.2.4: resolution: {integrity: sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==} engines: {node: '>=8'} dev: true - /mixme/0.5.4: + /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: false - /mkdirp/2.1.5: + /mkdirp@2.1.5: resolution: {integrity: sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==} engines: {node: '>=10'} hasBin: true dev: true - /mnemonist/0.39.5: + /mnemonist@0.39.5: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} dependencies: obliterator: 2.0.4 - /modern-normalize/1.1.0: + /modern-normalize@1.1.0: resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==} engines: {node: '>=6'} dev: false - /moment-mini/2.24.0: + /moment-mini@2.24.0: resolution: {integrity: sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==} dev: false - /mri/1.2.0: + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - /mrmime/1.0.1: + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /ms/3.0.0-canary.1: + /ms@3.0.0-canary.1: resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} engines: {node: '>=12.13'} dev: false - /multimatch/4.0.0: + /multimatch@4.0.0: resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} engines: {node: '>=8'} dependencies: @@ -11418,7 +11646,7 @@ packages: minimatch: 3.1.2 dev: true - /nano-css/5.3.5_sfoxds7t5ydpegc3knd667wn6m: + /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} peerDependencies: react: '*' @@ -11429,33 +11657,33 @@ packages: fastest-stable-stringify: 2.0.2 inline-style-prefixer: 6.0.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) rtl-css-js: 1.16.0 sourcemap-codec: 1.4.8 stacktrace-js: 2.0.2 stylis: 4.1.3 dev: false - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanospinner/1.1.0: + /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} dependencies: picocolors: 1.0.0 dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /next-i18next/13.2.2_2ynmrf3odwjl6m6qwej4nuthfy: + /next-i18next@13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2): resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} engines: {node: '>=14'} peerDependencies: @@ -11464,18 +11692,18 @@ packages: react: '>= 17.0.2' react-i18next: ^12.2.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@types/hoist-non-react-statics': 3.3.1 core-js: 3.26.0 hoist-non-react-statics: 3.3.2 i18next: 22.4.13 i18next-fs-backend: 2.1.1 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-i18next: 12.2.0_ffdbohwx3htqpx4tpuhghjrmkq + react-i18next: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) dev: false - /next-remote-watch/2.0.0_next@12.3.4: + /next-remote-watch@2.0.0(next@12.3.4): resolution: {integrity: sha512-FyKDFMwbjKCPdu8ypZ8WTkDBzuxnH6rgfR89vgQwsND4ErrfXnDFZcZJAmSpwND6QA7G9f0DRzYMSdspY6t8Uw==} engines: {node: '>= 10'} hasBin: true @@ -11486,24 +11714,24 @@ packages: chokidar: 3.5.3 commander: 5.1.0 express: 4.18.2 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) transitivePeerDependencies: - supports-color dev: true - /next-seo/5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa: + /next-seo@5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /next/12.3.4_sfoxds7t5ydpegc3knd667wn6m: + /next@12.3.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} engines: {node: '>=12.22.0'} hasBin: true @@ -11526,9 +11754,9 @@ packages: caniuse-lite: 1.0.30001429 postcss: 8.4.14 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - styled-jsx: 5.0.7_react@17.0.2 - use-sync-external-store: 1.2.0_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + styled-jsx: 5.0.7(react@17.0.2) + use-sync-external-store: 1.2.0(react@17.0.2) optionalDependencies: '@next/swc-android-arm-eabi': 12.3.4 '@next/swc-android-arm64': 12.3.4 @@ -11547,27 +11775,27 @@ packages: - '@babel/core' - babel-plugin-macros - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.5.0 - /node-cleanup/2.1.2: + /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true - /node-domexception/1.0.0: + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - /node-emoji/1.11.0: + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 dev: false - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -11578,7 +11806,7 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-fetch/3.3.0: + /node-fetch@3.3.0: resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -11587,29 +11815,31 @@ packages: formdata-polyfill: 4.0.10 dev: true - /node-gyp-build/4.5.0: + /node-gyp-build@4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true - dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-json-db/2.1.5: + /node-json-db@2.1.5: resolution: {integrity: sha512-LnzD9SPOVjtiMOgUB8oJfbj3927/2S/tWMjMen8QybZ3MBcgIFi9fKGpk6H3A4rMjnpuHX2J19JEvzqwB2p+/g==} dependencies: rwlock: 5.0.0 dev: false - /node-releases/2.0.6: + /node-releases@2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - /nofilter/3.1.0: + /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -11618,7 +11848,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -11628,7 +11858,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/4.0.1: + /normalize-package-data@4.0.1: resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -11638,60 +11868,60 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/2.1.1: + /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-range/0.1.2: + /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: false - /npm-run-path/1.0.0: + /npm-run-path@1.0.0: resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==} engines: {node: '>=0.10.0'} dependencies: path-key: 1.0.0 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - /nprogress/0.2.0: + /nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /nullthrows/1.1.1: + /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /nwsapi/2.2.2: + /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash/2.2.0: + /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} dev: false - /object-inspect/1.12.2: + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: @@ -11699,17 +11929,17 @@ packages: define-properties: 1.1.4 dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object-path/0.11.8: + /object-path@0.11.8: resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} engines: {node: '>= 10.12.0'} dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -11719,36 +11949,36 @@ packages: object-keys: 1.1.1 dev: true - /obliterator/2.0.4: + /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - /on-exit-leak-free/2.1.0: + /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - /open-cli/7.2.0: + /open-cli@7.2.0: resolution: {integrity: sha512-1ANJc8oJ92FiaNZ0o2Hw4WBvDJoXs1P74aFMtpAvlbkIPV4uPcQvDz7V6kMOrsZkmB4tglrHVMlLQaafuUuxXg==} engines: {node: '>=14.16'} hasBin: true @@ -11760,7 +11990,7 @@ packages: tempy: 3.0.0 dev: true - /open/8.4.2: + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: @@ -11768,7 +11998,7 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 - /open/9.0.0: + /open@9.0.0: resolution: {integrity: sha512-yerrN5WPzgwuE3T6rxAkT1UuMLDzs4Szpug7hy9s4gru3iOTnaU0yKc1AYOVYrBzvykce5gUdr9RPNB4R+Zc/A==} engines: {node: '>=14.16'} dependencies: @@ -11778,12 +12008,12 @@ packages: is-wsl: 2.2.0 dev: true - /opener/1.5.2: + /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -11795,107 +12025,107 @@ packages: word-wrap: 1.2.3 dev: true - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: + /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-defer/1.0.0: + /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} dev: true - /p-event/5.0.1: + /p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-timeout: 5.1.0 dev: true - /p-filter/2.1.0: + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-locate/6.0.0: + /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 dev: true - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: true - /p-map/5.5.0: + /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-timeout/5.1.0: + /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /param-case/3.0.4: + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - /parse-entities/4.0.0: + /parse-entities@4.0.0: resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} dependencies: '@types/unist': 2.0.6 @@ -11908,7 +12138,7 @@ packages: is-hexadecimal: 2.0.1 dev: false - /parse-filepath/1.0.2: + /parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} dependencies: @@ -11916,7 +12146,7 @@ packages: map-cache: 0.2.2 path-root: 0.1.1 - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -11925,78 +12155,78 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-ms/3.0.0: + /parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} dev: true - /parse-numeric-range/1.3.0: + /parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} dev: false - /parse5/7.1.1: + /parse5@7.1.1: resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} dependencies: entities: 4.4.0 dev: true - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.5.0 - /path-case/3.0.4: + /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-exists/5.0.0: + /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-is-inside/1.0.2: + /path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} dev: true - /path-key/1.0.0: + /path-key@1.0.0: resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==} engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-root-regex/0.1.2: + /path-root-regex@0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} engines: {node: '>=0.10.0'} - /path-root/0.1.1: + /path-root@0.1.1: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} dependencies: path-root-regex: 0.1.2 - /path-scurry/1.6.1: + /path-scurry@1.6.1: resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==} engines: {node: '>=14'} dependencies: @@ -12004,58 +12234,58 @@ packages: minipass: 4.2.4 dev: true - /path-to-regexp/0.1.7: + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - /path-to-regexp/2.2.1: + /path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pause-stream/0.0.11: + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: through: 2.3.8 dev: true - /peek-readable/5.0.0: + /peek-readable@5.0.0: resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} engines: {node: '>=14.16'} dev: true - /periscopic/3.0.4: + /periscopic@3.0.4: resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} dependencies: estree-walker: 3.0.1 is-reference: 3.0.0 dev: false - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pino-abstract-transport/1.0.0: + /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.2.0 split2: 4.1.0 - /pino-std-serializers/6.0.0: + /pino-std-serializers@6.0.0: resolution: {integrity: sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==} - /pino/8.7.0: + /pino@8.7.0: resolution: {integrity: sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==} hasBin: true dependencies: @@ -12071,11 +12301,11 @@ packages: sonic-boom: 3.2.0 thread-stream: 2.2.0 - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - /pkg-conf/4.0.0: + /pkg-conf@4.0.0: resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12083,27 +12313,27 @@ packages: load-json-file: 7.0.1 dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - /plur/5.1.0: + /plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - irregular-plurals: 3.3.0 + irregular-plurals: 3.4.1 dev: true - /polished/4.2.2: + /polished@4.2.2: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 dev: false - /popmotion/11.0.3: + /popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} dependencies: framesync: 6.0.1 @@ -12112,7 +12342,7 @@ packages: tslib: 2.5.0 dev: false - /postcss-js/3.0.3: + /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} dependencies: @@ -12120,7 +12350,7 @@ packages: postcss: 8.4.21 dev: false - /postcss-load-config/3.1.4_postcss@8.4.21: + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -12134,10 +12364,11 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 + ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) yaml: 1.10.2 dev: false - /postcss-nested/5.0.6_postcss@8.4.21: + /postcss-nested@5.0.6(postcss@8.4.21): resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: @@ -12147,7 +12378,7 @@ packages: postcss-selector-parser: 6.0.10 dev: false - /postcss-selector-parser/6.0.10: + /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} dependencies: @@ -12155,15 +12386,15 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-value-parser/3.3.1: + /postcss-value-parser@3.3.1: resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} dev: false - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -12171,7 +12402,7 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -12179,11 +12410,11 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.11.2: + /preact@10.11.2: resolution: {integrity: sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==} dev: false - /preferred-pm/3.0.3: + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -12193,23 +12424,23 @@ packages: which-pm: 2.0.0 dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prettier/2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + /prettier@2.8.3: + resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} engines: {node: '>=10.13.0'} hasBin: true dev: false - /prettier/2.8.6: + /prettier@2.8.6: resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} hasBin: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -12218,7 +12449,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -12226,19 +12457,19 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /pretty-hrtime/1.0.3: + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} dev: false - /pretty-ms/8.0.0: + /pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} dependencies: parse-ms: 3.0.0 dev: true - /pretty-quick/3.1.3_prettier@2.8.6: + /pretty-quick@3.1.3(prettier@2.8.6): resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} engines: {node: '>=10.13'} hasBin: true @@ -12254,26 +12485,26 @@ packages: prettier: 2.8.6 dev: true - /process-warning/2.0.0: + /process-warning@2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} - /process/0.11.10: + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - /promise/7.3.1: + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -12281,18 +12512,18 @@ packages: react-is: 16.13.1 dev: false - /property-information/6.1.1: + /property-information@6.1.1: resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} dev: false - /proxy-addr/2.0.7: + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - /ps-tree/1.2.0: + /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} hasBin: true @@ -12300,33 +12531,33 @@ packages: event-stream: 3.3.4 dev: true - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true - /punycode/1.4.1: + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - /pure-rand/6.0.0: + /pure-rand@6.0.0: resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} - /purgecss/4.1.3: + /purgecss@4.1.3: resolution: {integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==} hasBin: true dependencies: @@ -12336,43 +12567,43 @@ packages: postcss-selector-parser: 6.0.10 dev: false - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-format-unescaped/4.0.4: + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: false - /quick-lru/6.1.1: + /quick-lru@6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} dev: true - /randombytes/2.0.3: + /randombytes@2.0.3: resolution: {integrity: sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==} dev: false - /randomstring/1.2.3: + /randomstring@1.2.3: resolution: {integrity: sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==} hasBin: true dependencies: @@ -12380,17 +12611,17 @@ packages: randombytes: 2.0.3 dev: false - /range-parser/1.2.0: + /range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} dev: true - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -12400,7 +12631,7 @@ packages: unpipe: 1.0.0 dev: true - /rc/1.2.8: + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true dependencies: @@ -12410,7 +12641,7 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-children-utilities/2.7.0_react@17.0.2: + /react-children-utilities@2.7.0(react@17.0.2): resolution: {integrity: sha512-8vvGyL8+MTB/WZnTZKll3ph8rKhYQ3s0TOeojFcSi9yF8hMHwYmCS3y5RZyPxTg4/gGW6ev299ehV9DrNU8dow==} peerDependencies: react: 17.x.x || 16.x.x || 15.x.x @@ -12418,16 +12649,16 @@ packages: react: 17.0.2 dev: false - /react-clientside-effect/1.2.6_react@17.0.2: + /react-clientside-effect@1.2.6(react@17.0.2): resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 react: 17.0.2 dev: false - /react-dom/17.0.2_react@17.0.2: + /react-dom@17.0.2(react@17.0.2): resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: react: 17.0.2 @@ -12437,36 +12668,36 @@ packages: react: 17.0.2 scheduler: 0.20.2 - /react-error-boundary/3.1.4_react@17.0.2: + /react-error-boundary@3.1.4(react@17.0.2): resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.6 react: 17.0.2 - /react-fast-compare/3.2.0: + /react-fast-compare@3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false - /react-focus-lock/2.5.2_h7fc2el62uaa77gho3xhys6ola: + /react-focus-lock@2.5.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 focus-lock: 0.9.2 prop-types: 15.8.1 react: 17.0.2 - react-clientside-effect: 1.2.6_react@17.0.2 - use-callback-ref: 1.3.0_h7fc2el62uaa77gho3xhys6ola - use-sidecar: 1.1.2_h7fc2el62uaa77gho3xhys6ola + react-clientside-effect: 1.2.6(react@17.0.2) + use-callback-ref: 1.3.0(@types/react@17.0.53)(react@17.0.2) + use-sidecar: 1.1.2(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /react-i18next/12.2.0_ffdbohwx3htqpx4tpuhghjrmkq: + /react-i18next@12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -12479,14 +12710,14 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 html-parse-stringify: 3.0.1 i18next: 22.4.13 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /react-icons/4.8.0_react@17.0.2: + /react-icons@4.8.0(react@17.0.2): resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==} peerDependencies: react: '*' @@ -12494,39 +12725,39 @@ packages: react: 17.0.2 dev: false - /react-instantsearch-core/6.38.0_pybjzmhtnpk62btmxi5dirminu: + /react-instantsearch-core@6.38.0(algoliasearch@4.14.2)(react@17.0.2): resolution: {integrity: sha512-Y5denvptL+qDOHY3LxipULNun8f3t2WeO9UdiWJd9FER1vn1VBrDdSyZ5b+idxqVWhSeVbncbf98zr7EW/kFvA==} peerDependencies: algoliasearch: '>= 3.1 < 5' react: '>= 16.3.0 < 19' dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 algoliasearch: 4.14.2 - algoliasearch-helper: 3.11.1_algoliasearch@4.14.2 + algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) prop-types: 15.8.1 react: 17.0.2 react-fast-compare: 3.2.0 dev: false - /react-instantsearch-dom/6.17.0_kr5x6cjikajrhwznglqptdxk4q: + /react-instantsearch-dom@6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-KwQJ0HqD9YBvO1VBS+GZC2binTfrGFRClXxDwmd014I9lyqr05m1U2NR81zD0xoBkoZwELP5RWvfpuvbEL0Gdg==} peerDependencies: react: '>= 16.3.0 < 18' react-dom: '>= 16.3.0 < 18' dependencies: - '@babel/runtime': 7.20.13 - algoliasearch-helper: 3.11.1_algoliasearch@4.14.2 + '@babel/runtime': 7.21.0 + algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) classnames: 2.3.2 prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) react-fast-compare: 3.2.0 - react-instantsearch-core: 6.38.0_pybjzmhtnpk62btmxi5dirminu + react-instantsearch-core: 6.38.0(algoliasearch@4.14.2)(react@17.0.2) transitivePeerDependencies: - algoliasearch dev: false - /react-intersection-observer/8.33.1_react@17.0.2: + /react-intersection-observer@8.33.1(react@17.0.2): resolution: {integrity: sha512-3v+qaJvp3D1MlGHyM+KISVg/CMhPiOlO6FgPHcluqHkx4YFCLuyXNlQ/LE6UkbODXlQcLOppfX6UMxCEkUhDLw==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0 @@ -12534,7 +12765,7 @@ packages: react: 17.0.2 dev: false - /react-intersection-observer/9.4.3_react@17.0.2: + /react-intersection-observer@9.4.3(react@17.0.2): resolution: {integrity: sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -12542,18 +12773,18 @@ packages: react: 17.0.2 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-paginate/7.1.5_react@17.0.2: + /react-paginate@7.1.5(react@17.0.2): resolution: {integrity: sha512-CpyWSwsIIsFhWAQvmXDWuEl+yzfzisgvsUoZTj2IR1mFvm9oPTmeNBFc1wg8/i6ASmETeOmOnc78/U/MXyjd0w==} peerDependencies: react: ^16 || ^17 @@ -12562,7 +12793,7 @@ packages: react: 17.0.2 dev: false - /react-player/2.11.0_react@17.0.2: + /react-player@2.11.0(react@17.0.2): resolution: {integrity: sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==} peerDependencies: react: '>=16.6.0' @@ -12575,12 +12806,12 @@ packages: react-fast-compare: 3.2.0 dev: false - /react-refresh/0.10.0: + /react-refresh@0.10.0: resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar/2.3.4_h7fc2el62uaa77gho3xhys6ola: + /react-remove-scroll-bar@2.3.4(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -12592,11 +12823,11 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - react-style-singleton: 2.2.1_h7fc2el62uaa77gho3xhys6ola + react-style-singleton: 2.2.1(@types/react@17.0.53)(react@17.0.2) tslib: 2.5.0 dev: false - /react-remove-scroll/2.4.1_h7fc2el62uaa77gho3xhys6ola: + /react-remove-scroll@2.4.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-K7XZySEzOHMTq7dDwcHsZA6Y7/1uX5RsWhRXVYv8rdh+y9Qz2nMwl9RX/Mwnj/j7JstCGmxyfyC0zbVGXYh3mA==} engines: {node: '>=8.5.0'} peerDependencies: @@ -12608,24 +12839,24 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - react-remove-scroll-bar: 2.3.4_h7fc2el62uaa77gho3xhys6ola - react-style-singleton: 2.2.1_h7fc2el62uaa77gho3xhys6ola + react-remove-scroll-bar: 2.3.4(@types/react@17.0.53)(react@17.0.2) + react-style-singleton: 2.2.1(@types/react@17.0.53)(react@17.0.2) tslib: 1.14.1 - use-callback-ref: 1.3.0_h7fc2el62uaa77gho3xhys6ola - use-sidecar: 1.1.2_h7fc2el62uaa77gho3xhys6ola + use-callback-ref: 1.3.0(@types/react@17.0.53)(react@17.0.2) + use-sidecar: 1.1.2(@types/react@17.0.53)(react@17.0.2) dev: false - /react-shallow-renderer/16.15.0_react@17.0.2: + /react-shallow-renderer@16.15.0(react@17.0.2): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 17.0.2 - react-is: 17.0.2 + react-is: 18.2.0 dev: true - /react-ssr-prepass/1.5.0_react@17.0.2: + /react-ssr-prepass@1.5.0(react@17.0.2): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12633,7 +12864,7 @@ packages: react: 17.0.2 dev: false - /react-sticky-box/1.0.2_react@17.0.2: + /react-sticky-box@1.0.2(react@17.0.2): resolution: {integrity: sha512-Kyvtppdtv1KqJyNU4DtrSMI0unyQRgtraZvVQ0GAazVbYiTsIVpyhpr+5R0Aavzu4uJNSe1awj2rk/qI7i6Zfw==} peerDependencies: react: '>=16.8.0' @@ -12642,7 +12873,7 @@ packages: resize-observer-polyfill: 1.5.1 dev: false - /react-style-singleton/2.2.1_h7fc2el62uaa77gho3xhys6ola: + /react-style-singleton@2.2.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -12659,7 +12890,7 @@ packages: tslib: 2.5.0 dev: false - /react-test-renderer/17.0.2_react@17.0.2: + /react-test-renderer@17.0.2(react@17.0.2): resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} peerDependencies: react: 17.0.2 @@ -12667,21 +12898,21 @@ packages: object-assign: 4.1.1 react: 17.0.2 react-is: 17.0.2 - react-shallow-renderer: 16.15.0_react@17.0.2 + react-shallow-renderer: 16.15.0(react@17.0.2) scheduler: 0.20.2 dev: true - /react-universal-interface/0.6.2_react@17.0.2+tslib@2.4.1: + /react-universal-interface@0.6.2(react@17.0.2)(tslib@2.5.0): resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: react: '*' tslib: '*' dependencies: react: 17.0.2 - tslib: 2.4.1 + tslib: 2.5.0 dev: false - /react-use/17.4.0_sfoxds7t5ydpegc3knd667wn6m: + /react-use@17.4.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12693,26 +12924,26 @@ packages: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.3.5_sfoxds7t5ydpegc3knd667wn6m + nano-css: 5.3.5(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-universal-interface: 0.6.2_react@17.0.2+tslib@2.4.1 + react-dom: 17.0.2(react@17.0.2) + react-universal-interface: 0.6.2(react@17.0.2)(tslib@2.5.0) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: false - /react/17.0.2: + /react@17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -12721,7 +12952,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up/9.1.0: + /read-pkg-up@9.1.0: resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12730,7 +12961,7 @@ packages: type-fest: 2.19.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -12740,7 +12971,7 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg/7.1.0: + /read-pkg@7.1.0: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} dependencies: @@ -12750,7 +12981,7 @@ packages: type-fest: 2.19.0 dev: true - /read-yaml-file/1.1.0: + /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -12760,7 +12991,7 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -12769,7 +13000,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/4.2.0: + /readable-stream@4.2.0: resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -12778,24 +13009,24 @@ packages: events: 3.3.0 process: 0.11.10 - /readable-web-to-node-stream/3.0.2: + /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} dependencies: readable-stream: 3.6.0 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - /real-require/0.2.0: + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -12803,7 +13034,7 @@ packages: strip-indent: 3.0.0 dev: true - /redent/4.0.0: + /redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -12811,17 +13042,17 @@ packages: strip-indent: 4.0.0 dev: true - /reduce-css-calc/2.1.8: + /reduce-css-calc@2.1.8: resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} dependencies: css-unit-converter: 1.1.2 postcss-value-parser: 3.3.1 dev: false - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -12830,21 +13061,21 @@ packages: functions-have-names: 1.2.3 dev: true - /registry-auth-token/3.3.2: + /registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} dependencies: rc: 1.2.8 safe-buffer: 5.2.1 dev: true - /registry-url/3.1.0: - resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + /registry-url@3.1.0: + resolution: {integrity: sha1-PU74cPc93h138M+aOBQyRE4XSUI=} engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 dev: true - /rehype-slug/5.0.1: + /rehype-slug@5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} dependencies: '@types/hast': 2.3.4 @@ -12856,16 +13087,16 @@ packages: unist-util-visit: 4.1.1 dev: false - /relay-runtime/12.0.0: + /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 fbjs: 3.0.4 invariant: 2.2.4 transitivePeerDependencies: - encoding - /remark-emoji/3.0.2: + /remark-emoji@3.0.2: resolution: {integrity: sha512-hEgxEv2sBtvhT3tNG/tQeeFY3EbslftaOoG14dDZndLo25fWJ6Fbg4ukFbIotOWWrfXyASjXjyHT+6n366k3mg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12874,7 +13105,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /remark-gfm/3.0.1: + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: '@types/mdast': 3.0.10 @@ -12885,7 +13116,7 @@ packages: - supports-color dev: false - /remark-mdx/2.1.5: + /remark-mdx@2.1.5: resolution: {integrity: sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==} dependencies: mdast-util-mdx: 2.0.0 @@ -12894,7 +13125,7 @@ packages: - supports-color dev: false - /remark-parse/10.0.1: + /remark-parse@10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.10 @@ -12904,7 +13135,7 @@ packages: - supports-color dev: false - /remark-rehype/10.1.0: + /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: '@types/hast': 2.3.4 @@ -12913,52 +13144,52 @@ packages: unified: 10.1.2 dev: false - /remove-markdown/0.3.0: + /remove-markdown@0.3.0: resolution: {integrity: sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ==} dev: false - /remove-trailing-separator/1.1.0: + /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: false - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resize-observer-polyfill/1.5.1: + /resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - /resolve.exports/2.0.0: + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -12966,32 +13197,32 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /ret/0.2.2: + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - /rgb-regex/1.0.1: + /rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} dev: false - /rgba-regex/1.0.0: + /rgba-regex@1.0.0: resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} dev: false - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /rimraf/4.4.0: + /rimraf@4.4.0: resolution: {integrity: sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==} engines: {node: '>=14'} hasBin: true @@ -12999,11 +13230,11 @@ packages: glob: 9.2.1 dev: true - /robust-predicates/3.0.1: + /robust-predicates@3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true @@ -13011,7 +13242,7 @@ packages: fsevents: 2.3.2 dev: true - /rollup/3.19.1: + /rollup@3.19.1: resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -13019,60 +13250,54 @@ packages: fsevents: 2.3.2 dev: true - /rtl-css-js/1.16.0: + /rtl-css-js@1.16.0: resolution: {integrity: sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.20.6 dev: false - /run-applescript/5.0.0: + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rw/1.3.3: + /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /rwlock/5.0.0: + /rwlock@5.0.0: resolution: {integrity: sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg==} dev: false - /rxjs/7.5.7: - resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} - dependencies: - tslib: 2.5.0 - dev: true - - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.5.0 dev: true - /sade/1.8.1: + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: false - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -13080,42 +13305,42 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex2/2.0.0: + /safe-regex2@2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 - /safe-stable-stringify/2.4.1: + /safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler/0.20.2: + /scheduler@0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - /screenfull/5.2.0: + /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} dev: false - /search-insights/2.2.1: + /search-insights@2.2.1: resolution: {integrity: sha512-JDfVGZbKqTtiKVZjAVbkNw9C9f0ib80yx6Ea17M3z4RvPmuD0GYWXuFwA9++dpbreBEMH4TC3lQ29Zq7O4b5oA==} engines: {node: '>=8.16.0'} dev: false - /section-matter/1.0.0: + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} dependencies: @@ -13123,26 +13348,26 @@ packages: kind-of: 6.0.3 dev: false - /secure-json-parse/2.5.0: + /secure-json-parse@2.5.0: resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /send/0.18.0: + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -13163,28 +13388,28 @@ packages: - supports-color dev: true - /sentence-case/3.0.4: + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 - /serialize-error/11.0.0: + /serialize-error@11.0.0: resolution: {integrity: sha512-YKrURWDqcT3VGX/s/pCwaWtpfJEEaEw5Y4gAnQDku92b/HjVj4r4UhA5QrMVMFotymK2wIWs5xthny5SMFu7Vw==} engines: {node: '>=14.16'} dependencies: type-fest: 2.19.0 dev: false - /serialize-error/7.0.1: + /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} dependencies: type-fest: 0.13.1 dev: true - /serve-handler/6.1.5: + /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: bytes: 3.0.0 @@ -13197,7 +13422,7 @@ packages: range-parser: 1.2.0 dev: true - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -13209,7 +13434,7 @@ packages: - supports-color dev: true - /serve/14.2.0: + /serve@14.2.0: resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} engines: {node: '>= 14'} hasBin: true @@ -13229,74 +13454,74 @@ packages: - supports-color dev: true - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - /set-cookie-parser/2.5.1: + /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} - /set-harmonic-interval/1.0.1: + /set-harmonic-interval@1.0.1: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} engines: {node: '>=6.9'} dev: false - /setimmediate/1.0.5: + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /sha1/1.1.1: + /sha1@1.1.1: resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} dependencies: charenc: 0.0.2 crypt: 0.0.2 dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.4: + /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} dev: true - /shiki-renderer-hast/1.1.5_shiki@0.12.1: + /shiki-renderer-hast@1.1.5(shiki@0.10.1): resolution: {integrity: sha512-XOHX0/mIRJZnqPNGoyyJ9bUrqUwj/tLUJQ5SuU/UkQLTiSJjiHaCP17HRB7/VSQoor4+WJF3QkT8BXbipyJN0Q==} peerDependencies: shiki: ^0.9 || ^0.10.0 dependencies: hastscript: 7.1.0 - shiki: 0.12.1 + shiki: 0.10.1 dev: false - /shiki/0.12.1: - resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==} + /shiki@0.10.1: + resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} dependencies: jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 - vscode-textmate: 8.0.0 + vscode-textmate: 5.2.0 dev: false - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -13304,19 +13529,19 @@ packages: object-inspect: 1.12.2 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signedsource/1.0.0: + /signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} - /simple-swizzle/0.2.2: + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 dev: false - /sirv/1.0.19: + /sirv@1.0.19: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} dependencies: @@ -13325,10 +13550,10 @@ packages: totalist: 1.1.0 dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - /size-limit/8.2.4: + /size-limit@8.2.4: resolution: {integrity: sha512-Un16nSreD1v2CYwSorattiJcHuAWqXvg4TsGgzpjnoByqQwsSfCIEQHuaD14HNStzredR8cdsO9oGH91ibypTA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true @@ -13341,20 +13566,20 @@ packages: picocolors: 1.0.0 dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - /slash/5.0.0: + /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} dev: false - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -13362,7 +13587,7 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smartwrap/2.0.2: + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -13375,129 +13600,130 @@ packages: yargs: 15.4.1 dev: true - /snake-case/3.0.4: + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /sonic-boom/3.2.0: + /sonic-boom@3.2.0: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} dependencies: atomic-sleep: 1.0.0 - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map/0.5.6: + /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: false - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead dev: false - /space-separated-tokens/2.0.1: + /space-separated-tokens@2.0.1: resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} dev: false - /spawn-command/0.0.2-1: + /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true - /spawndamnit/2.0.0: + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /split/0.3.3: + /split2@4.1.0: + resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + engines: {node: '>= 10.x'} + + /split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} dependencies: through: 2.3.8 dev: true - /split2/4.1.0: - resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} - engines: {node: '>= 10.x'} - - /sponge-case/1.0.1: + /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: tslib: 2.5.0 - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /stack-generator/2.0.10: + /stack-generator@2.0.10: resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} dependencies: stackframe: 1.3.4 dev: false - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - /stackframe/1.3.4: + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false - /stacktrace-gps/3.1.2: + /stacktrace-gps@3.1.2: resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} dependencies: source-map: 0.5.6 stackframe: 1.3.4 dev: false - /stacktrace-js/2.0.2: + /stacktrace-js@2.0.2: resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} dependencies: error-stack-parser: 2.1.4 @@ -13505,40 +13731,51 @@ packages: stacktrace-gps: 3.1.2 dev: false - /statuses/2.0.1: + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + dev: true - /stream-combiner/0.0.4: + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: duplexer: 0.1.2 dev: true - /stream-transform/2.1.3: + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.4 dev: true - /streamsearch/1.1.0: + /streamsearch@0.1.2: + resolution: {integrity: sha512-jos8u++JKm0ARcSUTAZXOVC0mSox7Bhn6sBgty73P1f3JGf7yG2clTbBNHUdde/kdvP2FESam+vM6l8jBrNxHA==} + engines: {node: '>=0.8.0'} + dev: false + + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false - /string-argv/0.3.1: + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - /string-length/5.0.1: + /string-length@5.0.1: resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} engines: {node: '>=12.20'} dependencies: @@ -13546,11 +13783,11 @@ packages: strip-ansi: 7.0.1 dev: false - /string-similarity/4.0.4: + /string-similarity@4.0.4: resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} dev: false - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -13558,7 +13795,7 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -13567,7 +13804,7 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.trimend/1.0.5: + /string.prototype.trimend@1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: call-bind: 1.0.2 @@ -13575,7 +13812,7 @@ packages: es-abstract: 1.20.4 dev: true - /string.prototype.trimstart/1.0.5: + /string.prototype.trimstart@1.0.5: resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} dependencies: call-bind: 1.0.2 @@ -13583,78 +13820,78 @@ packages: es-abstract: 1.20.4 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /stringify-entities/4.0.3: + /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - /strip-bom-string/1.0.0: + /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} dev: false - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-indent/4.0.0: + /strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/2.0.1: + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /strtok3/7.0.0: + /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} dependencies: @@ -13662,20 +13899,20 @@ packages: peek-readable: 5.0.0 dev: true - /style-to-object/0.3.0: + /style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: inline-style-parser: 0.1.1 dev: false - /style-value-types/5.0.0: + /style-value-types@5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: hey-listen: 1.0.8 tslib: 2.5.0 dev: false - /styled-jsx/5.0.7_react@17.0.2: + /styled-jsx@5.0.7(react@17.0.2): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -13690,11 +13927,11 @@ packages: dependencies: react: 17.0.2 - /stylis/4.1.3: + /stylis@4.1.3: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /subscriptions-transport-ws-envelop/2.0.2_graphql@16.6.0+ws@8.11.0: + /subscriptions-transport-ws-envelop@2.0.2(graphql@16.6.0)(ws@8.13.0): resolution: {integrity: sha512-HMwQgdiMBgWC48LplRtDsgrdQKnsns7VvLZTN1eIFNT01XJd6yuuudrl85TbO5QnTAiw6g2Sh5bjTFYKjFIGwQ==} peerDependencies: graphql: '*' @@ -13703,12 +13940,12 @@ packages: backo2: 1.0.2 eventemitter3: 4.0.7 graphql: 16.6.0 - isomorphic-ws: 4.0.1_ws@8.11.0 + isomorphic-ws: 4.0.1(ws@8.13.0) iterall: 1.3.0 symbol-observable: 4.0.0 - ws: 8.11.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /supertap/3.0.1: + /supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -13718,46 +13955,46 @@ packages: strip-ansi: 7.0.1 dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swap-case/2.0.2: + /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: tslib: 2.5.0 - /symbol-observable/4.0.0: + /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tabbable/5.3.3: + /tabbable@5.3.3: resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} dev: false - /tailwindcss/2.2.19_gbtt6ss3tbiz4yjtvdr6fbrj44: + /tailwindcss@2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} engines: {node: '>=12.13.0'} hasBin: true @@ -13766,7 +14003,7 @@ packages: postcss: ^8.0.9 dependencies: arg: 5.0.2 - autoprefixer: 10.4.13_postcss@8.4.21 + autoprefixer: 10.4.13(postcss@8.4.21) bytes: 3.1.2 chalk: 4.1.2 chokidar: 3.5.3 @@ -13789,8 +14026,8 @@ packages: object-hash: 2.2.0 postcss: 8.4.21 postcss-js: 3.0.3 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 5.0.6_postcss@8.4.21 + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-nested: 5.0.6(postcss@8.4.21) postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 @@ -13803,17 +14040,17 @@ packages: - ts-node dev: false - /temp-dir/2.0.0: + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} dev: true - /temp-dir/3.0.0: + /temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} dev: true - /tempy/3.0.0: + /tempy@3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} dependencies: @@ -13823,12 +14060,12 @@ packages: unique-string: 3.0.0 dev: true - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -13836,97 +14073,97 @@ packages: glob: 7.2.3 minimatch: 3.1.2 - /thread-stream/2.2.0: + /thread-stream@2.2.0: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} dependencies: real-require: 0.2.0 - /throttle-debounce/3.0.1: + /throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} engines: {node: '>=10'} dev: false - /through/2.3.8: + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /time-zone/1.0.0: + /time-zone@1.0.0: resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} engines: {node: '>=4'} dev: true - /timsort/0.3.0: + /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false - /tiny-invariant/1.3.1: + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false - /tiny-lru/10.0.1: + /tiny-lru@10.0.1: resolution: {integrity: sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==} engines: {node: '>=6'} - /tiny-lru/8.0.2: + /tiny-lru@8.0.2: resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: false - /tinykeys/1.4.0: + /tinykeys@1.4.0: resolution: {integrity: sha512-ysnVd2E4nWbNXIbHaUidcKGLTmNimqP0hdpsD0Ph5hPJ84ntCF6PHj+Jg3im9nZt9/hNsBg/E6m1psHc2KaPnQ==} dev: false - /title-case/3.0.3: + /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: tslib: 2.5.0 - /titleize/1.0.1: + /titleize@1.0.1: resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} engines: {node: '>=0.10.0'} dev: true - /tmp-promise/3.0.3: + /tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} dependencies: tmp: 0.2.1 dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toggle-selection/1.0.6: + /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - /token-types/5.0.1: + /token-types@5.0.1: resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} engines: {node: '>=14.16'} dependencies: @@ -13934,12 +14171,12 @@ packages: ieee754: 1.2.1 dev: true - /totalist/1.1.0: + /totalist@1.1.0: resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} engines: {node: '>=6'} dev: true - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -13949,44 +14186,44 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true - /tree-kill/1.2.2: + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-lines/3.0.1: + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /trim-newlines/4.0.2: + /trim-newlines@4.0.2: resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} engines: {node: '>=12'} dev: true - /trough/2.1.0: + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-easing/0.2.0: + /ts-easing@0.2.0: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-jest/29.0.5_7zwficsud2wmcwakxus3xxpqke: + /ts-jest@29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14011,51 +14248,16 @@ packages: bs-logger: 0.2.6 esbuild: 0.17.12 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_@types+node@18.15.5 - jest-util: 29.4.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.8 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: false - - /ts-jest/29.0.5_kxkw7io5lipdvgpiby7d7545le: - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - bs-logger: 0.2.6 - esbuild: 0.17.12 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_757mb262zsxkcnuknwfdsckmku - jest-util: 29.4.0 + jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.8 typescript: 4.9.5 yargs-parser: 21.1.1 - dev: true - /ts-node/10.9.1_345kigqis4fipgyy5xb3ndshmq: + /ts-node@10.9.1(@types/node@18.15.5)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14084,9 +14286,8 @@ packages: typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsc-watch/6.0.0_typescript@4.9.5: + /tsc-watch@6.0.0(typescript@4.9.5): resolution: {integrity: sha512-zgpju+/z5z29/kK5V28Nz16CMkX2voFOUxkTlCim/R25hxzbyUqu2NfTnmJBQfESBSPbEQUGqDdB9A8opAcB4A==} engines: {node: '>=12.12.0'} hasBin: true @@ -14100,21 +14301,21 @@ packages: typescript: 4.9.5 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tslib/2.4.1: + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false - /tslib/2.5.0: + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tty-table/4.1.6: + /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} hasBin: true @@ -14128,13 +14329,13 @@ packages: yargs: 17.6.2 dev: true - /twin.macro/2.8.2: + /twin.macro@2.8.2(ts-node@10.9.1): resolution: {integrity: sha512-2Vg09mp+nA70AWUedJ8WRgB2me3buq7JGbOnjHnFnNaBzomVu5k7lJ9YGpByIlre+UYr7QRhtlj7+IUKxvCrUA==} engines: {node: '>=12.13.0'} dependencies: '@babel/parser': 7.20.1 '@babel/template': 7.18.10 - autoprefixer: 10.4.13_postcss@8.4.21 + autoprefixer: 10.4.13(postcss@8.4.21) babel-plugin-macros: 2.8.0 chalk: 4.1.2 clean-set: 1.1.2 @@ -14145,56 +14346,56 @@ packages: lodash.merge: 4.6.2 postcss: 8.4.21 string-similarity: 4.0.4 - tailwindcss: 2.2.19_gbtt6ss3tbiz4yjtvdr6fbrj44 + tailwindcss: 2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1) timsort: 0.3.0 transitivePeerDependencies: - ts-node dev: false - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest/1.4.0: + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: true - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - /type-fest/3.2.0: - resolution: {integrity: sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==} + /type-fest@3.6.1: + resolution: {integrity: sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA==} engines: {node: '>=14.16'} - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -14202,15 +14403,15 @@ packages: mime-types: 2.1.35 dev: true - /typescript/4.9.5: + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /ua-parser-js/0.7.32: + /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -14219,19 +14420,19 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unc-path-regex/0.1.2: + /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} - /undici/5.7.0: + /undici@5.7.0: resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} engines: {node: '>=12.18'} - /unfetch/5.0.0: + /unfetch@5.0.0: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} dev: true - /unified/10.1.2: + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: '@types/unist': 2.0.6 @@ -14240,50 +14441,50 @@ packages: is-buffer: 2.0.5 is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.2 + vfile: 5.3.5 dev: false - /unique-string/3.0.0: + /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} dependencies: crypto-random-string: 4.0.0 dev: true - /unist-builder/3.0.0: + /unist-builder@3.0.0: resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-generated/2.0.0: + /unist-util-generated@2.0.0: resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} dev: false - /unist-util-is/5.1.1: + /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} dev: false - /unist-util-position-from-estree/1.1.1: + /unist-util-position-from-estree@1.1.1: resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-position/4.0.3: + /unist-util-position@4.0.3: resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-remove-position/4.0.1: + /unist-util-remove-position@4.0.1: resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} dependencies: '@types/unist': 2.0.6 unist-util-visit: 4.1.1 dev: false - /unist-util-remove/3.1.0: + /unist-util-remove@3.1.0: resolution: {integrity: sha512-rO/sIghl13eN8irs5OBN2a4RC10MsJdiePCfwrvnzGtgIbHcDXr2REr0qi9F2r/CIb1r9FyyFmcMRIGs+EyUFw==} dependencies: '@types/unist': 2.0.6 @@ -14291,20 +14492,20 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /unist-util-stringify-position/3.0.2: + /unist-util-stringify-position@3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-visit-parents/5.1.1: + /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 dev: false - /unist-util-visit/4.1.1: + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: '@types/unist': 2.0.6 @@ -14312,39 +14513,39 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: false - /unixify/1.0.0: + /unixify@1.0.0: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} dependencies: normalize-path: 2.1.1 dev: false - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -14354,36 +14555,46 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /update-check/1.5.4: + /update-browserslist-db@1.0.10(browserslist@4.21.5): + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.5 + escalade: 3.1.1 + picocolors: 1.0.0 + + /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: registry-auth-token: 3.3.2 registry-url: 3.1.0 dev: true - /upper-case-first/2.0.2: + /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: tslib: 2.5.0 - /upper-case/2.0.2: + /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.5.0 - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /use-callback-ref/1.3.0_h7fc2el62uaa77gho3xhys6ola: + /use-callback-ref@1.3.0(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -14398,7 +14609,7 @@ packages: tslib: 2.5.0 dev: false - /use-debounce/8.0.4_react@17.0.2: + /use-debounce@8.0.4(react@17.0.2): resolution: {integrity: sha512-fGqsYQzl8kLHF2QpQSgIwgOgJmnh6j5L6SIzQiHdLfwp3q1egUL3btq5Bg2SJysH6A0ILLgT2IqXZKoNJr0nFw==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -14407,7 +14618,7 @@ packages: react: 17.0.2 dev: false - /use-error-boundary/2.0.6_sfoxds7t5ydpegc3knd667wn6m: + /use-error-boundary@2.0.6(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-AWCVKSAanLe6R/on/ZkHYtGKfXs8BQX6z/TUGYqtvkajLqQyrGKJJscbahtq8OyN8L3LqTRjJWx4gCOLmfIObw==} peerDependencies: react: '>=16.9.0' @@ -14417,10 +14628,10 @@ packages: optional: true dependencies: react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /use-immer/0.6.0_immer@9.0.12+react@17.0.2: + /use-immer@0.6.0(immer@9.0.12)(react@17.0.2): resolution: {integrity: sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ==} peerDependencies: immer: '>=2.0.0' @@ -14430,7 +14641,7 @@ packages: react: 17.0.2 dev: false - /use-sidecar/1.1.2_h7fc2el62uaa77gho3xhys6ola: + /use-sidecar@1.1.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -14446,30 +14657,29 @@ packages: tslib: 2.5.0 dev: false - /use-sync-external-store/1.2.0_react@17.0.2: + /use-sync-external-store@1.2.0(react@17.0.2): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 - /utf-8-validate/6.0.3: + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.5.0 - dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true - /uvu/0.5.6: + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} hasBin: true @@ -14480,11 +14690,10 @@ packages: sade: 1.8.1 dev: false - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -14492,35 +14701,34 @@ packages: '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /value-or-promise/1.0.11: + /value-or-promise@1.0.11: resolution: {integrity: sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==} engines: {node: '>=12'} dev: false - /value-or-promise/1.0.12: + /value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} - dev: true - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vfile-location/4.0.1: + /vfile-location@4.0.1: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} dependencies: '@types/unist': 2.0.6 vfile: 5.3.5 dev: false - /vfile-matter/3.0.1: + /vfile-matter@3.0.1: resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} dependencies: '@types/js-yaml': 4.0.5 @@ -14528,14 +14736,14 @@ packages: js-yaml: 4.1.0 dev: false - /vfile-message/3.1.2: + /vfile-message@3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.2 dev: false - /vfile/5.3.2: + /vfile@5.3.2: resolution: {integrity: sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==} dependencies: '@types/unist': 2.0.6 @@ -14544,7 +14752,7 @@ packages: vfile-message: 3.1.2 dev: false - /vfile/5.3.5: + /vfile@5.3.5: resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} dependencies: '@types/unist': 2.0.6 @@ -14553,7 +14761,7 @@ packages: vfile-message: 3.1.2 dev: false - /vite/4.2.1_@types+node@18.15.5: + /vite@4.2.1(@types/node@18.15.5): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -14587,31 +14795,31 @@ packages: fsevents: 2.3.2 dev: true - /void-elements/3.1.0: + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} dev: false - /vscode-oniguruma/1.7.0: + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: false - /vscode-textmate/8.0.0: - resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + /vscode-textmate@5.2.0: + resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: false - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: true - /wait-for-expect/3.0.2: + /wait-for-expect@3.0.2: resolution: {integrity: sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==} dev: false - /wait-on/7.0.1: + /wait-on@7.0.1: resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} engines: {node: '>=12.0.0'} hasBin: true @@ -14625,41 +14833,41 @@ packages: - debug dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - /warning/4.0.3: + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: loose-envify: 1.4.0 dev: false - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-streams-polyfill/3.2.1: + /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} - /web-streams-polyfill/4.0.0-beta.3: + /web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} dev: false - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /webpack-bundle-analyzer/4.3.0: + /webpack-bundle-analyzer@4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==} engines: {node: '>= 10.13.0'} hasBin: true @@ -14672,30 +14880,30 @@ packages: lodash: 4.17.21 opener: 1.5.2 sirv: 1.0.19 - ws: 7.5.9 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /well-known-symbols/2.0.0: + /well-known-symbols@2.0.0: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -14703,13 +14911,13 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -14719,7 +14927,7 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -14728,10 +14936,10 @@ packages: is-weakset: 2.0.2 dev: true - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - /which-pm/2.0.0: + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -14739,7 +14947,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array/1.1.8: + /which-typed-array@1.1.8: resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} engines: {node: '>= 0.4'} dependencies: @@ -14751,33 +14959,33 @@ packages: is-typed-array: 1.1.9 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - /widest-line/4.0.1: + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -14785,7 +14993,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -14793,7 +15001,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi/8.0.1: + /wrap-ansi@8.0.1: resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} engines: {node: '>=12'} dependencies: @@ -14802,17 +15010,17 @@ packages: strip-ansi: 7.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /write-file-atomic/5.0.0: + /write-file-atomic@5.0.0: resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: @@ -14820,7 +15028,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/7.5.9: + /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -14831,21 +15039,12 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 dev: true - /ws/8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - /ws/8.13.0: + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -14856,8 +15055,11 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 - /xdg-default-browser/2.1.0: + /xdg-default-browser@2.1.0: resolution: {integrity: sha512-HY4G725+IDQr16N8XOjAms5qJGArdJaWIuC7Q7A8UXIwj2mifqnPXephazyL7sIkQPvmEoPX3E0v2yFv6hQUNg==} engines: {node: '>=4'} dependencies: @@ -14865,56 +15067,59 @@ packages: titleize: 1.0.1 dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist/4.0.0: + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -14930,7 +15135,7 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -14943,7 +15148,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.2: + /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: @@ -14955,21 +15160,20 @@ packages: y18n: 5.0.8 yargs-parser: 21.1.1 - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /zustand/3.7.2_react@17.0.2: + /zustand@3.7.2(react@17.0.2): resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} peerDependencies: @@ -14981,13 +15185,13 @@ packages: react: 17.0.2 dev: false - /zwitch/2.0.2: + /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: false - file:packages/cli_graphql@17.0.0-alpha.2: - resolution: {directory: packages/cli, type: directory} - id: file:packages/cli + file:packages/cli/dist(graphql@17.0.0-alpha.2): + resolution: {directory: packages/cli/dist, type: directory} + id: file:packages/cli/dist name: '@gqty/cli' version: 3.3.0 engines: {node: ^12.20.0 || >=14.13.0} @@ -14998,14 +15202,14 @@ packages: graphql: optional: true dependencies: - gqty: link:packages/gqty + gqty: link:packages/gqty/dist graphql: 17.0.0-alpha.2 undici: 5.7.0 dev: true - file:packages/gqty_graphql@17.0.0-alpha.2: - resolution: {directory: packages/gqty, type: directory} - id: file:packages/gqty + file:packages/gqty/dist(graphql@17.0.0-alpha.2): + resolution: {directory: packages/gqty/dist, type: directory} + id: file:packages/gqty/dist name: gqty version: 2.3.0 engines: {node: ^12.20.0 || >=14.13.0} @@ -15015,6 +15219,6 @@ packages: graphql: optional: true dependencies: - '@gqty/utils': link:packages/utils + '@gqty/utils': link:packages/utils/dist graphql: 17.0.0-alpha.2 dev: true From 5407b469316a3acec8d184c06990f6da493bbda7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 21 Feb 2023 23:08:20 +0800 Subject: [PATCH 004/122] chore: preparation works --- internal/test-utils/jest.config.js | 16 +- package.json | 17 - packages/cli/src/generate.ts | 4 +- packages/gqty/package.json | 1 + packages/gqty/src/Accessor/index.ts | 8 +- packages/gqty/src/Client/client.ts | 3 +- packages/gqty/src/Client/resolvers.ts | 29 +- packages/gqty/src/Normalization/index.ts | 2 +- packages/gqty/src/Schema/types.ts | 83 +- pnpm-lock.yaml | 3954 ++++++++++++++++++---- 10 files changed, 3378 insertions(+), 739 deletions(-) diff --git a/internal/test-utils/jest.config.js b/internal/test-utils/jest.config.js index b6b7765ba..4ace177f2 100644 --- a/internal/test-utils/jest.config.js +++ b/internal/test-utils/jest.config.js @@ -10,14 +10,16 @@ process.env.TS_JEST_HOOKS = require.resolve('./tsJestHooks.js'); * @type {import("@jest/types").Config.InitialOptions} */ const defaultConfig = { - globals: { - 'ts-jest': { - tsconfig: require.resolve('./test/tsconfig.json'), - isolatedModules: true, - }, - }, preset: 'ts-jest', - transform: { '\\.[jt]sx?$': 'ts-jest' }, + transform: { + '\\.[jt]sx?$': [ + 'ts-jest', + { + tsconfig: require.resolve('./test/tsconfig.json'), + isolatedModules: true, + }, + ], + }, transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'], modulePathIgnorePatterns: ['/dist/'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], diff --git a/package.json b/package.json index 119f78a20..6ad720417 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,6 @@ "concurrently": "^7.6.0", "esbuild": "^0.17.12", "globby": "^13.1.3", - "graphql": "^16.6.0", "husky": "^8.0.3", "jest": "^29.5.0", "open": "^8.4.2", @@ -76,22 +75,6 @@ "mermaid@>=8.0.0 <9.1.2": ">=9.1.2", "mdx-mermaid@<1.3.0": ">=1.3.0", "d3-color@<3.1.0": ">=3.1.0" - }, - "peerDependencyRules": { - "allowedVersions": { - "graphql": "*" - }, - "ignoreMissing": [ - "@babel/preset-env", - "@babel/core", - "@algolia/client-search", - "@chakra-ui/system", - "unist-util-visit", - "prop-types", - "@envelop/core", - "rollup", - "react-native" - ] } } } diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 118fd4950..4c03368fd 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -558,7 +558,7 @@ export async function generate( const unionsMapObj = Array.from( unionsAndInterfacesObjectTypesMap.entries() ).reduce((acum, [key, value]) => { - generatedSchema[key]['$on'] = { + generatedSchema[key]!['$on'] = { __type: `$${key}!`, }; acum[key] = value; @@ -663,7 +663,7 @@ export async function generate( interfaceOrUnionsObjectTypes ? interfaceOrUnionsObjectTypes.map((v) => `"${v}"`).join(' | ') : `"${typeName}"` - }; ${Object.entries(typeValue).reduce( + }; ${Object.entries(typeValue!).reduce( (acum, [fieldKey, fieldValue]) => { if (fieldKey === '__typename') { objectTypeMap.set(fieldKey, `?: "${typeName}"`); diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 863f87eb7..10dc5917d 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -58,6 +58,7 @@ "esbuild": "^0.17.12", "graphql": "^16.6.0", "jest": "^29.5.0", + "just-memoize": "^2.2.0", "mkdirp": "^2.1.5", "open-cli": "^7.2.0", "react": "^17.0.2", diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index 91b8282a2..1b4f147c1 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -542,7 +542,7 @@ export function createAccessorCreators< const proxyValue = schemaValue instanceof SchemaUnion ? schemaValue.fieldsProxy - : Object.keys(schemaValue).reduce((acum, key) => { + : Object.keys(schemaValue!).reduce((acum, key) => { acum[key] = ProxySymbol; return acum; }, {} as Record); @@ -597,7 +597,7 @@ export function createAccessorCreators< if (!proxyValue.hasOwnProperty(key)) return; - const { __type, __args } = schemaValue[key]; + const { __type, __args } = schemaValue![key]; let { pureType, isArray } = parseSchemaType(__type); const resolve = (args?: { @@ -668,7 +668,7 @@ export function createAccessorCreators< } let typeValue: Record | SchemaUnion = - schema[pureType]; + schema[pureType]!; if (!typeValue && pureType.startsWith('$')) { typeValue = schemaUnions[(pureType = pureType.slice(1))]; @@ -686,7 +686,7 @@ export function createAccessorCreators< throw new GQtyError( `GraphQL Type not found: ${pureType}, available fields: "${Object.keys( - schemaValue + schemaValue! ).join(' | ')}"` ); }; diff --git a/packages/gqty/src/Client/client.ts b/packages/gqty/src/Client/client.ts index 64b904101..dd5ba342b 100644 --- a/packages/gqty/src/Client/client.ts +++ b/packages/gqty/src/Client/client.ts @@ -16,7 +16,7 @@ import { createPersistenceHelpers, PersistenceHelpers, } from '../Cache/persistence'; -import { GQtyError } from '../Error'; +import { GQtyError, type RetryOptions } from '../Error'; import { EventHandler } from '../Events'; import { createPrefetch, Prefetch } from '../Helpers/prefetch'; import { createRefetch, Refetch } from '../Helpers/refetch'; @@ -41,7 +41,6 @@ import { InlineResolved, Resolved, Resolvers, - RetryOptions, } from './resolvers'; export interface InnerClientState { diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 62fed635c..39a155dd2 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -1,7 +1,7 @@ import type { ExecutionResult, GraphQLError } from 'graphql'; import { CacheInstance, createCache } from '../Cache'; import { GQtyError } from '../Error'; -import { doRetry } from '../Error/retry'; +import { doRetry, type RetryOptions } from '../Error/retry'; import { createQueryBuilder } from '../QueryBuilder'; import { createSelectionManager, @@ -103,30 +103,6 @@ export interface ResolveOptions { operationName?: string; } -export type RetryOptions = - | { - /** - * Amount of retries to be made - * @default 3 - */ - maxRetries?: number; - /** - * Amount of milliseconds between each attempt, it can be a static number, - * or a function based on the attempt number - * - * @default attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000) - */ - retryDelay?: number | ((attemptIndex: number) => number); - } - /** If retries should be enabled - * @default true - */ - | boolean - /** Amount of retries to be made - * @default 3 - */ - | number; - export interface FetchResolveOptions { retry?: RetryOptions; @@ -581,8 +557,7 @@ export function createResolvers( } const executionResult = await queryFetcher( - query, - variables, + { query, variables }, options.fetchOptions ); diff --git a/packages/gqty/src/Normalization/index.ts b/packages/gqty/src/Normalization/index.ts index 883bf6be7..9b1d69a85 100644 --- a/packages/gqty/src/Normalization/index.ts +++ b/packages/gqty/src/Normalization/index.ts @@ -113,7 +113,7 @@ export function createNormalizationHandler( | NormalizationOptions> | undefined | boolean, - eventHandler: EventHandler, + eventHandler: EventHandler | undefined, schema: Readonly, scalarsEnumsHash: ScalarsEnumsHash ): NormalizationHandler | undefined { diff --git a/packages/gqty/src/Schema/types.ts b/packages/gqty/src/Schema/types.ts index 79e7db36c..7851e4098 100644 --- a/packages/gqty/src/Schema/types.ts +++ b/packages/gqty/src/Schema/types.ts @@ -1,4 +1,5 @@ import type { ExecutionResult } from 'graphql'; +import memoize from 'just-memoize'; export interface Type { __args?: Record; @@ -6,10 +7,11 @@ export interface Type { } export const SchemaUnionsKey = Symbol('unionsKey'); -export interface Schema extends Record> { +export interface Schema + extends Record | undefined> { query: Record; - mutation: Record; - subscription: Record; + mutation?: Record; + subscription?: Record; [SchemaUnionsKey]?: Record; } @@ -24,11 +26,19 @@ export type ScalarsEnumsHash = Record; export interface FetchOptions extends Omit {} -export type QueryFetcher = ( - query: string, - variables: Record | undefined, +export type QueryFetcher> = ( + payload: QueryPayload, fetchOptions?: FetchOptions -) => Promise | ExecutionResult; +) => Promise> | ExecutionResult; + +export type QueryPayload< + TExtension extends Record = Record +> = { + readonly query: string; + readonly variables?: Record; + readonly operationName?: string; + readonly extensions?: TExtension; +}; export interface ParseSchemaTypeInfo { pureType: string; @@ -45,38 +55,43 @@ export interface FieldDescription { } export type ArgsDescriptions = Record< - string, - Record - >; - -export function parseSchemaType(type: string, fieldDesc: FieldDescription | undefined = undefined): ParseSchemaTypeInfo { - let isArray = false; - let isNullable = true; - let hasDefaultValue = !!(fieldDesc && fieldDesc.defaultValue !== null); - let pureType = type; - let nullableItems = true; - if (pureType.endsWith('!')) { - isNullable = false; - pureType = pureType.slice(0, pureType.length - 1); - } + string, + Record +>; - if (pureType.startsWith('[')) { - pureType = pureType.slice(1, pureType.length - 1); - isArray = true; +export const parseSchemaType = memoize( + ( + type: string, + fieldDesc: FieldDescription | undefined = undefined + ): ParseSchemaTypeInfo => { + let isArray = false; + let isNullable = true; + let hasDefaultValue = !!(fieldDesc && fieldDesc.defaultValue !== null); + let pureType = type; + let nullableItems = true; if (pureType.endsWith('!')) { - nullableItems = false; + isNullable = false; pureType = pureType.slice(0, pureType.length - 1); } - } - return { - pureType, - isNullable, - hasDefaultValue, - isArray, - nullableItems, - }; -} + if (pureType.startsWith('[')) { + pureType = pureType.slice(1, pureType.length - 1); + isArray = true; + if (pureType.endsWith('!')) { + nullableItems = false; + pureType = pureType.slice(0, pureType.length - 1); + } + } + + return { + pureType, + isNullable, + hasDefaultValue, + isArray, + nullableItems, + }; + } +); export type DeepPartial = T extends Function ? T diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 466085cfa..00ac5c6c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,9 +66,6 @@ importers: globby: specifier: ^13.1.3 version: 13.1.3 - graphql: - specifier: ^16.6.0 - version: 16.6.0 husky: specifier: ^8.0.3 version: 8.0.3 @@ -92,7 +89,7 @@ importers: version: 7.3.8 ts-jest: specifier: ^29.0.5 - version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + version: 29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) @@ -207,7 +204,7 @@ importers: version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) next: specifier: ^12.3.4 - version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) react: specifier: ^17.0.2 version: 17.0.2 @@ -311,7 +308,7 @@ importers: version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-dataloader': specifier: ^0.8.0 - version: 0.8.0(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@envelop/core@3.0.4)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-schema': specifier: ^0.9.0 version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) @@ -323,7 +320,7 @@ importers: version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) '@react-native-async-storage/async-storage': specifier: ^1.17.12 - version: 1.17.12 + version: 1.17.12(react-native@0.71.6) '@types/extract-files': specifier: ^8.1.1 version: 8.1.1 @@ -362,7 +359,7 @@ importers: version: 3.0.0-canary.1 next: specifier: ^12.3.4 - version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) node-json-db: specifier: ^2.1.5 version: 2.1.5 @@ -543,7 +540,7 @@ importers: version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) '@rollup/plugin-babel': specifier: ^6.0.3 - version: 6.0.3 + version: 6.0.3(@babel/core@7.21.0) '@types/jest': specifier: ^29.5.0 version: 29.5.0 @@ -573,7 +570,7 @@ importers: version: 1.2.3 ts-jest: specifier: ^29.0.5 - version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + version: 29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) wait-for-expect: specifier: ^3.0.2 version: 3.0.2 @@ -613,7 +610,7 @@ importers: dependencies: '@chakra-ui/icons': specifier: ^1.1.7 - version: 1.1.7(react@17.0.2) + version: 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react': specifier: ^1.8.9 version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) @@ -631,7 +628,7 @@ importers: version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) '@guild-docs/client': specifier: 2.1.1 - version: 2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1) + version: 2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3) '@guild-docs/server': specifier: 4.0.0 version: 4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.10.1) @@ -640,7 +637,7 @@ importers: version: 2.3.0(react@17.0.2) '@theguild/components': specifier: ^1.12.0 - version: 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + version: 1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) csstype: specifier: ^3.1.1 version: 3.1.1 @@ -652,7 +649,7 @@ importers: version: 22.4.13 next: specifier: ^12.3.4 - version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) next-i18next: specifier: ^13.2.2 version: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) @@ -858,6 +855,9 @@ importers: jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + just-memoize: + specifier: ^2.2.0 + version: 2.2.0 mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -1083,29 +1083,27 @@ packages: '@algolia/autocomplete-shared': 1.7.2 dev: false - /@algolia/autocomplete-js@1.7.2(algoliasearch@4.14.2): + /@algolia/autocomplete-js@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-/x0r0510yEHtTt9+JIhWa9CIvS2s95n5eSyKrCXA6QF8DYKJV+LQpGCpHnO4gEHJFEe0itVdmws3DzOZrBGa9Q==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 + '@algolia/client-search': 4.14.2 htm: 3.1.1 preact: 10.11.2 transitivePeerDependencies: - algoliasearch dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1): + /@algolia/autocomplete-plugin-algolia-insights@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.2.1): resolution: {integrity: sha512-dyWJ3Hpn0vGy+Lxd6BZYUupIPB/j7ZA4uzmQ+ThRQF3fjQMpDk4/zNi8/hf0r0Ow9tXOQ7ALKJtHbxWIT/f/Uw==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 search-insights: 2.2.1 transitivePeerDependencies: @@ -1113,32 +1111,28 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-query-suggestions@1.7.2(algoliasearch@4.14.2): + /@algolia/autocomplete-plugin-query-suggestions@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-lM1B4tsJP+5ePHqXl4kuanmclu8uppmknNTTzWfinjuNRY2WrypwfqrBaCIztbZZYAfs7s0qeC/XXhA4PPSqoA==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' algoliasearch: '>= 4.5.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) - '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 + '@algolia/client-search': 4.14.2 algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-preset-algolia@1.7.2(algoliasearch@4.14.2): + /@algolia/autocomplete-preset-algolia@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): resolution: {integrity: sha512-+RYEG6B0QiGGfRb2G3MtPfyrl0dALF3cQNTWBzBX6p5o01vCCGTTinAm2UKG3tfc2CnOMAtnPLkzNZyJUpnVJw==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' - peerDependenciesMeta: - '@algolia/client-search': - optional: true dependencies: '@algolia/autocomplete-shared': 1.7.2 + '@algolia/client-search': 4.14.2 algoliasearch: 4.14.2 dev: false @@ -1300,6 +1294,11 @@ packages: resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.21.4: + resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/core@7.19.6: resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==} engines: {node: '>=6.9.0'} @@ -1359,14 +1358,19 @@ packages: dependencies: '@babel/types': 7.21.2 + /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: + resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.21.4 + dev: false + /@babel/helper-compilation-targets@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/compat-data': 7.20.1 '@babel/core': 7.19.6 @@ -1379,9 +1383,6 @@ packages: engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/compat-data': 7.21.0 '@babel/core': 7.21.0 @@ -1390,14 +1391,25 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: false + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 @@ -1411,10 +1423,44 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.2 + dev: false + + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.0): + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} + /@babel/helper-explode-assignable-expression@7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: false + /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} @@ -1440,6 +1486,13 @@ packages: dependencies: '@babel/types': 7.20.0 + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + dev: false + /@babel/helper-module-transforms@7.19.6: resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} engines: {node: '>=6.9.0'} @@ -1480,6 +1533,21 @@ packages: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} @@ -1533,6 +1601,18 @@ packages: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} + /@babel/helper-wrap-function@7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.21.0 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.4 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helpers@7.20.1: resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} engines: {node: '>=6.9.0'} @@ -1575,530 +1655,1177 @@ packages: dependencies: '@babel/types': 7.21.2 - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color + dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true + '@babel/core': ^7.13.0 dependencies: - '@babel/compat-data': 7.21.0 '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.6): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 + '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.6): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} + engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true + '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + /@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.21.0): + resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-default-from': 7.18.6(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.19.6): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.6): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.6): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.6): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + dev: false - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.0): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.19.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-export-default-from@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.0): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.19.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.6): + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.0): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.0): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.19.6): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.0): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.19.6): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.19.6 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.0): + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + dev: false + + /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.0): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.21.0): + resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + dev: false + + /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.0): + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.0): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.21.0): + resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.0): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.0): + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.19.6): - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.0): + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): - resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.0): - resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.0): + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.0): - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.0): + resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/types': 7.21.2 - /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.0): + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.1 + dev: false - /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.21.0): - resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + dev: false - /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.0): - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) - '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.0): + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.0): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: false - /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.21.0): - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color + dev: false - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.20.7 - transitivePeerDependencies: - - supports-color - /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.0): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.0): + resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.0): + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: false - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.0): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: true + dev: false - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.0): - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + /@babel/preset-env@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: + '@babel/compat-data': 7.21.4 '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: true + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.21.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.0) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) + '@babel/plugin-transform-modules-systemjs': 7.20.11(@babel/core@7.21.0) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.0) + '@babel/plugin-transform-new-target': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-regenerator': 7.20.5(@babel/core@7.21.0) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.0) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.0) + '@babel/preset-modules': 0.1.5(@babel/core@7.21.0) + '@babel/types': 7.21.4 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) + core-js-compat: 3.30.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.0): - resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} + /@babel/preset-flow@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) - '@babel/types': 7.21.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) + dev: false - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} + /@babel/preset-modules@0.1.5(@babel/core@7.21.0): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) + '@babel/types': 7.21.4 + esutils: 2.0.3 + dev: false - /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.0): - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} + /@babel/preset-typescript@7.21.4(@babel/core@7.21.0): + resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) + '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + /@babel/register@7.21.0(@babel/core@7.21.0): + resolution: {integrity: sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.5 + source-map-support: 0.5.21 + dev: false + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: false /@babel/runtime@7.20.6: resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} @@ -2161,6 +2888,15 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + /@babel/types@7.21.4: + resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: false + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2174,9 +2910,6 @@ packages: '@chakra-ui/system': '>=1.0.0' framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/descendant': 2.1.4(react@17.0.2) '@chakra-ui/hooks': 1.9.1(react@17.0.2) @@ -2194,9 +2927,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2209,9 +2939,6 @@ packages: resolution: {integrity: sha512-vj/lcHkCuq/dtbl69DkNsftZTnrGEegB90ODs1B6rxw8iVMdDSYkthPPFAkqzNs4ppv1y2IBjELuVzpeta1OHA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) @@ -2222,9 +2949,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/image': 1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2238,9 +2962,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2253,9 +2974,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2271,9 +2989,6 @@ packages: '@chakra-ui/system': '>=1.0.0' framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/hooks': 1.9.1(react@17.0.2) @@ -2300,9 +3015,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2326,9 +3038,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 @@ -2369,9 +3078,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2397,9 +3103,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) @@ -2426,25 +3129,20 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/icons@1.1.7(react@17.0.2): + /@chakra-ui/icons@1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false @@ -2453,10 +3151,7 @@ packages: resolution: {integrity: sha512-PJZmhQ/R1PgdMyCRjALfoyq1FNh/WzMAw70sliHLtLcb9hBXniwQZuckYfUshCkUoFBj/ow9d4byn9Culdpk7Q==} peerDependencies: '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true + react: '>=16.8.6' dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2469,9 +3164,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2485,9 +3177,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2511,9 +3200,6 @@ packages: '@chakra-ui/system': '>=1.0.0' '@chakra-ui/theme': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/react-env': 1.1.6(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2528,9 +3214,6 @@ packages: '@chakra-ui/system': '>=1.0.0' framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/clickable': 1.2.6(react@17.0.2) '@chakra-ui/descendant': 2.1.4(react@17.0.2) @@ -2551,9 +3234,6 @@ packages: framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' react-dom: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/focus-lock': 1.2.6(@types/react@17.0.53)(react@17.0.2) @@ -2577,9 +3257,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/counter': 1.2.10(react@17.0.2) '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) @@ -2596,9 +3273,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/descendant': 2.1.4(react@17.0.2) '@chakra-ui/hooks': 1.9.1(react@17.0.2) @@ -2614,9 +3288,6 @@ packages: '@chakra-ui/system': '>=1.0.0' framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/hooks': 1.9.1(react@17.0.2) @@ -2656,9 +3327,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) @@ -2691,9 +3359,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/hooks': 1.9.1(react@17.0.2) @@ -2792,9 +3457,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2825,9 +3487,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/react-utils': 1.2.3(react@17.0.2) @@ -2841,9 +3500,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 @@ -2856,9 +3512,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2880,9 +3533,6 @@ packages: '@chakra-ui/system': '>=1.0.0' framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/checkbox': 1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2913,9 +3563,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 @@ -2927,9 +3574,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/clickable': 1.2.6(react@17.0.2) '@chakra-ui/descendant': 2.1.4(react@17.0.2) @@ -2945,9 +3589,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2960,9 +3601,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -2974,9 +3612,6 @@ packages: resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} peerDependencies: '@chakra-ui/system': '>=1.0.0' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 @@ -2987,9 +3622,6 @@ packages: resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/anatomy': 1.3.0(@chakra-ui/system@1.12.1) '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) @@ -3004,9 +3636,6 @@ packages: framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' react-dom: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/alert': 1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) @@ -3028,9 +3657,6 @@ packages: framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' react-dom: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/popper': 2.4.3(react@17.0.2) @@ -3069,9 +3695,6 @@ packages: peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true dependencies: '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 @@ -3408,28 +4031,24 @@ packages: '@envelop/types': 3.0.1 tslib: 2.4.0 - /@envelop/dataloader@4.0.4(dataloader@2.1.0): + /@envelop/dataloader@4.0.4(@envelop/core@3.0.4)(dataloader@2.1.0): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} peerDependencies: '@envelop/core': ^3.0.4 dataloader: ^2.0.0 - peerDependenciesMeta: - '@envelop/core': - optional: true dependencies: + '@envelop/core': 3.0.4 dataloader: 2.1.0 tslib: 2.5.0 dev: false - /@envelop/execute-subscription-event@3.0.4(graphql@16.6.0): + /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.4)(graphql@16.6.0): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 - graphql: '*' - peerDependenciesMeta: - '@envelop/core': - optional: true + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: + '@envelop/core': 3.0.4 graphql: 16.6.0 tslib: 2.5.0 dev: false @@ -3651,7 +4270,7 @@ packages: dependencies: '@fastify/under-pressure': 8.1.0 fastify-plugin: 4.3.0 - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) dev: true /@fastify/under-pressure@8.1.0: @@ -3664,7 +4283,7 @@ packages: /@graphql-codegen/core@2.6.8(graphql@16.6.0): resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-tools/schema': 9.0.14(graphql@16.6.0) @@ -3676,7 +4295,7 @@ packages: /@graphql-codegen/core@3.1.0(graphql@16.6.0): resolution: {integrity: sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw==} peerDependencies: - graphql: '*' + 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': 4.1.0(graphql@16.6.0) '@graphql-tools/schema': 9.0.16(graphql@16.6.0) @@ -3688,7 +4307,7 @@ packages: /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: - graphql: '*' + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) change-case-all: 1.0.15 @@ -3702,7 +4321,7 @@ packages: /@graphql-codegen/plugin-helpers@4.1.0(graphql@16.6.0): resolution: {integrity: sha512-xvSHJb9OGb5CODIls0AI1rCenLz+FuiaNPCsfHMCNsLDjOZK2u0jAQ9zUBdc/Wb+21YXZujBCc0Vm1QX+Zz0nw==} peerDependencies: - graphql: '*' + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) change-case-all: 1.0.15 @@ -3716,7 +4335,7 @@ packages: /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -3727,7 +4346,7 @@ packages: /@graphql-codegen/schema-ast@3.0.1(graphql@16.6.0): resolution: {integrity: sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw==} peerDependencies: - graphql: '*' + 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': 4.1.0(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -3738,7 +4357,7 @@ packages: /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) @@ -3754,7 +4373,7 @@ packages: /@graphql-codegen/typescript-operations@2.5.10(graphql@16.6.0): resolution: {integrity: sha512-N5H7JhcMRzjM2KdvCitqkOd4hphzD9q3NVWGLvBe3Xgqx5Cs3Y4GUcCJbRolSXdQcYBVgZpLZrUe/qoxwYyfeg==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) @@ -3770,7 +4389,7 @@ packages: /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.6.0): resolution: {integrity: sha512-MCts4Vq4l8j5zxbfSjm3bkqYOsMWF9yzzNakYSTWsQZqxqAggsiMz18GTdhQvWCtFt6eKYadVrX3WDZBLuAHOA==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) @@ -3787,7 +4406,7 @@ packages: /@graphql-codegen/typescript@2.8.8(graphql@16.6.0): resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} peerDependencies: - graphql: '*' + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) '@graphql-codegen/schema-ast': 2.6.1(graphql@16.6.0) @@ -3803,7 +4422,7 @@ packages: /@graphql-codegen/typescript@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-qD6QkTB+2eJmIaZ6Tihv6HRz7daWWLz9uw5vwCmPeZN6XL2RINZGLkR7D8BQzLDlNGMrpQ4SeSM9o3ZALSCIuQ==} peerDependencies: - graphql: '*' + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) '@graphql-codegen/schema-ast': 3.0.1(graphql@16.6.0) @@ -3819,7 +4438,7 @@ packages: /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) @@ -3840,7 +4459,7 @@ packages: /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.6.0): resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} peerDependencies: - graphql: '*' + 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': 3.1.2(graphql@16.6.0) '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) @@ -3861,7 +4480,7 @@ packages: /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-dKblRFrB0Fdl3+nPlzlLBka+TN/EGwr/q09mwry0H58z3j6gXkMbsdPr+dc8MhgOV7w/8egRvSPIvd7m6eFCnw==} peerDependencies: - graphql: '*' + 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': 4.1.0(graphql@16.6.0) '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) @@ -4011,7 +4630,7 @@ packages: cors: 2.8.5 graphql: 16.6.0 graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) dev: false /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): @@ -4062,14 +4681,14 @@ packages: - supports-color dev: false - /@graphql-ez/plugin-dataloader@0.8.0(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.4)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@envelop/dataloader': 4.0.4(dataloader@2.1.0) - '@envelop/execute-subscription-event': 3.0.4(graphql@16.6.0) + '@envelop/dataloader': 4.0.4(@envelop/core@3.0.4)(dataloader@2.1.0) + '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.4)(graphql@16.6.0) dataloader: 2.1.0 graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: @@ -4176,7 +4795,7 @@ packages: /@graphql-tools/batch-execute@8.5.18(graphql@16.6.0): resolution: {integrity: sha512-mNv5bpZMLLwhkmPA6+RP81A6u3KF4CSKLf3VX9hbomOkQR4db8pNs8BOvpZU54wKsUzMzdlws/2g/Dabyb2Vsg==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) dataloader: 2.2.2 @@ -4188,7 +4807,7 @@ packages: /@graphql-tools/delegate@9.0.28(graphql@16.6.0): resolution: {integrity: sha512-8j23JCs2mgXqnp+5K0v4J3QBQU/5sXd9miaLvMfRf/6963DznOXTECyS9Gcvj1VEeR5CXIw6+aX/BvRDKDdN1g==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/batch-execute': 8.5.18(graphql@16.6.0) '@graphql-tools/executor': 0.0.15(graphql@16.6.0) @@ -4203,7 +4822,7 @@ packages: /@graphql-tools/executor@0.0.15(graphql@16.6.0): resolution: {integrity: sha512-6U7QLZT8cEUxAMXDP4xXVplLi6RBwx7ih7TevlBto66A/qFp3PDb6o/VFo07yBKozr8PGMZ4jMfEWBGxmbGdxA==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@graphql-typed-document-node/core': 3.1.2(graphql@16.6.0) @@ -4216,7 +4835,7 @@ packages: /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/import': 6.7.14(graphql@16.6.0) '@graphql-tools/utils': 9.1.3(graphql@16.6.0) @@ -4229,7 +4848,7 @@ packages: /@graphql-tools/import@6.7.14(graphql@16.6.0): resolution: {integrity: sha512-lRX/MHM0Km497kg4VXMvtV1DeG/AfPJFO2ovaL0kDujWEdyCsWxsB4whY7nPeiNaPA/nT3mQ8MU7yFzVjogF/Q==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 @@ -4240,7 +4859,7 @@ packages: /@graphql-tools/load@7.8.8(graphql@16.6.0): resolution: {integrity: sha512-gMuQdO2jXmI0BNUc1MafxRQTWVMUtuH500pZAQtOdDdNJppV7lJdY6mMhITQ2qnhYDuMrcZPHhIkcftyQfkgUg==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/schema': 9.0.12(graphql@16.6.0) '@graphql-tools/utils': 9.1.3(graphql@16.6.0) @@ -4252,7 +4871,7 @@ packages: /@graphql-tools/merge@8.3.14(graphql@16.6.0): resolution: {integrity: sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 @@ -4262,7 +4881,7 @@ packages: /@graphql-tools/merge@8.3.16(graphql@16.6.0): resolution: {integrity: sha512-In0kcOZcPIpYOKaqdrJ3thdLPE7TutFnL9tbrHUy2zCinR2O/blpRC48jPckcs0HHrUQ0pGT4HqvzMkZUeEBAw==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.1.4(graphql@16.6.0) graphql: 16.6.0 @@ -4272,7 +4891,7 @@ packages: /@graphql-tools/merge@8.3.18(graphql@16.6.0): resolution: {integrity: sha512-R8nBglvRWPAyLpZL/f3lxsY7wjnAeE0l056zHhcO/CgpvK76KYUt9oEkR05i8Hmt8DLRycBN0FiotJ0yDQWTVA==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 @@ -4282,7 +4901,7 @@ packages: /@graphql-tools/optimize@1.3.1(graphql@16.6.0): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 tslib: 2.5.0 @@ -4290,7 +4909,7 @@ packages: /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) '@graphql-tools/utils': 8.13.1(graphql@16.6.0) @@ -4303,7 +4922,7 @@ packages: /@graphql-tools/schema@9.0.12(graphql@16.6.0): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/merge': 8.3.14(graphql@16.6.0) '@graphql-tools/utils': 9.1.3(graphql@16.6.0) @@ -4315,7 +4934,7 @@ packages: /@graphql-tools/schema@9.0.14(graphql@16.6.0): resolution: {integrity: sha512-U6k+HY3Git+dsOEhq+dtWQwYg2CAgue8qBvnBXoKu5eEeH284wymMUoNm0e4IycOgMCJANVhClGEBIkLRu3FQQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/merge': 8.3.16(graphql@16.6.0) '@graphql-tools/utils': 9.1.4(graphql@16.6.0) @@ -4327,7 +4946,7 @@ packages: /@graphql-tools/schema@9.0.16(graphql@16.6.0): resolution: {integrity: sha512-kF+tbYPPf/6K2aHG3e1SWIbapDLQaqnIHVRG6ow3onkFoowwtKszvUyOASL6Krcv2x9bIMvd1UkvRf9OaoROQQ==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/merge': 8.3.18(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -4339,7 +4958,7 @@ packages: /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 tslib: 2.5.0 @@ -4347,7 +4966,7 @@ packages: /@graphql-tools/utils@9.1.3(graphql@16.6.0): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 tslib: 2.5.0 @@ -4356,7 +4975,7 @@ packages: /@graphql-tools/utils@9.1.4(graphql@16.6.0): resolution: {integrity: sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 tslib: 2.5.0 @@ -4365,7 +4984,7 @@ packages: /@graphql-tools/utils@9.2.1(graphql@16.6.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 @@ -4374,7 +4993,7 @@ packages: /@graphql-tools/wrap@9.3.7(graphql@16.6.0): resolution: {integrity: sha512-gavfiWLKgvmC2VPamnMzml3zmkBoo0yt+EmOLIHY6O92o4uMTR281WGM77tZIfq+jzLtjoIOThUSjC/cN/6XKg==} peerDependencies: - graphql: '*' + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/delegate': 9.0.28(graphql@16.6.0) '@graphql-tools/schema': 9.0.16(graphql@16.6.0) @@ -4387,7 +5006,7 @@ packages: /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} peerDependencies: - graphql: '*' + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 dev: true @@ -4395,18 +5014,18 @@ packages: /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: - graphql: '*' + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 /@graphql-typed-document-node/core@3.2.0(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: - graphql: '*' + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 17.0.0-alpha.2 - /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1): + /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3): resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} peerDependencies: '@chakra-ui/icons': '*' @@ -4429,19 +5048,19 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7(react@17.0.2) + '@chakra-ui/icons': 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) '@mdx-js/react': 2.3.0(react@17.0.2) - '@theguild/components': 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + '@theguild/components': 1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) immer: 9.0.12 - mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2) + mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2)(unist-util-visit@2.0.3) mermaid: 9.1.7 - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) nprogress: 0.2.0 @@ -4502,7 +5121,7 @@ packages: github-slugger: 1.4.0 globby: 13.1.1 gray-matter: 4.0.3 - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -4552,13 +5171,11 @@ packages: /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: true /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 - dev: true /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -4626,6 +5243,13 @@ packages: - supports-color - ts-node + /@jest/create-cache-key-function@29.5.0: + resolution: {integrity: sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + dev: false + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4762,6 +5386,28 @@ packages: transitivePeerDependencies: - supports-color + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.15.5 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + dev: false + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.15.5 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: false + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4796,6 +5442,13 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + /@jridgewell/source-map@0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: false + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -5290,71 +5943,266 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-visually-hidden@0.1.4(react@17.0.2): - resolution: {integrity: sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==} - peerDependencies: - react: ^16.8 || ^17.0 + /@radix-ui/react-visually-hidden@0.1.4(react@17.0.2): + resolution: {integrity: sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==} + peerDependencies: + react: ^16.8 || ^17.0 + dependencies: + '@babel/runtime': 7.21.0 + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + react: 17.0.2 + dev: false + + /@reach/alert@0.13.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg==} + peerDependencies: + react: ^16.8.0 || 17.x + react-dom: ^16.8.0 || 17.x + dependencies: + '@reach/utils': 0.13.2(react-dom@17.0.2)(react@17.0.2) + '@reach/visually-hidden': 0.13.2(react-dom@17.0.2)(react@17.0.2) + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.0 + dev: false + + /@reach/utils@0.13.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-3ir6cN60zvUrwjOJu7C6jec/samqAeyAB12ZADK+qjnmQPdzSYldrFWwDVV5H0WkhbYXR3uh+eImu13hCetNPQ==} + peerDependencies: + react: ^16.8.0 || 17.x + react-dom: ^16.8.0 || 17.x + dependencies: + '@types/warning': 3.0.0 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.0 + warning: 4.0.3 + dev: false + + /@reach/visually-hidden@0.13.2(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-sPZwNS0/duOuG0mYwE5DmgEAzW9VhgU3aIt1+mrfT/xiT9Cdncqke+kRBQgU708q/Ttm9tWsoHni03nn/SuPTQ==} + peerDependencies: + react: ^16.8.0 || 17.x + react-dom: ^16.8.0 || 17.x + dependencies: + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + tslib: 2.5.0 + dev: false + + /@react-native-async-storage/async-storage@1.17.12(react-native@0.71.6): + resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} + peerDependencies: + react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 + dependencies: + merge-options: 3.0.4 + react-native: 0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3) + dev: false + + /@react-native-community/cli-clean@10.1.1: + resolution: {integrity: sha512-iNsrjzjIRv9yb5y309SWJ8NDHdwYtnCpmxZouQDyOljUdC9MwdZ4ChbtA4rwQyAwgOVfS9F/j56ML3Cslmvrxg==} + dependencies: + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + execa: 1.0.0 + prompts: 2.4.2 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-config@10.1.1: + resolution: {integrity: sha512-p4mHrjC+s/ayiNVG6T35GdEGdP6TuyBUg5plVGRJfTl8WT6LBfLYLk+fz/iETrEZ/YkhQIsQcEUQC47MqLNHog==} + dependencies: + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 3.3.0 + glob: 7.2.3 + joi: 17.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-debugger-ui@10.0.0: + resolution: {integrity: sha512-8UKLcvpSNxnUTRy8CkCl27GGLqZunQ9ncGYhSrWyKrU9SWBJJGeZwi2k2KaoJi5FvF2+cD0t8z8cU6lsq2ZZmA==} + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@react-native-community/cli-doctor@10.2.2: + resolution: {integrity: sha512-49Ep2aQOF0PkbAR/TcyMjOm9XwBa8VQr+/Zzf4SJeYwiYLCT1NZRAVAVjYRXl0xqvq5S5mAGZZShS4AQl4WsZw==} + dependencies: + '@react-native-community/cli-config': 10.1.1 + '@react-native-community/cli-platform-ios': 10.2.1 + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + command-exists: 1.2.9 + envinfo: 7.8.1 + execa: 1.0.0 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + node-stream-zip: 1.15.0 + ora: 5.4.1 + prompts: 2.4.2 + semver: 6.3.0 + strip-ansi: 5.2.0 + sudo-prompt: 9.2.1 + wcwidth: 1.0.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-hermes@10.2.0: + resolution: {integrity: sha512-urfmvNeR8IiO/Sd92UU3xPO+/qI2lwCWQnxOkWaU/i2EITFekE47MD6MZrfVulRVYRi5cuaFqKZO/ccOdOB/vQ==} + dependencies: + '@react-native-community/cli-platform-android': 10.2.0 + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-android@10.2.0: + resolution: {integrity: sha512-CBenYwGxwFdObZTn1lgxWtMGA5ms2G/ALQhkS+XTAD7KHDrCxFF9yT/fnAjFZKM6vX/1TqGI1RflruXih3kAhw==} + dependencies: + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + execa: 1.0.0 + glob: 7.2.3 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-platform-ios@10.2.1: + resolution: {integrity: sha512-hz4zu4Y6eyj7D0lnZx8Mf2c2si8y+zh/zUTgCTaPPLzQD8jSZNNBtUUiA1cARm2razpe8marCZ1QbTMAGbf3mg==} + dependencies: + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + execa: 1.0.0 + fast-xml-parser: 4.1.3 + glob: 7.2.3 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-plugin-metro@10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-sTGjZlD3OGqbF9v1ajwUIXhGmjw9NyJ/14Lo0sg7xH8Pv4qUd5ZvQ6+DWYrQn3IKFUMfGFWYyL81ovLuPylrpw==} + dependencies: + '@react-native-community/cli-server-api': 10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 + execa: 1.0.0 + metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-config: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-core: 0.73.9 + metro-react-native-babel-transformer: 0.73.9(@babel/core@7.21.0) + metro-resolver: 0.73.9 + metro-runtime: 0.73.9 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-server-api@10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-NZDo/wh4zlm8as31UEBno2bui8+ufzsZV+KN7QjEJWEM0levzBtxaD+4je0OpfhRIIkhaRm2gl/vVf7OYAzg4g==} + dependencies: + '@react-native-community/cli-debugger-ui': 10.0.0 + '@react-native-community/cli-tools': 10.1.1 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-tools@10.1.1: + resolution: {integrity: sha512-+FlwOnZBV+ailEzXjcD8afY2ogFEBeHOw/8+XXzMgPaquU2Zly9B+8W089tnnohO3yfiQiZqkQlElP423MY74g==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.6.7 + open: 6.4.0 + ora: 5.4.1 + semver: 6.3.0 + shell-quote: 1.7.4 + transitivePeerDependencies: + - encoding + dev: false + + /@react-native-community/cli-types@10.0.0: + resolution: {integrity: sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw==} dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-primitive': 0.1.4(react@17.0.2) - react: 17.0.2 + joi: 17.7.0 dev: false - /@reach/alert@0.13.2(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg==} - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x + /@react-native-community/cli@10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-aZVcVIqj+OG6CrliR/Yn8wHxrvyzbFBY9cj7n0MvRw/P54QUru2nNqUTSSbqv0Qaa297yHJbe6kFDojDMSTM8Q==} + engines: {node: '>=14'} + hasBin: true dependencies: - '@reach/utils': 0.13.2(react-dom@17.0.2)(react@17.0.2) - '@reach/visually-hidden': 0.13.2(react-dom@17.0.2)(react@17.0.2) - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 + '@react-native-community/cli-clean': 10.1.1 + '@react-native-community/cli-config': 10.1.1 + '@react-native-community/cli-debugger-ui': 10.0.0 + '@react-native-community/cli-doctor': 10.2.2 + '@react-native-community/cli-hermes': 10.2.0 + '@react-native-community/cli-plugin-metro': 10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@react-native-community/cli-server-api': 10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-types': 10.0.0 + chalk: 4.1.2 + commander: 9.4.1 + execa: 1.0.0 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.10 + prompts: 2.4.2 + semver: 6.3.0 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate dev: false - /@reach/utils@0.13.2(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-3ir6cN60zvUrwjOJu7C6jec/samqAeyAB12ZADK+qjnmQPdzSYldrFWwDVV5H0WkhbYXR3uh+eImu13hCetNPQ==} - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - dependencies: - '@types/warning': 3.0.0 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 - warning: 4.0.3 + /@react-native/assets@1.0.0: + resolution: {integrity: sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==} dev: false - /@reach/visually-hidden@0.13.2(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-sPZwNS0/duOuG0mYwE5DmgEAzW9VhgU3aIt1+mrfT/xiT9Cdncqke+kRBQgU708q/Ttm9tWsoHni03nn/SuPTQ==} - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - dependencies: - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 + /@react-native/normalize-color@2.1.0: + resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} dev: false - /@react-native-async-storage/async-storage@1.17.12: - resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} - peerDependencies: - react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 - peerDependenciesMeta: - react-native: - optional: true - dependencies: - merge-options: 3.0.4 + /@react-native/polyfills@2.0.0: + resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} dev: false /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true - /@rollup/plugin-babel@6.0.3: + /@rollup/plugin-babel@6.0.3(@babel/core@7.21.0): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5362,13 +6210,12 @@ packages: '@types/babel__core': ^7.1.9 rollup: ^1.20.0||^2.0.0||^3.0.0 peerDependenciesMeta: - '@babel/core': - optional: true '@types/babel__core': optional: true rollup: optional: true dependencies: + '@babel/core': 7.21.0 '@babel/helper-module-imports': 7.18.6 '@rollup/pluginutils': 5.0.2 dev: false @@ -5399,15 +6246,12 @@ packages: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 - dev: true /@sideway/formula@3.0.0: resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} - dev: true /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: true /@sinclair/typebox@0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} @@ -5557,21 +6401,21 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: true - /@theguild/components@1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): + /@theguild/components@1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} peerDependencies: react: ^17.0.2 react-dom: ^17.0.2 dependencies: - '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) - '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1) - '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.2.1) + '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) '@algolia/autocomplete-theme-classic': 1.7.2 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) '@radix-ui/react-navigation-menu': 0.1.2(react-dom@17.0.2)(react@17.0.2) algoliasearch: 4.14.2 - focus-trap-react: 9.0.2(react-dom@17.0.2)(react@17.0.2) + focus-trap-react: 9.0.2(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) polished: 4.2.2 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -5968,6 +6812,18 @@ packages: /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + /@types/yargs@15.0.15: + resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: false + + /@types/yargs@16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: false + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: @@ -6005,6 +6861,10 @@ packages: dependencies: event-target-shim: 5.0.1 + /absolute-path@0.0.0: + resolution: {integrity: sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==} + dev: false + /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} @@ -6014,7 +6874,6 @@ packages: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: true /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -6126,6 +6985,10 @@ packages: resolution: {integrity: sha512-PlG7yCBfV+dvBWRJBFb/v9m8N7lZcBTFdYNV1WIQfHW7w/sU8yat35uxGoAQ9K7XkOHNpRF0wdyRqmGwtro0bg==} dev: false + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + dev: false + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -6150,6 +7013,19 @@ packages: type-fest: 3.6.1 dev: false + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + dev: false + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + dev: false + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -6186,6 +7062,10 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + dev: false + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -6228,6 +7108,21 @@ packages: deep-equal: 2.0.5 dev: true + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} @@ -6251,6 +7146,11 @@ packages: engines: {node: '>=0.10.0'} dev: false + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: false + /array.prototype.flat@1.3.0: resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} @@ -6284,15 +7184,46 @@ packages: /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + + /ast-types@0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + dependencies: + tslib: 2.5.0 + dev: false + + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + dev: false + /astring@1.8.3: resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} hasBin: true dev: false + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false + + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: false + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: false + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -6399,14 +7330,19 @@ packages: - debug dev: true + /babel-core@7.0.0-bridge.0(@babel/core@7.21.0): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + dev: false + /babel-jest@29.5.0(@babel/core@7.19.6): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.19.6 '@jest/transform': 29.5.0 @@ -6457,6 +7393,42 @@ packages: resolve: 1.22.1 dev: false + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.0): + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.0 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.0): + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) + core-js-compat: 3.30.0 + transitivePeerDependencies: + - supports-color + dev: false + + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.0): + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) + transitivePeerDependencies: + - supports-color + dev: false + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -6464,9 +7436,6 @@ packages: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.19.6 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.6) @@ -6486,9 +7455,6 @@ packages: resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.21.0 '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) @@ -6526,9 +7492,6 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true dependencies: '@babel/core': 7.19.6 babel-plugin-jest-hoist: 29.5.0 @@ -6547,6 +7510,19 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: false + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -6563,6 +7539,14 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: false + /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true @@ -6706,6 +7690,24 @@ packages: balanced-match: 1.0.2 dev: true + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -6752,6 +7754,13 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -6794,7 +7803,6 @@ packages: /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} - dev: true /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -6819,6 +7827,21 @@ packages: yargs-parser: 20.2.9 dev: true + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: false + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -6826,6 +7849,25 @@ packages: get-intrinsic: 1.1.3 dev: true + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + dev: false + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + dev: false + + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + dev: false + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -7027,6 +8069,10 @@ packages: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} dev: true + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: false + /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} @@ -7038,6 +8084,16 @@ packages: /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: false + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false @@ -7063,6 +8119,18 @@ packages: engines: {node: '>=10'} dev: true + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: false + + /cli-spinners@2.8.0: + resolution: {integrity: sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==} + engines: {node: '>=6'} + dev: false + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7103,10 +8171,18 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: false + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -7122,6 +8198,14 @@ packages: /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -7161,6 +8245,10 @@ packages: color-string: 1.9.1 dev: false + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -7172,11 +8260,19 @@ packages: resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} dev: false + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: false + /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} dev: true + /commander@2.13.0: + resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} + dev: false + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -7204,7 +8300,6 @@ packages: /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} - dev: true /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -7214,12 +8309,19 @@ packages: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: false + + /component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + dev: false + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} @@ -7234,7 +8336,6 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: true /compute-scroll-into-view@1.0.14: resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} @@ -7273,6 +8374,18 @@ packages: yargs: 17.6.2 dev: true + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: @@ -7315,6 +8428,11 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: false + /copy-to-clipboard@3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} dependencies: @@ -7324,7 +8442,13 @@ packages: /copy-to-clipboard@3.3.2: resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} dependencies: - toggle-selection: 1.0.6 + toggle-selection: 1.0.6 + dev: false + + /core-js-compat@3.30.0: + resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} + dependencies: + browserslist: 4.21.5 dev: false /core-js@3.26.0: @@ -7332,6 +8456,10 @@ packages: requiresBuild: true dev: false + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -7340,6 +8468,16 @@ packages: vary: 1.1.2 dev: false + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + dev: false + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -7405,6 +8543,17 @@ packages: which: 1.3.1 dev: true + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.1 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -8038,6 +9187,10 @@ packages: time-zone: 1.0.0 dev: true + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -8047,7 +9200,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: true /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -8087,6 +9239,11 @@ packages: character-entities: 2.0.2 dev: false + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -8119,6 +9276,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge@3.3.0: + resolution: {integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==} + engines: {node: '>=0.10.0'} + dev: false + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} @@ -8145,7 +9307,6 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -8164,6 +9325,28 @@ packages: object-keys: 1.1.1 dev: true + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.6 + dev: false + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + dev: false + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.2 + isobject: 3.0.1 + dev: false + /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false @@ -8193,6 +9376,10 @@ packages: engines: {node: '>=0.4.0'} dev: true + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + dev: false + /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -8201,12 +9388,19 @@ packages: /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dev: true /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} + /deprecated-react-native-prop-types@3.0.1: + resolution: {integrity: sha512-J0jCJcsk4hMlIb7xwOZKLfMpuJn6l8UtrPEzzQV5ewz5gvKNYakhBuq9h2rWX7YwHHJZFhU5W8ye7dB9oN8VcQ==} + dependencies: + '@react-native/normalize-color': 2.1.0 + invariant: 2.2.4 + prop-types: 15.8.1 + dev: false + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -8215,7 +9409,6 @@ packages: /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -8315,7 +9508,6 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} @@ -8343,13 +9535,11 @@ packages: /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} - dev: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - dev: true /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -8363,6 +9553,12 @@ packages: engines: {node: '>=0.12'} dev: true + /envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} + hasBin: true + dev: false + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -8374,6 +9570,14 @@ packages: stackframe: 1.3.4 dev: false + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 + dev: false + /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} @@ -8467,7 +9671,6 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -8552,12 +9755,10 @@ packages: /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - dev: true /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} @@ -8593,6 +9794,19 @@ packages: strip-eof: 1.0.0 dev: true + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: false + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} @@ -8626,6 +9840,21 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -8682,6 +9911,14 @@ packages: is-extendable: 0.1.1 dev: false + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false @@ -8699,6 +9936,22 @@ packages: tmp: 0.0.33 dev: true + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /extract-files@13.0.0: resolution: {integrity: sha512-FXD+2Tsr8Iqtm3QZy1Zmwscca7Jx3mMC5Crr+sEP1I303Jy1CYMuYCm7hRTplFNg3XdUavErkxnTzpaqdSoi6g==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} @@ -8765,6 +10018,13 @@ packages: punycode: 1.4.1 dev: true + /fast-xml-parser@4.1.3: + resolution: {integrity: sha512-LsNDahCiCcJPe8NO7HijcnukHB24tKbfDDA5IILx9dmW3Frb52lhbeX6MPNUSvyGNfav2VTYpJ/OqkRoVLrh2Q==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} dev: false @@ -8844,12 +10104,37 @@ packages: token-types: 5.0.1 dev: true + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -8865,6 +10150,15 @@ packages: - supports-color dev: true + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + dev: false + /find-my-way@7.3.1: resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} engines: {node: '>=14'} @@ -8877,6 +10171,13 @@ packages: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -8890,7 +10191,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -8907,6 +10207,11 @@ packages: pkg-dir: 4.2.0 dev: true + /flow-parser@0.185.2: + resolution: {integrity: sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==} + engines: {node: '>=0.4.0'} + dev: false + /focus-lock@0.9.2: resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} engines: {node: '>=10'} @@ -8914,17 +10219,15 @@ packages: tslib: 2.5.0 dev: false - /focus-trap-react@9.0.2(react-dom@17.0.2)(react@17.0.2): + /focus-trap-react@9.0.2(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ZwhO5by6KG5r3dy48Lk00A1/0zNYw1Z3RZTN6O6kgAPsWFcwTFszOcQ1dLSfM8pIxpS/ttc7wTttJowjVT3jpg==} peerDependencies: prop-types: ^15.8.1 react: '>=16.3.0' react-dom: '>=16.3.0' - peerDependenciesMeta: - prop-types: - optional: true dependencies: focus-trap: 6.9.4 + prop-types: 15.8.1 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) tabbable: 5.3.3 @@ -8952,6 +10255,11 @@ packages: is-callable: 1.2.7 dev: true + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: false + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -8996,6 +10304,13 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: false + /framer-motion@6.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: @@ -9029,7 +10344,6 @@ packages: /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - dev: true /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} @@ -9069,7 +10383,6 @@ packages: graceful-fs: 4.2.10 jsonfile: 4.0.0 universalify: 0.1.2 - dev: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -9128,6 +10441,13 @@ packages: engines: {node: '>=12'} dev: true + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: false + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -9147,6 +10467,11 @@ packages: get-intrinsic: 1.1.3 dev: true + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false + /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: false @@ -9274,7 +10599,7 @@ packages: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: - graphql: '*' + graphql: ^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: 16.6.0 tslib: 2.5.0 @@ -9283,7 +10608,7 @@ packages: resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==} engines: {node: ^12.22.0 || ^14.17.0 || >= 16.0.0} peerDependencies: - graphql: '*' + graphql: 0.13.1 - 16 dependencies: busboy: 0.3.1 fs-capacitor: 6.2.0 @@ -9296,7 +10621,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '*' + graphql: '>=0.11 <=16' dependencies: graphql: 16.6.0 @@ -9360,6 +10685,37 @@ packages: has-symbols: 1.0.3 dev: true + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: false + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: false + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: false + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -9430,6 +10786,23 @@ packages: capital-case: 1.0.4 tslib: 2.5.0 + /hermes-estree@0.8.0: + resolution: {integrity: sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==} + dev: false + + /hermes-parser@0.8.0: + resolution: {integrity: sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==} + dependencies: + hermes-estree: 0.8.0 + dev: false + + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + dependencies: + source-map: 0.7.4 + dev: false + /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false @@ -9515,7 +10888,6 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: true /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} @@ -9595,6 +10967,12 @@ packages: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} + /image-size@0.6.3: + resolution: {integrity: sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==} + engines: {node: '>=4.0'} + hasBin: true + dev: false + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false @@ -9607,6 +10985,14 @@ packages: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -9682,6 +11068,10 @@ packages: dependencies: loose-envify: 1.4.0 + /ip@1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + dev: false + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -9698,6 +11088,20 @@ packages: is-relative: 1.0.0 is-windows: 1.0.2 + /is-accessor-descriptor@0.1.6: + resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /is-accessor-descriptor@1.0.0: + resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: false + /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: false @@ -9744,6 +11148,10 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -9777,6 +11185,20 @@ packages: dependencies: has: 1.0.3 + /is-data-descriptor@0.1.4: + resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /is-data-descriptor@1.0.0: + resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 6.0.3 + dev: false + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -9788,6 +11210,29 @@ packages: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false + /is-descriptor@0.1.6: + resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 0.1.6 + is-data-descriptor: 0.1.4 + kind-of: 5.1.0 + dev: false + + /is-descriptor@1.0.2: + resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} + engines: {node: '>=0.10.0'} + dependencies: + is-accessor-descriptor: 1.0.0 + is-data-descriptor: 1.0.0 + kind-of: 6.0.3 + dev: false + + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + dev: false + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -9808,10 +11253,22 @@ packages: engines: {node: '>=0.10.0'} dev: false + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + dev: false + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -9843,6 +11300,11 @@ packages: is-docker: 3.0.0 dev: true + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: false + /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: @@ -9864,6 +11326,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -9893,6 +11362,13 @@ packages: engines: {node: '>=12'} dev: false + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -9941,6 +11417,11 @@ packages: call-bind: 1.0.2 dev: true + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -9988,6 +11469,11 @@ packages: dependencies: unc-path-regex: 0.1.2 + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: false + /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -10019,12 +11505,21 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -10032,6 +11527,13 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: false + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -10262,6 +11764,11 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 + /jest-get-type@26.3.0: + resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} + engines: {node: '>= 10.14.2'} + dev: false + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10333,6 +11840,11 @@ packages: dependencies: jest-resolve: 29.5.0 + /jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dev: false + /jest-regex-util@29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10422,6 +11934,14 @@ packages: transitivePeerDependencies: - supports-color + /jest-serializer@27.5.1: + resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/node': 18.15.5 + graceful-fs: 4.2.10 + dev: false + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10452,6 +11972,18 @@ packages: transitivePeerDependencies: - supports-color + /jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 18.15.5 + chalk: 4.1.2 + ci-info: 3.7.1 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: false + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10463,6 +11995,18 @@ packages: graceful-fs: 4.2.10 picomatch: 2.3.1 + /jest-validate@26.6.2: + resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@jest/types': 26.6.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 26.3.0 + leven: 3.1.0 + pretty-format: 26.6.2 + dev: false + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10517,6 +12061,15 @@ packages: jest-util: 29.5.0 string-length: 4.0.2 + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.15.5 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: false + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10553,7 +12106,6 @@ packages: '@sideway/address': 4.1.4 '@sideway/formula': 3.0.0 '@sideway/pinpoint': 2.0.0 - dev: true /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} @@ -10580,6 +12132,40 @@ packages: dependencies: argparse: 2.0.1 + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + dev: false + + /jscodeshift@0.13.1(@babel/preset-env@7.21.4): + resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/preset-env': 7.21.4(@babel/core@7.21.0) + '@babel/preset-flow': 7.21.4(@babel/core@7.21.0) + '@babel/preset-typescript': 7.21.4(@babel/core@7.21.0) + '@babel/register': 7.21.0(@babel/core@7.21.0) + babel-core: 7.0.0-bridge.0(@babel/core@7.21.0) + chalk: 4.1.2 + flow-parser: 0.185.2 + graceful-fs: 4.2.10 + micromatch: 3.1.10 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.20.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + dev: false + /jsdom@20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} engines: {node: '>=14'} @@ -10621,11 +12207,20 @@ packages: - utf-8-validate dev: true + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: false + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + dev: false + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -10645,7 +12240,6 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 - dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -10655,10 +12249,33 @@ packages: graceful-fs: 4.2.10 dev: false + /just-memoize@2.2.0: + resolution: {integrity: sha512-zriv+MY+61RXT0QsrO1ZJtL5umouqqSWmCGBkp2wJm35kniunBAA4qhUKx8Lvg/QcwrF9xuw9E6PkevKFf4boQ==} + dev: true + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + dev: false + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -10728,6 +12345,14 @@ packages: lie: 3.1.1 dev: false + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -10739,7 +12364,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -10752,6 +12376,10 @@ packages: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + /lodash.flatmap@4.5.0: resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} dev: false @@ -10775,6 +12403,10 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + /lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} dev: false @@ -10782,6 +12414,23 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: false + + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.7 + yargs: 15.4.1 + dev: false + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false @@ -10830,6 +12479,14 @@ packages: hasBin: true dev: true + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: false + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10869,6 +12526,13 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: false + /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} @@ -11066,18 +12730,16 @@ packages: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false - /mdx-mermaid@1.3.2(mermaid@9.1.7)(react@17.0.2): + /mdx-mermaid@1.3.2(mermaid@9.1.7)(react@17.0.2)(unist-util-visit@2.0.3): resolution: {integrity: sha512-8kw0tg3isKKBFzFwoe2DhIaEgKYtVeJXQtxZCCrdTPO0CTpXHnTHT0atDqsp7YkXi5iUCp/zAZPZu1cmr68T3w==} peerDependencies: mermaid: '>=8.11.0' react: ^16.8.4 || ^17.0.0 || ^18.0.0 unist-util-visit: ^2.0.0 - peerDependenciesMeta: - unist-util-visit: - optional: true dependencies: mermaid: 9.1.7 react: 17.0.2 + unist-util-visit: 2.0.3 dev: false /media-typer@0.3.0: @@ -11136,39 +12798,338 @@ packages: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} + /merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + dependencies: + is-plain-obj: 2.1.0 + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /mermaid@9.1.7: + resolution: {integrity: sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==} + dependencies: + '@braintree/sanitize-url': 6.0.1 + d3: 7.6.1 + dagre: 0.8.5 + dagre-d3: 0.6.4 + dompurify: 2.4.0 + graphlib: 2.1.8 + khroma: 2.0.0 + moment-mini: 2.24.0 + stylis: 4.1.3 + dev: false + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /metro-babel-transformer@0.73.9: + resolution: {integrity: sha512-DlYwg9wwYIZTHtic7dyD4BP0SDftoltZ3clma76nHu43blMWsCnrImHeHsAVne3XsQ+RJaSRxhN5nkG2VyVHwA==} + dependencies: + '@babel/core': 7.21.0 + hermes-parser: 0.8.0 + metro-source-map: 0.73.9 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-cache-key@0.73.9: + resolution: {integrity: sha512-uJg+6Al7UoGIuGfoxqPBy6y1Ewq7Y8/YapGYIDh6sohInwt/kYKnPZgLDYHIPvY2deORnQ/2CYo4tOeBTnhCXQ==} + dev: false + + /metro-cache@0.73.9: + resolution: {integrity: sha512-upiRxY8rrQkUWj7ieACD6tna7xXuXdu2ZqrheksT79ePI0aN/t0memf6WcyUtJUMHZetke3j+ppELNvlmp3tOw==} + dependencies: + metro-core: 0.73.9 + rimraf: 3.0.2 + dev: false + + /metro-config@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-NiWl1nkYtjqecDmw77tbRbXnzIAwdO6DXGZTuKSkH+H/c1NKq1eizO8Fe+NQyFtwR9YLqn8Q0WN1nmkwM1j8CA==} + dependencies: + cosmiconfig: 5.2.1 + jest-validate: 26.6.2 + metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-cache: 0.73.9 + metro-core: 0.73.9 + metro-runtime: 0.73.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-core@0.73.9: + resolution: {integrity: sha512-1NTs0IErlKcFTfYyRT3ljdgrISWpl1nys+gaHkXapzTSpvtX9F1NQNn5cgAuE+XIuTJhbsCdfIJiM2JXbrJQaQ==} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.73.9 + dev: false + + /metro-file-map@0.73.9: + resolution: {integrity: sha512-R/Wg3HYeQhYY3ehWtfedw8V0ne4lpufG7a21L3GWer8tafnC9pmjoCKEbJz9XZkVj9i1FtxE7UTbrtZNeIILxQ==} + dependencies: + abort-controller: 3.0.0 + anymatch: 3.1.2 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + invariant: 2.2.4 + jest-regex-util: 27.5.1 + jest-serializer: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-hermes-compiler@0.73.9: + resolution: {integrity: sha512-5B3vXIwQkZMSh3DQQY23XpTCpX9kPLqZbA3rDuAcbGW0tzC3f8dCenkyBb0GcCzyTDncJeot/A7oVCVK6zapwg==} + dev: false + + /metro-inspector-proxy@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-B3WrWZnlYhtTrv0IaX3aUAhi2qVILPAZQzb5paO1e+xrz4YZHk9c7dXv7qe7B/IQ132e3w46y3AL7rFo90qVjA==} + hasBin: true + dependencies: + connect: 3.7.0 + debug: 2.6.9 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + yargs: 17.6.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /metro-minify-terser@0.73.9: + resolution: {integrity: sha512-MTGPu2qV5qtzPJ2SqH6s58awHDtZ4jd7lmmLR+7TXDwtZDjIBA0YVfI0Zak2Haby2SqoNKrhhUns/b4dPAQAVg==} + dependencies: + terser: 5.16.8 + dev: false + + /metro-minify-uglify@0.73.9: + resolution: {integrity: sha512-gzxD/7WjYcnCNGiFJaA26z34rjOp+c/Ft++194Wg91lYep3TeWQ0CnH8t2HRS7AYDHU81SGWgvD3U7WV0g4LGA==} + dependencies: + uglify-es: 3.3.9 + dev: false + + /metro-react-native-babel-preset@0.73.9(@babel/core@7.21.0): + resolution: {integrity: sha512-AoD7v132iYDV4K78yN2OLgTPwtAKn0XlD2pOhzyBxiI8PeXzozhbKyPV7zUOJUPETj+pcEVfuYj5ZN/8+bhbCw==} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.21.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-export-default-from': 7.18.10(@babel/core@7.21.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-export-default-from': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.0) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) + '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.0) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.0) + '@babel/template': 7.20.7 + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-react-native-babel-transformer@0.73.9(@babel/core@7.21.0): + resolution: {integrity: sha512-DSdrEHuQ22ixY7DyipyKkIcqhOJrt5s6h6X7BYJCP9AMUfXOwLe2biY3BcgJz5GOXv8/Akry4vTCvQscVS1otQ==} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.21.0 + babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) + hermes-parser: 0.8.0 + metro-babel-transformer: 0.73.9 + metro-react-native-babel-preset: 0.73.9(@babel/core@7.21.0) + metro-source-map: 0.73.9 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-resolver@0.73.9: + resolution: {integrity: sha512-Ej3wAPOeNRPDnJmkK0zk7vJ33iU07n+oPhpcf5L0NFkWneMmSM2bflMPibI86UjzZGmRfn0AhGhs8yGeBwQ/Xg==} + dependencies: + absolute-path: 0.0.0 + dev: false + + /metro-runtime@0.73.9: + resolution: {integrity: sha512-d5Hs83FpKB9r8q8Vb95+fa6ESpwysmPr4lL1I2rM2qXAFiO7OAPT9Bc23WmXgidkBtD0uUFdB2lG+H1ATz8rZg==} + dependencies: + '@babel/runtime': 7.21.0 + react-refresh: 0.4.3 + dev: false + + /metro-source-map@0.73.9: + resolution: {integrity: sha512-l4VZKzdqafipriETYR6lsrwtavCF1+CMhCOY9XbyWeTrpGSNgJQgdeJpttzEZTHQQTLR0csQo0nD1ef3zEP6IQ==} + dependencies: + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + invariant: 2.2.4 + metro-symbolicate: 0.73.9 + nullthrows: 1.1.1 + ob1: 0.73.9 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-symbolicate@0.73.9: + resolution: {integrity: sha512-4TUOwxRHHqbEHxRqRJ3wZY5TA8xq7AHMtXrXcjegMH9FscgYztsrIG9aNBUBS+VLB6g1qc6BYbfIgoAnLjCDyw==} + engines: {node: '>=8.3'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.73.9 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-plugins@0.73.9: + resolution: {integrity: sha512-r9NeiqMngmooX2VOKLJVQrMuV7PAydbqst5bFhdVBPcFpZkxxqyzjzo+kzrszGy2UpSQBZr2P1L6OMjLHwQwfQ==} + dependencies: + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-worker@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-Rq4b489sIaTUENA+WCvtu9yvlT/C6zFMWhU4sq+97W29Zj0mPBjdk+qGT5n1ZBgtBIJzZWt1KxeYuc17f4aYtQ==} dependencies: - is-plain-obj: 2.1.0 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.4 + babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) + metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-babel-transformer: 0.73.9 + metro-cache: 0.73.9 + metro-cache-key: 0.73.9 + metro-hermes-compiler: 0.73.9 + metro-source-map: 0.73.9 + metro-transform-plugins: 0.73.9 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - /mermaid@9.1.7: - resolution: {integrity: sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==} + /metro@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-BlYbPmTF60hpetyNdKhdvi57dSqutb+/oK0u3ni4emIh78PiI0axGo7RfdsZ/mn3saASXc94tDbpC5yn7+NpEg==} + hasBin: true dependencies: - '@braintree/sanitize-url': 6.0.1 - d3: 7.6.1 - dagre: 0.8.5 - dagre-d3: 0.6.4 - dompurify: 2.4.0 - graphlib: 2.1.8 - khroma: 2.0.0 - moment-mini: 2.24.0 - stylis: 4.1.3 + '@babel/code-frame': 7.18.6 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + absolute-path: 0.0.0 + accepts: 1.3.8 + async: 3.2.4 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.10 + hermes-parser: 0.8.0 + image-size: 0.6.3 + invariant: 2.2.4 + jest-worker: 27.5.1 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.73.9 + metro-cache: 0.73.9 + metro-cache-key: 0.73.9 + metro-config: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-core: 0.73.9 + metro-file-map: 0.73.9 + metro-hermes-compiler: 0.73.9 + metro-inspector-proxy: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + metro-minify-terser: 0.73.9 + metro-minify-uglify: 0.73.9 + metro-react-native-babel-preset: 0.73.9(@babel/core@7.21.0) + metro-resolver: 0.73.9 + metro-runtime: 0.73.9 + metro-source-map: 0.73.9 + metro-symbolicate: 0.73.9 + metro-transform-plugins: 0.73.9 + metro-transform-worker: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + mime-types: 2.1.35 + node-fetch: 2.6.7 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + temp: 0.8.3 + throat: 5.0.0 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + yargs: 17.6.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate dev: false - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: @@ -11501,6 +13462,27 @@ packages: - supports-color dev: false + /micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11534,7 +13516,12 @@ packages: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true - dev: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: false /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -11579,11 +13566,26 @@ packages: engines: {node: '>=8'} dev: true + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: false + /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: false + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -11621,14 +13623,12 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /ms@3.0.0-canary.1: resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} @@ -11669,6 +13669,25 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} dependencies: @@ -11681,7 +13700,10 @@ packages: /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: false /next-i18next@13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2): resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} @@ -11698,7 +13720,7 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 22.4.13 i18next-fs-backend: 2.1.1 - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-i18next: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) dev: false @@ -11714,7 +13736,7 @@ packages: chokidar: 3.5.3 commander: 5.1.0 express: 4.18.2 - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) transitivePeerDependencies: - supports-color dev: true @@ -11726,12 +13748,12 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) dev: false - /next@12.3.4(react-dom@17.0.2)(react@17.0.2): + /next@12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} engines: {node: '>=12.22.0'} hasBin: true @@ -11755,7 +13777,7 @@ packages: postcss: 8.4.14 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - styled-jsx: 5.0.7(react@17.0.2) + styled-jsx: 5.0.7(@babel/core@7.21.0)(react@17.0.2) use-sync-external-store: 1.2.0(react@17.0.2) optionalDependencies: '@next/swc-android-arm-eabi': 12.3.4 @@ -11775,16 +13797,32 @@ packages: - '@babel/core' - babel-plugin-macros + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.5.0 + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + dev: false + /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + dev: false + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -11834,6 +13872,11 @@ packages: /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + dev: false + /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} @@ -11891,6 +13934,13 @@ packages: path-key: 1.0.0 dev: true + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: false + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -11908,10 +13958,23 @@ packages: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true + /ob1@0.73.9: + resolution: {integrity: sha512-kHOzCOFXmAM26fy7V/YuXNKne2TyRiXbFAvPBIbuedJCZZWQZHLdPzMeXJI4Egt6IcfDttRzN3jQ90wOwq1iNw==} + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: false + /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} @@ -11939,6 +14002,13 @@ packages: engines: {node: '>= 10.12.0'} dev: false + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -11949,23 +14019,35 @@ packages: object-keys: 1.1.1 dev: true + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 - dev: true /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} - dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -11990,6 +14072,13 @@ packages: tempy: 3.0.0 dev: true + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + dev: false + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -12025,10 +14114,24 @@ packages: word-wrap: 1.2.3 dev: true + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.8.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: false + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -12053,6 +14156,11 @@ packages: p-map: 2.1.0 dev: true + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -12072,6 +14180,13 @@ packages: yocto-queue: 1.0.0 dev: true + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -12083,7 +14198,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -12146,6 +14260,14 @@ packages: map-cache: 0.2.2 path-root: 0.1.1 + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: false + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -12173,7 +14295,6 @@ packages: /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - dev: true /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -12181,12 +14302,22 @@ packages: no-case: 3.0.4 tslib: 2.5.0 + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: false + /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -12209,6 +14340,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -12274,7 +14410,6 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} - dev: true /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} @@ -12313,6 +14448,13 @@ packages: load-json-file: 7.0.1 dev: true + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + dev: false + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -12342,6 +14484,11 @@ packages: tslib: 2.5.0 dev: false + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: false + /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} @@ -12440,6 +14587,16 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + dev: false + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -12485,6 +14642,10 @@ packages: prettier: 2.8.6 dev: true + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /process-warning@2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} @@ -12497,6 +14658,12 @@ packages: dependencies: asap: 2.0.6 + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + dev: false + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -12544,7 +14711,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -12619,7 +14785,6 @@ packages: /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - dev: true /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -12658,6 +14823,16 @@ packages: react: 17.0.2 dev: false + /react-devtools-core@4.27.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-dvZjrAJjahd6NNl7dDwEk5TyHsWJxDpYL7VnD9jdEr98EEEsVhw9G8JDX54Nrb3XIIOBlJDpjo3AuBuychX9zg==} + dependencies: + shell-quote: 1.7.4 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /react-dom@17.0.2(react@17.0.2): resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: @@ -12779,11 +14954,77 @@ packages: /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-native-codegen@0.71.5(@babel/preset-env@7.21.4): + resolution: {integrity: sha512-rfsuc0zkuUuMjFnrT55I1mDZ+pBRp2zAiRwxck3m6qeGJBGK5OV5JH66eDQ4aa+3m0of316CqrJDRzVlYufzIg==} + dependencies: + '@babel/parser': 7.21.2 + flow-parser: 0.185.2 + jscodeshift: 0.13.1(@babel/preset-env@7.21.4) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@babel/preset-env' + - supports-color + dev: false + + /react-native-gradle-plugin@0.71.17: + resolution: {integrity: sha512-OXXYgpISEqERwjSlaCiaQY6cTY5CH6j73gdkWpK0hedxtiWMWgH+i5TOi4hIGYitm9kQBeyDu+wim9fA8ROFJA==} + dev: false + + /react-native@0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-gHrDj7qaAaiE41JwaFCh3AtvOqOLuRgZtHKzNiwxakG/wvPAYmG73ECfWHGxjxIx/QT17Hp37Da3ipCei/CayQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + react: 18.2.0 + dependencies: + '@jest/create-cache-key-function': 29.5.0 + '@react-native-community/cli': 10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@react-native-community/cli-platform-android': 10.2.0 + '@react-native-community/cli-platform-ios': 10.2.1 + '@react-native/assets': 1.0.0 + '@react-native/normalize-color': 2.1.0 + '@react-native/polyfills': 2.0.0 + abort-controller: 3.0.0 + anser: 1.4.10 + base64-js: 1.5.1 + deprecated-react-native-prop-types: 3.0.1 + event-target-shim: 5.0.1 + invariant: 2.2.4 + jest-environment-node: 29.5.0 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-react-native-babel-transformer: 0.73.9(@babel/core@7.21.0) + metro-runtime: 0.73.9 + metro-source-map: 0.73.9 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 17.0.2 + react-devtools-core: 4.27.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) + react-native-codegen: 0.71.5(@babel/preset-env@7.21.4) + react-native-gradle-plugin: 0.71.17 + react-refresh: 0.4.3 + react-shallow-renderer: 16.15.0(react@17.0.2) + regenerator-runtime: 0.13.11 + scheduler: 0.23.0 + stacktrace-parser: 0.1.10 + use-sync-external-store: 1.2.0(react@17.0.2) + whatwg-fetch: 3.6.2 + ws: 6.2.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + /react-paginate@7.1.5(react@17.0.2): resolution: {integrity: sha512-CpyWSwsIIsFhWAQvmXDWuEl+yzfzisgvsUoZTj2IR1mFvm9oPTmeNBFc1wg8/i6ASmETeOmOnc78/U/MXyjd0w==} peerDependencies: @@ -12811,6 +15052,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /react-refresh@0.4.3: + resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} + engines: {node: '>=0.10.0'} + dev: false + /react-remove-scroll-bar@2.3.4(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} @@ -12854,7 +15100,6 @@ packages: object-assign: 4.1.1 react: 17.0.2 react-is: 18.2.0 - dev: true /react-ssr-prepass@1.5.0(react@17.0.2): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} @@ -12991,6 +15236,18 @@ packages: strip-bom: 3.0.0 dev: true + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -12998,7 +15255,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readable-stream@4.2.0: resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} @@ -13022,10 +15278,24 @@ packages: dependencies: picomatch: 2.3.1 + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + dev: false + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + /recast@0.20.5: + resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.14.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.5.0 + dev: false + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -13049,9 +15319,34 @@ packages: postcss-value-parser: 3.3.1 dev: false + /regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: false + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: false + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + /regenerator-transform@0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.21.0 + dev: false + + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: false + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} @@ -13061,6 +15356,18 @@ packages: functions-have-names: 1.2.3 dev: true + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: false + /registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} dependencies: @@ -13075,6 +15382,13 @@ packages: rc: 1.2.8 dev: true + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: false + /rehype-slug@5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} dependencies: @@ -13152,6 +15466,16 @@ packages: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: false + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: false + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: false + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -13177,6 +15501,11 @@ packages: dependencies: resolve-from: 5.0.0 + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -13185,6 +15514,11 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: false + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} @@ -13197,6 +15531,19 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: false + + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: false + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} @@ -13216,6 +15563,18 @@ packages: resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} dev: false + /rimraf@2.2.8: + resolution: {integrity: sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==} + hasBin: true + dev: false + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: false + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -13291,11 +15650,9 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -13310,6 +15667,12 @@ packages: dependencies: ret: 0.2.2 + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: false + /safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} @@ -13330,6 +15693,12 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} @@ -13354,7 +15723,6 @@ packages: /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true - dev: true /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -13386,7 +15754,6 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: true /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -13402,6 +15769,11 @@ packages: type-fest: 2.19.0 dev: false + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + dev: false + /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} @@ -13432,7 +15804,6 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color - dev: true /serve@14.2.0: resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} @@ -13465,6 +15836,16 @@ packages: engines: {node: '>=6.9'} dev: false + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -13478,12 +15859,18 @@ packages: crypt: 0.0.2 dev: true + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: false + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 - dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -13494,7 +15881,6 @@ packages: /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -13502,7 +15888,6 @@ packages: /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} - dev: true /shiki-renderer-hast@1.1.5(shiki@0.10.1): resolution: {integrity: sha512-XOHX0/mIRJZnqPNGoyyJ9bUrqUwj/tLUJQ5SuU/UkQLTiSJjiHaCP17HRB7/VSQoor4+WJF3QkT8BXbipyJN0Q==} @@ -13579,6 +15964,15 @@ packages: engines: {node: '>=14.16'} dev: false + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + dev: false + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -13606,6 +16000,38 @@ packages: dot-case: 3.0.4 tslib: 2.5.0 + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: false + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /sonic-boom@3.2.0: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} dependencies: @@ -13615,12 +16041,35 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: false + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: false + + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: false + /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} @@ -13682,6 +16131,13 @@ packages: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: false + /split2@4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} @@ -13731,6 +16187,21 @@ packages: stacktrace-gps: 3.1.2 dev: false + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + dev: false + + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: false + /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -13739,7 +16210,6 @@ packages: /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - dev: true /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} @@ -13820,11 +16290,16 @@ packages: es-abstract: 1.20.4 dev: true + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -13833,6 +16308,13 @@ packages: character-entities-legacy: 3.0.0 dev: false + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -13862,7 +16344,6 @@ packages: /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} - dev: true /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} @@ -13891,6 +16372,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} @@ -13912,7 +16397,7 @@ packages: tslib: 2.5.0 dev: false - /styled-jsx@5.0.7(react@17.0.2): + /styled-jsx@5.0.7(@babel/core@7.21.0)(react@17.0.2): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -13925,6 +16410,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.21.0 react: 17.0.2 /stylis@4.1.3: @@ -13934,7 +16420,7 @@ packages: /subscriptions-transport-ws-envelop@2.0.2(graphql@16.6.0)(ws@8.13.0): resolution: {integrity: sha512-HMwQgdiMBgWC48LplRtDsgrdQKnsns7VvLZTN1eIFNT01XJd6yuuudrl85TbO5QnTAiw6g2Sh5bjTFYKjFIGwQ==} peerDependencies: - graphql: '*' + graphql: '>=0.10.0' ws: ^7.5.0 || ^8.4.0 dependencies: backo2: 1.0.2 @@ -13945,6 +16431,10 @@ packages: symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + dev: false + /supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -14050,6 +16540,21 @@ packages: engines: {node: '>=14.16'} dev: true + /temp@0.8.3: + resolution: {integrity: sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==} + engines: {'0': node >=0.8.0} + dependencies: + os-tmpdir: 1.0.2 + rimraf: 2.2.8 + dev: false + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + dev: false + /tempy@3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} @@ -14065,6 +16570,17 @@ packages: engines: {node: '>=8'} dev: true + /terser@5.16.8: + resolution: {integrity: sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: false + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -14078,11 +16594,22 @@ packages: dependencies: real-require: 0.2.0 + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + dev: false + /throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} engines: {node: '>=10'} dev: false + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -14149,12 +16676,37 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: false + /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false @@ -14223,7 +16775,7 @@ packages: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-jest@29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14244,6 +16796,7 @@ packages: esbuild: optional: true dependencies: + '@babel/core': 7.21.0 '@jest/types': 29.5.0 bs-logger: 0.2.6 esbuild: 0.17.12 @@ -14377,6 +16930,11 @@ packages: engines: {node: '>=8'} dev: true + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + dev: false + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -14411,6 +16969,16 @@ packages: /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} + /uglify-es@3.3.9: + resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} + engines: {node: '>=0.8.0'} + deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 + hasBin: true + dependencies: + commander: 2.13.0 + source-map: 0.6.1 + dev: false + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -14432,6 +17000,29 @@ packages: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: false + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: false + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: false + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: false + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -14444,6 +17035,16 @@ packages: vfile: 5.3.5 dev: false + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -14461,6 +17062,10 @@ packages: resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} dev: false + /unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: false + /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} dev: false @@ -14498,6 +17103,13 @@ packages: '@types/unist': 2.0.6 dev: false + /unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 4.1.0 + dev: false + /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: @@ -14505,6 +17117,14 @@ packages: unist-util-is: 5.1.1 dev: false + /unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + dependencies: + '@types/unist': 2.0.6 + unist-util-is: 4.1.0 + unist-util-visit-parents: 3.1.1 + dev: false + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: @@ -14516,7 +17136,6 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - dev: true /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -14538,7 +17157,14 @@ packages: /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - dev: true + + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: false /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -14587,6 +17213,11 @@ packages: dependencies: punycode: 2.1.1 + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: false + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: @@ -14664,6 +17295,11 @@ packages: dependencies: react: 17.0.2 + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: false + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -14677,7 +17313,6 @@ packages: /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} - dev: true /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} @@ -14795,6 +17430,10 @@ packages: fsevents: 2.3.2 dev: true + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + dev: false + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -14848,7 +17487,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} @@ -14898,6 +17536,10 @@ packages: iconv-lite: 0.6.3 dev: true + /whatwg-fetch@3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: false + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -14964,7 +17606,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -15013,6 +17654,14 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.10 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: false + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -15028,6 +17677,22 @@ packages: signal-exit: 3.0.7 dev: true + /ws@6.2.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 + dev: false + /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -15042,7 +17707,6 @@ packages: dependencies: bufferutil: 4.0.7 utf-8-validate: 6.0.3 - dev: true /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} From a5def02d3e823587a18cf43c67722529635a22a7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 5 Mar 2023 00:53:44 +0800 Subject: [PATCH 005/122] feat(package/core): scoped query --- internal/test-utils/src/app.ts | 2 +- packages/gqty/package.json | 10 +- packages/gqty/src/Accessor/index.ts | 908 +++-------------- packages/gqty/src/Accessor/meta.ts | 21 + packages/gqty/src/Accessor/resolve.ts | 488 +++++++++ packages/gqty/src/Accessor/skeleton.ts | 13 + packages/gqty/src/Cache/accessorCache.ts | 196 ---- packages/gqty/src/Cache/crawl.ts | 93 ++ packages/gqty/src/Cache/dataCache.ts | 100 -- packages/gqty/src/Cache/index.ts | 394 +++++++- packages/gqty/src/Cache/normalization.ts | 196 ++++ packages/gqty/src/Cache/persistence.ts | 261 +++-- packages/gqty/src/Cache/query.ts | 54 + packages/gqty/src/Cache/utils.ts | 14 + packages/gqty/src/Client/client.ts | 411 -------- packages/gqty/src/Client/compat/client.ts | 164 +++ .../gqty/src/Client/compat/hydrateCache.ts | 84 ++ .../gqty/src/Client/compat/inlineResolved.ts | 87 ++ packages/gqty/src/Client/compat/mutate.ts | 54 + packages/gqty/src/Client/compat/prefetch.ts | 49 + .../gqty/src/Client/compat/prepareRender.ts | 109 ++ packages/gqty/src/Client/compat/refetch.ts | 61 ++ packages/gqty/src/Client/compat/resolved.ts | 244 +++++ .../{Selection => Client/compat}/selection.ts | 54 +- packages/gqty/src/Client/compat/track.ts | 125 +++ packages/gqty/src/Client/createContext.ts | 74 ++ packages/gqty/src/Client/createResolvers.ts | 312 ++++++ packages/gqty/src/Client/index.ts | 217 +++- packages/gqty/src/Client/resolveSelections.ts | 248 +++++ packages/gqty/src/Client/resolvers.ts | 945 ------------------ packages/gqty/src/Client/updateCaches.ts | 30 + packages/gqty/src/Error/index.ts | 2 + packages/gqty/src/Events/index.ts | 68 -- packages/gqty/src/Helpers/FrailMap.ts | 105 ++ packages/gqty/src/Helpers/deepCopy.ts | 24 + packages/gqty/src/Helpers/index.ts | 8 +- packages/gqty/src/Helpers/prefetch.ts | 41 - packages/gqty/src/Helpers/refetch.ts | 41 - packages/gqty/src/Helpers/selectFields.ts | 14 +- packages/gqty/src/Helpers/ssr.ts | 126 --- packages/gqty/src/Helpers/track.ts | 184 ---- packages/gqty/src/Helpers/types.ts | 5 - packages/gqty/src/Interceptor/index.ts | 114 --- packages/gqty/src/Normalization/index.ts | 343 ------- packages/gqty/src/QueryBuilder/buildQuery.ts | 215 ---- packages/gqty/src/QueryBuilder/index.ts | 148 ++- packages/gqty/src/Scheduler/index.ts | 263 ----- packages/gqty/src/Schema/types.ts | 19 +- .../gqty/src/Selection/SelectionManager.ts | 182 ---- packages/gqty/src/Selection/index.ts | 150 ++- packages/gqty/src/Utils/cachedJSON.ts | 11 - packages/gqty/src/Utils/cycle.ts | 170 ---- packages/gqty/src/Utils/debounce.ts | 21 - packages/gqty/src/Utils/index.ts | 4 - packages/gqty/src/Utils/object.ts | 93 -- packages/gqty/src/Utils/pick.ts | 28 + packages/gqty/src/Utils/selectionsInclude.ts | 50 - packages/gqty/src/index.ts | 6 +- packages/gqty/test/FrailMap.test.ts | 42 + packages/gqty/test/accessor.test.ts | 430 ++++---- packages/gqty/test/buildQuery.test.ts | 262 ++--- packages/gqty/test/cache.test.ts | 768 +++++++------- packages/gqty/test/client.test.ts | 821 +++++++++------ packages/gqty/test/events.test.ts | 117 --- packages/gqty/test/helpers.test.ts | 70 +- packages/gqty/test/interceptor.test.ts | 170 ---- packages/gqty/test/interfaces-unions.test.ts | 27 +- packages/gqty/test/persistence.test.ts | 205 +++- packages/gqty/test/playground.test.ts | 107 +- packages/gqty/test/scheduler.test.ts | 300 ------ packages/gqty/test/selection.test.ts | 159 ++- packages/gqty/test/ssr.test.tsx | 48 +- packages/gqty/test/subscriptions.test.ts | 353 ++++--- packages/gqty/test/utils.ts | 72 +- pnpm-lock.yaml | 88 +- tsconfig.json | 2 - 76 files changed, 5854 insertions(+), 6640 deletions(-) create mode 100644 packages/gqty/src/Accessor/meta.ts create mode 100644 packages/gqty/src/Accessor/resolve.ts create mode 100644 packages/gqty/src/Accessor/skeleton.ts delete mode 100644 packages/gqty/src/Cache/accessorCache.ts create mode 100644 packages/gqty/src/Cache/crawl.ts delete mode 100644 packages/gqty/src/Cache/dataCache.ts create mode 100644 packages/gqty/src/Cache/normalization.ts create mode 100644 packages/gqty/src/Cache/query.ts create mode 100644 packages/gqty/src/Cache/utils.ts delete mode 100644 packages/gqty/src/Client/client.ts create mode 100644 packages/gqty/src/Client/compat/client.ts create mode 100644 packages/gqty/src/Client/compat/hydrateCache.ts create mode 100644 packages/gqty/src/Client/compat/inlineResolved.ts create mode 100644 packages/gqty/src/Client/compat/mutate.ts create mode 100644 packages/gqty/src/Client/compat/prefetch.ts create mode 100644 packages/gqty/src/Client/compat/prepareRender.ts create mode 100644 packages/gqty/src/Client/compat/refetch.ts create mode 100644 packages/gqty/src/Client/compat/resolved.ts rename packages/gqty/src/{Selection => Client/compat}/selection.ts (62%) create mode 100644 packages/gqty/src/Client/compat/track.ts create mode 100644 packages/gqty/src/Client/createContext.ts create mode 100644 packages/gqty/src/Client/createResolvers.ts create mode 100644 packages/gqty/src/Client/resolveSelections.ts delete mode 100644 packages/gqty/src/Client/resolvers.ts create mode 100644 packages/gqty/src/Client/updateCaches.ts delete mode 100644 packages/gqty/src/Events/index.ts create mode 100644 packages/gqty/src/Helpers/FrailMap.ts create mode 100644 packages/gqty/src/Helpers/deepCopy.ts delete mode 100644 packages/gqty/src/Helpers/prefetch.ts delete mode 100644 packages/gqty/src/Helpers/refetch.ts delete mode 100644 packages/gqty/src/Helpers/ssr.ts delete mode 100644 packages/gqty/src/Helpers/track.ts delete mode 100644 packages/gqty/src/Helpers/types.ts delete mode 100644 packages/gqty/src/Interceptor/index.ts delete mode 100644 packages/gqty/src/Normalization/index.ts delete mode 100644 packages/gqty/src/QueryBuilder/buildQuery.ts delete mode 100644 packages/gqty/src/Scheduler/index.ts delete mode 100644 packages/gqty/src/Selection/SelectionManager.ts delete mode 100644 packages/gqty/src/Utils/cachedJSON.ts delete mode 100644 packages/gqty/src/Utils/cycle.ts delete mode 100644 packages/gqty/src/Utils/debounce.ts create mode 100644 packages/gqty/src/Utils/pick.ts delete mode 100644 packages/gqty/src/Utils/selectionsInclude.ts create mode 100644 packages/gqty/test/FrailMap.test.ts delete mode 100644 packages/gqty/test/events.test.ts delete mode 100644 packages/gqty/test/interceptor.test.ts delete mode 100644 packages/gqty/test/scheduler.test.ts diff --git a/internal/test-utils/src/app.ts b/internal/test-utils/src/app.ts index b77d5a4dc..0f0fef9b1 100644 --- a/internal/test-utils/src/app.ts +++ b/internal/test-utils/src/app.ts @@ -91,7 +91,7 @@ export async function createTestApp( ); if (websockets) { - ezPlugins.push(ezWebSockets('legacy')); + ezPlugins.push(ezWebSockets()); } const client = await CreateTestClient({ diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 10dc5917d..bdb169afb 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -42,12 +42,18 @@ "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { - "@gqty/utils": "workspace:^1.0.0" + "flatted": "^3.2.7", + "just-has": "^2.3.0", + "just-memoize": "^2.2.0", + "just-safe-get": "^4.2.0", + "just-safe-set": "^4.2.1", + "object-hash": "^3.0.0" }, "devDependencies": { "@size-limit/preset-small-lib": "^8.2.4", "@types/mkdirp": "^1.0.2", "@types/node": "^18.15.5", + "@types/object-hash": "^3.0.2", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", "@types/wait-on": "^5.3.1", @@ -57,6 +63,7 @@ "cross-env": "^7.0.3", "esbuild": "^0.17.12", "graphql": "^16.6.0", + "graphql-ws": "^5.11.3", "jest": "^29.5.0", "just-memoize": "^2.2.0", "mkdirp": "^2.1.5", @@ -68,6 +75,7 @@ "size-limit": "^8.2.4", "test-utils": "workspace:^0.1.0", "tsc-watch": "^6.0.0", + "type-fest": "^3.6.1", "typescript": "^4.9.5", "wait-on": "^7.0.1", "ws": "^8.13.0" diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index 1b4f147c1..04d3e189c 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -1,798 +1,166 @@ -import type { ProxyAccessor } from '../Cache'; -import type { InnerClientState } from '../Client/client'; +import type { BaseGeneratedSchema, SchemaContext } from '../Client'; import { GQtyError } from '../Error'; -import { - DeepPartial, - parseSchemaType, - Schema, - SchemaUnionsKey, - Type, -} from '../Schema'; -import { Selection, SelectionType } from '../Selection'; -import { - decycle, - isEmptyObject, - isInteger, - isObject, - isObjectWithType, - retrocycle, -} from '../Utils'; - -const ProxySymbol = Symbol('gqty-proxy'); - -export class SchemaUnion { - constructor( - /** union name */ - public name: string, - public types: Record< - /** object type name */ - string, - /** schema type of object type */ - Record - >, - /** - * Proxy target, pre-made for performance - */ - public fieldsProxy: Record - ) {} -} - -export type SchemaUnions = { - unions: Record; - unionObjectTypesForSelections: Record; -}; - -export function createSchemaUnions(schema: Readonly): SchemaUnions { - const unionObjectTypesForSelections: Record = {}; - - const unions = Object.entries( - schema[SchemaUnionsKey] /* istanbul ignore next */ || {} - ).reduce((acum, [name, unionTypes]) => { - const types = unionTypes.reduce((typeAcum, objectTypeName) => { - unionObjectTypesForSelections[objectTypeName] ||= [objectTypeName]; - const objectType = schema[objectTypeName]; - /* istanbul ignore else */ - if (objectType) { - typeAcum[objectTypeName] = objectType; - } - return typeAcum; - }, {} as SchemaUnion['types']); - - acum[name] = new SchemaUnion( - name, - types, - unionTypes.reduce((fieldsAcum, fieldName) => { - fieldsAcum[fieldName] = ProxySymbol; - return fieldsAcum; - }, {}) - ); - - return acum; - }, {}); - - return { - unions, - unionObjectTypesForSelections, - }; -} - -export interface SetCache { - (selection: Selection, data: unknown): void; - ( - accessor: A, - data: DeepPartial | null | undefined - ): void; - unknown>( - accessor: B, - args: Parameters['0'], - data: DeepPartial> | null | undefined - ): void; -} - -export interface AssignSelections { - ( - source: A | null | undefined, - target: B | null | undefined - ): void; -} - -export interface AccessorCreators< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } -> { - createAccessor: ( - schemaValue: Schema[string] | SchemaUnion, - prevSelection: Selection, - unions?: string[] | undefined, - parentTypename?: string | undefined - ) => ProxyAccessor | null; - createArrayAccessor: ( - schemaValue: Schema[string] | SchemaUnion, - prevSelection: Selection, - unions?: string[] | undefined, - parentTypename?: string | undefined - ) => ProxyAccessor | null; - assignSelections: AssignSelections; - setCache: SetCache; - query: GeneratedSchema['query']; - mutation: GeneratedSchema['mutation']; - subscription: GeneratedSchema['subscription']; -} - -export function createAccessorCreators< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } = never ->(innerState: InnerClientState): AccessorCreators { - const { - accessorCache, - selectionManager, - interceptorManager, - scalarsEnumsHash, - schema, - eventHandler, - schemaUnions: { unions: schemaUnions, unionObjectTypesForSelections }, - clientCache: schedulerClientCache, - scheduler: { - errors: { map: schedulerErrorsMap }, - }, - normalizationHandler, - depthLimit, - } = innerState; - - const ResolveInfoSymbol = Symbol(); - - interface ResolveInfo { - key: string | number; - prevSelection: Selection; - argTypes: Record | undefined; - } - - const proxySymbolArray = [ProxySymbol]; - - function extractDataFromProxy(value: unknown): unknown { - if (accessorCache.isProxy(value)) { - const accessorSelection = accessorCache.getProxySelection(value); - - // An edge case hard to reproduce - /* istanbul ignore if */ - if (!accessorSelection) return; - - const selectionCache = - innerState.clientCache.getCacheFromSelection(accessorSelection); - - if (selectionCache === undefined) return; - - return selectionCache; - } else if (isObject(value)) { - /** - * This is necessary to be able to extract data from proxies - * inside user-made objects and arrays - */ - return retrocycle(JSON.parse(JSON.stringify(value))); - } - return value; - } - - function setCache(selection: Selection, data: unknown): void; - function setCache( - accessor: A, - data: DeepPartial | null | undefined - ): void; - function setCache unknown>( - accessor: B, - args: Parameters['0'], - data: DeepPartial> | null | undefined - ): void; - function setCache( - accessorOrSelection: unknown, - dataOrArgs: unknown, - possibleData?: unknown - ) { - if (accessorOrSelection instanceof Selection) { - const data = extractDataFromProxy(dataOrArgs); - innerState.clientCache.setCacheFromSelection(accessorOrSelection, data); - eventHandler.sendCacheChange({ - data, - selection: accessorOrSelection, - }); - } else if (typeof accessorOrSelection === 'function') { - if (dataOrArgs !== undefined && typeof dataOrArgs !== 'object') { - throw new GQtyError('Invalid arguments of type: ' + typeof dataOrArgs, { - caller: setCache, - }); - } - - const args = dataOrArgs as Record; - - const resolveInfo = ( - accessorOrSelection as Function & { - [ResolveInfoSymbol]?: ResolveInfo; +import type { GeneratedSchemaObject } from '../Schema'; +import { Selection } from '../Selection'; +import { $meta } from './meta'; +import { createObjectAccessor } from './resolve'; + +export { $meta } from './meta'; + +export function createSchemaAccessor( + context: SchemaContext +): TSchema { + const selectionCache = new Map(); + + return new Proxy( + { + query: { __typename: 'Query' }, + mutation: { __typename: 'Mutation' }, + subscription: { __typename: 'Subscription' }, + } as unknown as TSchema, + { + get(target, key: string) { + if (key === 'toJSON') { + return () => context.cache.toJSON(); } - )[ResolveInfoSymbol]; - if (!resolveInfo) { - throw new GQtyError('Invalid gqty function', { - caller: setCache, - }); - } - - const selection = innerState.selectionManager.getSelection({ - ...resolveInfo, - args: isEmptyObject(args) ? undefined : args, - }); - - const data = extractDataFromProxy(possibleData); - - innerState.clientCache.setCacheFromSelection(selection, data); - eventHandler.sendCacheChange({ - data, - selection, - }); - } else if (accessorCache.isProxy(accessorOrSelection)) { - const selection = accessorCache.getProxySelection(accessorOrSelection); - - // An edge case hard to reproduce - /* istanbul ignore if */ - if (!selection) { - throw new GQtyError('Invalid proxy selection', { - caller: setCache, - }); - } - - const data = extractDataFromProxy(dataOrArgs); - - innerState.clientCache.setCacheFromSelection(selection, data); - eventHandler.sendCacheChange({ - data, - selection, - }); - } else { - throw new GQtyError('Invalid gqty proxy', { - caller: setCache, - }); - } - } - - function createArrayAccessor( - schemaValue: Schema[string] | SchemaUnion, - prevSelection: Selection, - unions?: string[], - parentTypename?: string - ) { - const arrayCacheValue = innerState.clientCache.getCacheFromSelection< - undefined | null | unknown[] - >(prevSelection); - if (innerState.allowCache && arrayCacheValue === null) return null; - - const proxyValue: unknown[] = - arrayCacheValue === undefined || - !Array.isArray(arrayCacheValue) || - (!innerState.allowCache && - Array.isArray(arrayCacheValue) && - arrayCacheValue.length === 0) - ? proxySymbolArray - : arrayCacheValue; - - const accessor = accessorCache.getArrayAccessor( - prevSelection, - proxyValue, - () => { - return new Proxy(proxyValue, { - set(_target, key: string, value: unknown) { - let index: number | undefined; - - try { - index = parseInt(key); - } catch (err) {} - - if (isInteger(index)) { - const selection = innerState.selectionManager.getSelection({ - key: index, - prevSelection, - }); - - const data = extractDataFromProxy(value); - - innerState.clientCache.setCacheFromSelection(selection, data); + if (!Reflect.has(target, key)) return; - eventHandler.sendCacheChange({ - selection, - data, - }); + const __typename = target[key]?.__typename; + if (!__typename || !context.schema[key]) return; - return true; - } + // Reuse root selections and their internally cached children, accessors + // can in turn be safely cached by selections but still scoped. + // + // TODO: This is a half-way done solution for nullable objects, which + // returns early and removes the possibility to make child selections. + const selection = selectionCache.get(key) ?? Selection.createRoot(key); + selectionCache.set(key, selection); - if (key === 'length') { - if (!Array.isArray(arrayCacheValue)) { - console.warn( - 'Invalid array assignation to unresolved proxy array' - ); - return true; - } - - Reflect.set(arrayCacheValue, key, value); - - eventHandler.sendCacheChange({ - selection: prevSelection, - data: innerState.clientCache.getCacheFromSelection( - prevSelection - ), - }); - return true; - } - - throw TypeError('Invalid array assignation: ' + key); - }, - get(target, key: string, receiver) { - if (key === 'length') { - if (proxyValue === proxySymbolArray) { - const lengthSelection = - innerState.selectionManager.getSelection({ - key: 0, - prevSelection, - }); - const childAccessor = createAccessor( - schemaValue, - lengthSelection, - unions, - parentTypename - ); - - accessorCache.addAccessorChild(accessor, childAccessor); - - if (childAccessor) Reflect.get(childAccessor, '__typename'); - } - - return target.length; - } else if (key === 'toJSON') { - return () => - decycle( - innerState.clientCache.getCacheFromSelection( - prevSelection, - [] - ) - ); - } - - let index: number | undefined; - - try { - index = parseInt(key); - } catch (err) {} - - if (isInteger(index)) { - const selection = innerState.selectionManager.getSelection({ - key: index, - prevSelection, - }); - - // For the subscribers of data changes - interceptorManager.addSelectionCache(selection); - - if ( - innerState.allowCache && - arrayCacheValue !== undefined && - arrayCacheValue?.[index] == null - ) { - /** - * If cache is enabled and arrayCacheValue[index] is 'null' or 'undefined', return it - */ - return arrayCacheValue?.[index]; - } - - const childAccessor = createAccessor( - schemaValue, - selection, - unions, - parentTypename - ); - - accessorCache.addAccessorChild(accessor, childAccessor); - - return childAccessor; - } - - return Reflect.get(target, key, receiver); + return createObjectAccessor({ + context, + cache: { + data: target[key], + expiresAt: Infinity, }, + selection, + type: { __type: key }, }); - } - ); - - return accessor; - } - - const notFoundObjectKey = {}; - const nullObjectKey = {}; - - const unionsCacheValueMap = new WeakMap>(); - - function getCacheValueReference( - cacheValue: unknown, - unions: string[] | undefined - ) { - if (unions === undefined) return cacheValue; - - const mapKey: object = - cacheValue == null - ? nullObjectKey - : typeof cacheValue === 'object' - ? cacheValue! - : notFoundObjectKey; - - let cacheValueMap = unionsCacheValueMap.get(unions); - - if (!cacheValueMap) { - cacheValueMap = new WeakMap(); - cacheValueMap.set(unions, mapKey); - } - - let cacheReference = cacheValueMap.get(mapKey); - - if (!cacheReference) { - cacheReference = {}; - cacheValueMap.set(mapKey, cacheReference); + }, } + ); +} - return cacheReference; +/** + * Handler for object level data updates. + */ +export const setCache = ( + accessor: TData, + data: Partial +) => { + const meta = $meta(accessor); + if (!meta) { + throw new GQtyError(`Subject must be an accessor.`); } - function getCacheTypename(selection: Selection): string | void { - const cacheValue: unknown = - innerState.clientCache.getCacheFromSelection(selection); - - if (isObjectWithType(cacheValue)) return cacheValue.__typename; - - interceptorManager.addSelection( - innerState.selectionManager.getSelection({ - key: '__typename', - prevSelection: selection, - }) + data = ($meta(data)?.cache.data as TData | undefined) ?? data; + if (!data || typeof data !== 'object') { + throw new GQtyError( + `Data must be a subset the schema object, got type: ${typeof data}.` ); } - const emptyScalarArray = Object.freeze([]); - - const querySelection = selectionManager.getSelection({ - key: 'query', - type: SelectionType.Query, - }); + meta.cache.data = data; - const mutationSelection = selectionManager.getSelection({ - key: 'mutation', - type: SelectionType.Mutation, - }); - - const subscriptionSelection = selectionManager.getSelection({ - key: 'subscription', - type: SelectionType.Subscription, - }); - - function createAccessor( - schemaValue: Schema[string] | SchemaUnion, - prevSelection: Selection, - unions?: string[], - parentTypename?: string - ) { - let cacheValue: unknown = - innerState.clientCache.getCacheFromSelection(prevSelection); - if (innerState.allowCache && cacheValue === null) return null; + Object.assign(accessor, data); +}; - const accessor = accessorCache.getAccessor( - prevSelection, - getCacheValueReference(cacheValue, unions), - () => { - const isUnionsInterfaceSelection = Boolean(unions && parentTypename); +/** + * Use another accessor like a fragment, this function takes all children from + * the donor and runs it again on the accessor. + * + * Useful when you want to query the eaxact same fields from a mutation. + */ +export const assignSelections = ( + source: TData | null, + target: TData | null +) => { + if (source === null || target === null) return; + + if ($meta(source) === undefined) { + throw new GQtyError(`Invalid source proxy`); + } - if (normalizationHandler && (parentTypename || unions)) { - if (unions) { - const schemaKeys = normalizationHandler.schemaKeys; + if ($meta(target) === undefined) { + throw new GQtyError(`Invalid target proxy`); + } - for (const objectTypeName of unions) { - const objectNormalizationKeys = schemaKeys[objectTypeName]; - if (objectNormalizationKeys?.length) { - const coFetchSelections = objectNormalizationKeys.map((key) => - innerState.selectionManager.getSelection({ - key, - prevSelection, - unions: unionObjectTypesForSelections[objectTypeName] || [ - objectTypeName, - ], - }) - ); + const sourceSelection = $meta(source)?.selection; + if (!sourceSelection) return; - prevSelection.addCofetchSelections(coFetchSelections); - } - } - } else if (parentTypename) { - const normalizationKeys = - normalizationHandler.schemaKeys[parentTypename]; - if (normalizationKeys?.length) { - const selections = normalizationKeys.map((key) => - innerState.selectionManager.getSelection({ - key, - prevSelection, - }) - ); + if (sourceSelection.children.size === 0) { + if (process.env.NODE_ENV !== 'production') { + console.warn("Source proxy doesn't have any selections made"); + } + } - prevSelection.addCofetchSelections(selections); - } + const stack = new Set(sourceSelection.children.values()); + + for (const it of stack) { + if (it.children.size === 0) { + // Replay the selection on the accessor + let currentNode: TData | undefined; + for (const selection of it.ancestry) { + if (currentNode === undefined) { + if (selection !== sourceSelection) continue; + + currentNode = target; + } else { + if (selection.input) { + currentNode = currentNode[selection.key](selection.input); + } else { + currentNode = currentNode[selection.key]; } } - - const autoFetchUnionTypename = isUnionsInterfaceSelection - ? () => { - if (isUnionsInterfaceSelection) { - interceptorManager.addSelection( - innerState.selectionManager.getSelection({ - key: '__typename', - prevSelection, - }) - ); - } - } - : undefined; - - const proxyValue = - schemaValue instanceof SchemaUnion - ? schemaValue.fieldsProxy - : Object.keys(schemaValue!).reduce((acum, key) => { - acum[key] = ProxySymbol; - return acum; - }, {} as Record); - - return new Proxy(proxyValue, { - set(_target, key: string, value: unknown) { - if (!proxyValue.hasOwnProperty(key)) - throw TypeError('Invalid proxy assignation'); - - const targetSelection = innerState.selectionManager.getSelection({ - key, - prevSelection, - unions, - }); - - const data = extractDataFromProxy(value); - - innerState.clientCache.setCacheFromSelection(targetSelection, data); - eventHandler.sendCacheChange({ - data, - selection: targetSelection, - }); - - return true; - }, - get(_target, key: string, _receiver) { - if (key === 'toJSON') - return () => - decycle<{}>( - innerState.clientCache.getCacheFromSelection( - prevSelection, - {} - ) - ); - - if (schemaValue instanceof SchemaUnion) { - if (!(key in schemaValue.types)) return; - - if (innerState.allowCache) { - const typename = getCacheTypename(prevSelection); - - if (typename && typename !== key) return; - } - - return createAccessor( - schemaValue.types[key], - prevSelection, - [key], - key - ); - } - - if (!proxyValue.hasOwnProperty(key)) return; - - const { __type, __args } = schemaValue![key]; - let { pureType, isArray } = parseSchemaType(__type); - - const resolve = (args?: { - argValues?: Record; - argTypes: Record; - }): unknown => { - const selection = innerState.selectionManager.getSelection({ - key, - prevSelection, - args: args != null ? args.argValues : undefined, - argTypes: args != null ? args.argTypes : undefined, - unions, - }); - - if (selection.selectionsList.length > depthLimit) return null; - - // For the subscribers of data changes - interceptorManager.addSelectionCache(selection); - - if (scalarsEnumsHash[pureType]) { - const cacheValue = - innerState.clientCache.getCacheFromSelection(selection); - - accessorCache.addSelectionToAccessorHistory( - accessor, - selection - ); - - if (cacheValue === undefined) { - innerState.foundValidCache = false; - - let unionTypename: string | undefined | void; - const isUnionWithDifferentTypeResult = - isUnionsInterfaceSelection - ? !!(unionTypename = getCacheTypename(prevSelection)) && - unionTypename !== parentTypename - : false; - - /** - * If cache was not found & the selection doesn't have errors, - * add the selection to the queue, except when querying unions or interfaces - * and the __typename doesn't correspond to the target object type - */ - if ( - selection.type === SelectionType.Subscription || - (!isUnionWithDifferentTypeResult && - (schedulerClientCache !== innerState.clientCache || - !schedulerErrorsMap.has(selection))) - ) { - interceptorManager.addSelection(selection); - autoFetchUnionTypename?.(); - } - - return isArray ? emptyScalarArray : undefined; - } else if ( - !innerState.allowCache || - selection.type === SelectionType.Subscription - ) { - // Or if you are making the network fetch always - interceptorManager.addSelection(selection); - autoFetchUnionTypename?.(); - } else { - // Support cache-and-network / stale-while-revalidate pattern - interceptorManager.addSelectionCacheRefetch(selection); - } - - return cacheValue; - } - - let typeValue: Record | SchemaUnion = - schema[pureType]!; - - if (!typeValue && pureType.startsWith('$')) { - typeValue = schemaUnions[(pureType = pureType.slice(1))]; - } - - if (typeValue) { - const childAccessor = ( - isArray ? createArrayAccessor : createAccessor - )(typeValue, selection, undefined, pureType); - - accessorCache.addAccessorChild(accessor, childAccessor); - - return childAccessor; - } - - throw new GQtyError( - `GraphQL Type not found: ${pureType}, available fields: "${Object.keys( - schemaValue! - ).join(' | ')}"` - ); - }; - - if (__args) { - const resolveInfo: ResolveInfo = { - key, - prevSelection, - argTypes: __args, - }; - - return Object.assign( - function ProxyFn(argValues?: Record) { - return resolve({ - argValues, - argTypes: __args, - }); - }, - { - [ResolveInfoSymbol]: resolveInfo, - } - ); - } - - return resolve(); - }, - }); } - ); - - return accessor; - } - - const query: GeneratedSchema['query'] = createAccessor( - schema.query, - querySelection - )!; - const mutation: GeneratedSchema['mutation'] = createAccessor( - schema.mutation, - mutationSelection - )!; - const subscription: GeneratedSchema['subscription'] = createAccessor( - schema.subscription, - subscriptionSelection - )!; - - function assignSelections( - source: A | null | undefined, - target: B | null | undefined - ): void { - if (source == null || target == null) return; - - let sourceSelection: Selection; - let targetSelection: Selection; - - if ( - !accessorCache.isProxy(source) || - !(sourceSelection = accessorCache.getProxySelection(source)!) - ) - throw new GQtyError('Invalid source proxy', { - caller: assignSelections, - }); - if ( - !accessorCache.isProxy(target) || - !(targetSelection = accessorCache.getProxySelection(target)!) - ) - throw new GQtyError('Invalid target proxy', { - caller: assignSelections, - }); - - const sourceSelections = accessorCache.getSelectionSetHistory(source); - - if (!sourceSelections) { - if (process.env.NODE_ENV !== 'production') { - console.warn("Source proxy doesn't have any selections made"); - } - return; - } - - for (const selection of sourceSelections) { - let mappedSelection = targetSelection; - const filteredSelections = selection.selectionsList.filter( - (value) => !sourceSelection.selectionsList.includes(value) - ); - - for (const { key, args, argTypes } of filteredSelections) { - mappedSelection = innerState.selectionManager.getSelection({ - key, - args, - argTypes, - prevSelection: mappedSelection, - }); + } else { + for (const [, child] of it.children) { + stack.add(child); } - - accessorCache.addSelectionToAccessorHistory(target, mappedSelection); - interceptorManager.addSelection(mappedSelection); } } +}; - return { - createAccessor, - createArrayAccessor, - assignSelections, - setCache, - query, - mutation, - subscription, - }; -} +/* TODO: Selection - null + * + * Cache accessor and selections such that subsequent selections are + * retained when null types are returned from the cache, where new selections + * are prevented from happening. + * + * Make sure such cache is cleared when new selections can be made again. + * + * Triggering onSelect() for all scalar selections inside would suffice, no + * need to cache the whole selection tree. + * + * Cache by value, nullObjectKey? Every single fetch should cache selections + * from last time, cached selections are only used as long as we got nulls. + * + * Caching accessors may prevent accessors from showing new values, so we only + * cache selections by null values and empty arrays. + */ + +/* TODO: Selection - Conditional Rendering + * + * Handles conditional rendering that triggers query update on itself + * which results in infinite circular renderings. + * + * When a cache is still fresh, subsequent fetches should merge with objects + * instead of replacing them. Except on refetches, i.e. no-cache and no-store, + * which should instead invalidate reachable cache roots during selection. + */ + +/* TODO: Selection - use() + * + * Replace `assignSelection` with `Selection.use(Selection)`, + * `Selection.getLeafNodes()` should comes in handy. + */ diff --git a/packages/gqty/src/Accessor/meta.ts b/packages/gqty/src/Accessor/meta.ts new file mode 100644 index 000000000..3aad8f63d --- /dev/null +++ b/packages/gqty/src/Accessor/meta.ts @@ -0,0 +1,21 @@ +import type { CacheDataContainer, CacheNode } from '../Cache'; +import type { SchemaContext } from '../Client'; +import type { Type } from '../Schema'; +import type { Selection } from '../Selection'; + +export type Meta = { + context: SchemaContext; + cache: CacheDataContainer; + selection: Selection; + /** Object type definition from the geneated schema. */ + type: Type; +}; + +/** Pun-intended, a universe of metadata. */ +const metaverse = new WeakMap(); + +export const $setMeta = (accessor: object, meta: Meta) => { + metaverse.set(accessor, meta); +}; + +export const $meta = (accessor: T) => metaverse.get(accessor); diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts new file mode 100644 index 000000000..d5b09eb2f --- /dev/null +++ b/packages/gqty/src/Accessor/resolve.ts @@ -0,0 +1,488 @@ +import type { CacheObject } from '../Cache'; +import { flattenObject } from '../Cache/crawl'; +import { isCacheObject } from '../Cache/utils'; +import { GQtyError } from '../Error'; +import { + GeneratedSchemaObject, + parseSchemaType, + SchemaUnionsKey, + Type, +} from '../Schema'; +import type { Selection } from '../Selection'; +import type { Meta } from './meta'; +import { $meta, $setMeta } from './meta'; +import { createSkeleton, isSkeleton } from './skeleton'; + +const verbose = process.env.NODE_ENV !== 'production'; + +/** + * Check provided accessor with the new selection, returns appropriate + * accessors, data skeleton or cached value according to the generated schema. + */ +export const resolve = ( + accessor: GeneratedSchemaObject, + /** Incoming new selection to check against the accessor. */ + selection: Selection, + __type: Type['__type'] +) => { + const meta = $meta(accessor); + if (!meta) return; + + const { context } = meta; + const { alias, key, isUnion, cacheKeys } = selection; + const isNumericSelection = +key === +key; + + if (verbose && cacheKeys.length >= context.depthLimit) { + throw new GQtyError( + `Depth limit reached at ${cacheKeys.join( + '.' + )}, ignoring futther selections.` + ); + } + + const cache = + selection.parent === selection.root + ? // The way we structure the cache for SWR requires special treatment + // for 2nd level selections, e.g. query.hello, mutation.update()... etc. + context.cache.get(cacheKeys.join('.'), context.cacheOptions) ?? { + data: undefined, + expiresAt: Infinity, + } + : { ...meta.cache }; + + if (cache.data === undefined) { + cache.expiresAt = Infinity; + } + + let data = cache.data; + + const { pureType, isArray, isNullable } = parseSchemaType(__type); + const type = context.schema[pureType]; + + // Interfaces & unions pass through the data to children. + if ( + !isUnion && + selection.root !== selection && + selection.root !== selection.parent && + data !== null + ) { + if (Array.isArray(data)) { + if (verbose && !isNumericSelection) { + console.warn(`[GQty] Accessing arrays with non-numeric key "${key}".`); + } + + data = data[+key]; + } else if (typeof data === 'object') { + data = data[alias ?? key]; + } + } + + // nullable types + if (data === null) { + if (!isNullable) { + throw new GQtyError(`Cached null for non-nullable type ${pureType}.`); + } + + return null; + } + + if (!type) { + // Scalar and scalar arrays + if (context.scalars[pureType]) { + context.onSelect?.(selection, { ...cache, data }); + + return isArray ? (Array.isArray(data) ? data : [undefined]) : data; + } + + // Interfaces and unions ($on) + const unions = context.schema[SchemaUnionsKey]?.[pureType.slice(1)]; + if (unions?.length) { + return createUnionAccessor({ + context, + cache: meta.cache, + possibleTypes: unions, + selection, + }); + } + + throw new GQtyError(`GraphQL type not found: ${pureType}`); + } + + // Data skeleton + if (data === undefined) { + data = createSkeleton(() => ({})); + + // Getting an array of an object, not interacting with array items. + if (isArray && !isNumericSelection) { + data = createSkeleton(() => [data]); + } + + // When accesing cache roots, put skeletons back in for optimistic updates. + if (cacheKeys.length === 2) { + const [type, field] = cacheKeys; + context.cache.set({ [type]: { [field]: data } }); + } + } + + // Update the cache with skeleton or moulded data + if ( + cacheKeys.length > 2 && + cache.data && + typeof cache.data === 'object' && + !Array.isArray(cache.data) && + !isNumericSelection + ) { + cache.data[alias ?? key] = data; + } + + cache.data = data; + + return isArray && !isNumericSelection + ? createArrayAccessor({ + cache, + context, + selection, + type: { __type: pureType }, + }) + : createObjectAccessor({ + cache, + context, + selection, + type: { __type }, + }); +}; + +export const createUnionAccessor = ({ + context, + cache, + possibleTypes, + selection, +}: Omit & { possibleTypes: readonly string[] }) => { + return new Proxy( + Object.fromEntries(possibleTypes.map((__typename) => [__typename, true])), + { + get(_, __typename) { + if (typeof __typename !== 'string') return; + if (!possibleTypes.includes(__typename)) return; + + const data = cache.data; + if ( + !isSkeleton(data) && + (!isCacheObject(data) || data.__typename !== __typename) + ) + return; + + const type = context.schema[__typename]; + if (!type) return; + + return createObjectAccessor({ + context, + cache, + selection: selection.getChild(__typename, { isUnion: true }), + type: { __type: __typename }, + }); + }, + } + ); +}; + +/** + * Globally defining the proxy handler to avoid accidential scope references. + */ +const objectProxyHandler: ProxyHandler = { + get(currentType: Record, key, proxy) { + if (typeof key !== 'string') return; + + if (key === 'toJSON') { + return () => { + const data = $meta(proxy)?.cache.data; + + if (typeof data !== 'object' || data === null) { + return data; + } + + return Object.entries(data).reduce>( + (prev, [key, value]) => { + if (!isSkeleton(value)) { + prev[key] = value; + } + + return prev; + }, + {} + ); + }; + } + + const meta = $meta(proxy); + if (!meta) return; + + if ( + // Skip Query, Mutation and Subscription + meta.selection.parent !== undefined && + // Prevent infinite recursions + !getIdentityFields(meta).includes(key) + ) { + selectIdentityFields(proxy, currentType); + } + + const targetType = currentType[key]; + if (!targetType || typeof targetType !== 'object') return; + + const { __args, __type } = targetType; + if (__args) { + return (args?: Record) => + resolve( + proxy, + meta.selection.getChild( + key, + args ? { input: { types: __args!, values: args } } : {} + ), + __type + ); + } + + return resolve(proxy, meta.selection.getChild(key), __type); + }, + set(_, key, value, proxy) { + const meta = $meta(proxy); + if (typeof key !== 'string' || !meta) return false; + + const { context, cache, selection } = meta; + + // Extract proxy data, keep the object reference unless users deep clone it. + value = deepMetadata(value) ?? value; + + if (selection.cacheKeys.length <= 2) { + const [type, field] = selection.cacheKeys; + + if (field) { + context.cache.set({ [type]: { [field]: { [key]: value } } }); + } else { + context.cache.set({ [type]: { [key]: value } }); + } + } + + let result = false; + + if (isCacheObject(cache.data)) { + result = Reflect.set(cache.data, key, value); + } + + /** + * Ported for backward compatability. + * + * Triggering selections via optimistic updates is asking for infinite + * recursions, also it's unnecessarily complicated to infer arrays, + * interfaces and union selections down the selection tree. + * + * If we can't figure out an elegant way to infer selections in future + * iterations, remove it at some point. + */ + for (const [keys, scalar] of flattenObject(value)) { + let currentSelection = selection.getChild(key); + for (const key of keys) { + currentSelection = currentSelection.getChild(key); + } + + context.onSelect?.(currentSelection, { ...cache, data: scalar }); + } + + return result; + }, +}; + +export type AccessorOptions = { + type: Record; +}; + +export const createObjectAccessor = ( + meta: Meta +) => { + const { + cache: { data }, + context: { schema }, + type: { __type }, + } = meta; + if (data !== undefined && !isCacheObject(data)) { + throw new GQtyError( + `Invalid type ${ + data === null ? 'null' : typeof data + } for object accessors.` + ); + } + + const createAccessor = () => { + const type = schema[parseSchemaType(__type).pureType]; + if (!type) throw new GQtyError(`Invalid schema type ${__type}.`); + + const proxy = new Proxy( + // `type` here for ownKeys proxy trap + type as TSchemaType, + data + ? Object.assign({}, objectProxyHandler, { + getOwnPropertyDescriptor: (target, key) => + Reflect.getOwnPropertyDescriptor(data, key) ?? + Reflect.getOwnPropertyDescriptor(target, key), + } satisfies typeof objectProxyHandler) + : objectProxyHandler + ); + + $setMeta(proxy, meta); + + return proxy; + }; + + return createAccessor(); +}; + +/** Recursively replace proxy accessors with its actual cached value. */ +export const deepMetadata = (input: any) => { + const data = metadata(input); + const stack = new Set([data]); + const seen = new Set(); + + for (const it of stack) { + if (seen.has(it)) continue; + seen.add(it); + + if (Array.isArray(it)) { + for (let [k, v] of it.entries()) { + if (isObject(v)) v = it[k] = metadata(v); + + stack.add(v); + } + } else if (isObject(it)) { + for (let [k, v] of Object.entries(it)) { + if (isObject(v)) v = it[k] = metadata(v); + + stack.add(v); + } + } + } + + return data; + + function metadata>(it: TData): TData { + return ($meta(it)?.cache.data as TData) ?? it; + } + + function isObject(it: any): it is Record { + return typeof it === 'object' && it !== null; + } +}; + +/** + * Look up user specified key fields for the type. Defaults to `id`, and `_id` + * if `id` is not found. + */ +const getIdentityFields = ({ + context: { typeKeys }, + type: { __type }, +}: Meta) => { + const { pureType } = parseSchemaType(__type); + + return typeKeys?.[pureType] ?? ['__typename', 'id', '_id']; +}; + +/** Add identity fields into selection. */ +const selectIdentityFields = ( + accessor: CacheObject, + type: Record +) => { + const meta = $meta(accessor); + if (!meta) return; + + const { + selection: { parent, isUnion }, + } = meta; + + // Always __typename except inside interfaces and unions + if (parent?.key !== '$on') { + accessor.__typename; + } + + const keys = getIdentityFields(meta); + for (const key of keys) { + // Field not exist on this object type + if (!type[key]) continue; + + // Already selected at the common root of this interface/union. + if (isUnion && parent?.parent?.children.has(key)) continue; + + accessor[key]; + } +}; + +/** + * A proxy handler globally defined to avoid accidential scope references. + */ +const arrayProxyHandler: ProxyHandler = { + get(_, key, proxy) { + const meta = $meta(proxy); + if (!meta) return; + + if (key === 'toJSON' && !isSkeleton(meta.cache.data)) { + return () => $meta(proxy)?.cache.data; + } + + const { + cache: { data }, + selection, + } = meta; + if (!Array.isArray(data)) return; + + if (typeof key === 'string') { + if (!Array.isArray(data)) { + throw new GQtyError(`Cache data must be an array.`); + } + + if (key === 'length') proxy[0]; + + const numKey = +key; + if (!isNaN(numKey) && numKey < data.length) { + return resolve(proxy, selection.getChild(numKey), meta.type.__type); + } + } + + const value = Reflect.get(data, key); + if (typeof value === 'function') { + return value.bind(proxy); + } + + return value; + }, + set(_, key, value, proxy) { + if (typeof key === 'symbol' || +key !== +key) { + throw new GQtyError(`Invalid array assignment.`); + } + + const meta = $meta(proxy); + if (!meta) return false; + + const { + cache: { data }, + } = meta; + if (!Array.isArray(data)) return false; + + value = $meta(value)?.cache.data ?? value; + + return Reflect.set(data, key, value); + }, +}; + +export const createArrayAccessor = < + TSchemaType extends GeneratedSchemaObject[] +>( + meta: Meta +) => { + if (!Array.isArray(meta.cache.data)) { + throw new GQtyError(`Cache data must be an array.`); + } + + const proxy = new Proxy(meta.cache.data as TSchemaType, arrayProxyHandler); + + $setMeta(proxy, meta); + + return proxy; +}; diff --git a/packages/gqty/src/Accessor/skeleton.ts b/packages/gqty/src/Accessor/skeleton.ts new file mode 100644 index 000000000..cd05a1581 --- /dev/null +++ b/packages/gqty/src/Accessor/skeleton.ts @@ -0,0 +1,13 @@ +import { $meta } from './meta'; + +/** These objects won't show up in JSON serialization. */ +const skeletons = new WeakSet(); + +export const isSkeleton = (object: any) => + skeletons.has(object) || skeletons.has($meta(object)?.cache.data as object); + +export const createSkeleton = (fn: () => T) => { + const skeleton = fn(); + skeletons.add(skeleton); + return skeleton; +}; diff --git a/packages/gqty/src/Cache/accessorCache.ts b/packages/gqty/src/Cache/accessorCache.ts deleted file mode 100644 index aef112a39..000000000 --- a/packages/gqty/src/Cache/accessorCache.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { Selection } from '../Selection'; - -export interface ProxyAccessor extends Object { - __proxy?: undefined; -} - -const notFoundObjectKey = {}; -const nullObjectKey = {}; - -export interface AccessorCache { - getAccessor: ( - selection: Selection, - cacheValue: unknown, - proxyFactory: () => ProxyAccessor - ) => ProxyAccessor; - getArrayAccessor: ( - selection: Selection, - reference: unknown[], - proxyFactory: () => ProxyAccessor - ) => ProxyAccessor; - isProxy: (obj: any) => obj is ProxyAccessor; - getProxySelection: (proxy: ProxyAccessor) => Selection | undefined; - addSelectionToAccessorHistory: ( - accessor: ProxyAccessor, - selection: Selection - ) => void; - getSelectionSetHistory: ( - accessor: ProxyAccessor - ) => Set | undefined; - addAccessorChild: ( - parent: ProxyAccessor, - child: ProxyAccessor | null - ) => void; -} - -export function createAccessorCache(): AccessorCache { - const proxyCacheMap = new WeakMap< - Selection, - WeakMap - >(); - const arrayProxyMap = new WeakMap< - Selection, - WeakMap - >(); - const proxySet = new WeakSet(); - - const selectionProxyMap = new WeakMap(); - - const selectionSetHistory = new Map>(); - - const selectionChildRelations = new Map>(); - - function getAccessor( - selection: Selection, - cacheValue: unknown, - proxyFactory: () => ProxyAccessor - ): ProxyAccessor { - const mapKey: object = - cacheValue == null - ? nullObjectKey - : typeof cacheValue === 'object' - ? cacheValue! - : notFoundObjectKey; - let cacheMap = proxyCacheMap.get(selection); - - if (cacheMap == null) { - cacheMap = new WeakMap(); - proxyCacheMap.set(selection, cacheMap); - } - - let proxy = cacheMap.get(mapKey); - - if (proxy == null) { - proxy = proxyFactory(); - cacheMap.set(mapKey, proxy); - selectionProxyMap.set(proxy, selection); - proxySet.add(proxy); - } - - return proxy; - } - - function getArrayAccessor( - selection: Selection, - reference: unknown[], - proxyFactory: () => ProxyAccessor - ): ProxyAccessor { - let proxyMap = arrayProxyMap.get(selection); - - if (proxyMap == null) { - proxyMap = new WeakMap(); - arrayProxyMap.set(selection, proxyMap); - } - - let proxy = proxyMap.get(reference); - - if (proxy == null) { - proxy = proxyFactory(); - proxyMap.set(reference, proxy); - selectionProxyMap.set(proxy, selection); - proxySet.add(proxy); - } - - return proxy; - } - - function getProxySelection(proxy: ProxyAccessor) { - return selectionProxyMap.get(proxy); - } - - function isProxy(obj: any): obj is ProxyAccessor { - return proxySet.has(obj); - } - - function addSelectionToAccessorHistory( - accessor: ProxyAccessor, - selection: Selection - ) { - const accessorSelection = getProxySelection(accessor); - - if (!accessorSelection) return; - - let selectionSet = selectionSetHistory.get(accessorSelection); - - if (selectionSet == null) { - selectionSet = new Set(); - selectionSetHistory.set(accessorSelection, selectionSet); - } - - selectionSet.add(selection); - } - - function getSelectionSetHistory( - accessorOrSelection: ProxyAccessor | Selection - ) { - const accessorSelection = - accessorOrSelection instanceof Selection - ? accessorOrSelection - : getProxySelection(accessorOrSelection); - - if (!accessorSelection) return; - - let selections = selectionSetHistory.get(accessorSelection); - - const childs = selectionChildRelations.get(accessorSelection); - - if (childs) { - const selectionsWithChilds = (selections ||= new Set()); - - childs.forEach((childAccessor) => { - const childSelections = getSelectionSetHistory(childAccessor); - if (childSelections) { - childSelections.forEach((selection) => { - selectionsWithChilds.add(selection); - }); - } - }); - } - - return selections; - } - - function addAccessorChild( - parent: ProxyAccessor, - child: ProxyAccessor | null - ) { - if (!child) return; - - const parentSelection = getProxySelection(parent); - - const childSelection = getProxySelection(child); - - if (!parentSelection) return; - - if (!childSelection) return; - - let childs = selectionChildRelations.get(parentSelection); - - if (childs == null) { - childs = new Set(); - selectionChildRelations.set(parentSelection, childs); - } - - childs.add(childSelection); - } - - return { - getAccessor, - getArrayAccessor, - isProxy, - getProxySelection, - addSelectionToAccessorHistory, - getSelectionSetHistory, - addAccessorChild, - }; -} diff --git a/packages/gqty/src/Cache/crawl.ts b/packages/gqty/src/Cache/crawl.ts new file mode 100644 index 000000000..f8780dd6c --- /dev/null +++ b/packages/gqty/src/Cache/crawl.ts @@ -0,0 +1,93 @@ +import { FrailMap } from '../Helpers/FrailMap'; + +/** + * Stack-based deep crawl, avoiding recursions. + */ +export const crawl = ( + data: any, + fn: ( + it: any, + key: string | number, + parent: Record | any[] + ) => [any, any, any] | void, + maxIterations = 100000 +) => { + const seen = new InfiniteFrailMap(); + const stack = new Set<[any, any, any]>([[data, 0, []]]); + + for (const [it, key, obj] of stack) { + if (maxIterations-- < 0) { + throw new Error('Maximum iterations reached.'); + } + + if (seen.get(it).get(key).has(obj)) continue; + seen.get(it).get(key).set(obj, true); + + const ret = fn(it, key, obj); + if (ret !== undefined) { + stack.add(ret); + } + + if (it === undefined) { + delete obj[key]; + } else if (Array.isArray(it)) { + for (const [k, v] of it.entries()) stack.add([v, k, it]); + } else if (typeof it === 'object' && it !== null) { + for (const [k, v] of Object.entries(it)) stack.add([v, k, it]); + } + } + + return data; +}; + +export class InfiniteFrailMap extends FrailMap< + K, + V | InfiniteFrailMap> +> { + get(key: K): V | InfiniteFrailMap> { + const value = + super.get(key) ?? new InfiniteFrailMap>(); + + super.set(key, value); + + return value; + } +} + +export const flattenObject = ( + obj: Record, + maxIterations = 100000 +) => { + const result: [string[], string | number | boolean | null][] = []; + const stack = new Set<[string[], unknown]>([[[], obj]]); + const seen = new Set(); + + for (const [key, it] of stack) { + if (maxIterations-- < 0) { + throw new Error('Maximum iterations reached.'); + } + + if (it === undefined) continue; + + if ( + it === null || + typeof it === 'string' || + typeof it === 'number' || + typeof it === 'boolean' + ) { + result.push([key, it]); + } else { + if (seen.has(it)) continue; + seen.add(it); + + if (Array.isArray(it)) { + for (const [k, v] of it.entries()) stack.add([[...key, `${k}`], v]); + } else if (typeof it === 'object') { + for (const [k, v] of Object.entries(it)) + stack.add([[...key, `${k}`], v]); + } + } + } + + return result; +}; diff --git a/packages/gqty/src/Cache/dataCache.ts b/packages/gqty/src/Cache/dataCache.ts deleted file mode 100644 index fa2b5b0f6..000000000 --- a/packages/gqty/src/Cache/dataCache.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { Selection } from '../Selection'; -import { get, isObject, mergeWith, PlainObject, set } from '../Utils'; - -import type { NormalizationHandler } from '../Normalization'; - -export type CacheType = { - query?: Record; - mutation?: Record; - subscription?: Record; -}; - -export interface CacheInstance { - cache: CacheType; - getCacheFromSelection: { - (selection: Selection): undefined | Value; - ( - selection: Selection, - defaultValue: NotFound - ): Value | NotFound; - }; - setCacheFromSelection: (selection: Selection, value: unknown) => void; - mergeCache: ( - data: Record, - prefix: 'query' | 'mutation' | 'subscription' - ) => void; - normalizedCache: Record | undefined; -} - -export function createCache( - normalization?: NormalizationHandler -): CacheInstance { - const cache: CacheType = {}; - - function getCacheFromSelection( - selection: Selection - ): Value | undefined; - function getCacheFromSelection( - selection: Selection, - defaultValue: NotFound - ): Value | NotFound; - function getCacheFromSelection( - selection: Selection, - notFoundValue: any = undefined - ): Value | NotFound { - return normalization - ? normalization.getCacheFromSelection( - selection, - notFoundValue, - cache - ) - : get(cache, selection.cachePath, notFoundValue); - } - - function setCacheFromSelection(selection: Selection, value: unknown) { - if (normalization && isObject(value)) - normalization.scanNormalizedObjects(value); - - set(cache, selection.cachePath, value); - } - - function onObjectMergeConflict( - currentValue: object, - incomingValue: object - ): object | void { - const result = normalization?.onObjectMergeConflict( - currentValue, - incomingValue - ); - if (result) return result; - - if ( - Array.isArray(currentValue) && - Array.isArray(incomingValue) && - currentValue.length !== incomingValue.length - ) { - return incomingValue; - } - } - - function mergeCache( - data: Record, - prefix: 'query' | 'mutation' | 'subscription' - ) { - normalization?.scanNormalizedObjects(data); - - mergeWith( - cache, - { [prefix]: data }, - onObjectMergeConflict - ); - } - - return { - cache, - getCacheFromSelection, - setCacheFromSelection, - mergeCache, - normalizedCache: normalization?.normalizedCache, - }; -} diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index ceec9b5db..ed8bcd4f8 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -1,2 +1,392 @@ -export * from './accessorCache'; -export * from './dataCache'; +// Cache/slim.ts: A slim version of the original data cache + +import set from 'just-safe-set'; +import { isSkeleton } from '../Accessor/skeleton'; +import { deepCopy } from '../Helpers/deepCopy'; +import { FrailMap } from '../Helpers/FrailMap'; +import type { GeneratedSchemaObject } from '../Schema'; +import type { Selection } from '../Selection'; +import { crawl } from './crawl'; +import { + CacheNormalizationHandler, + deepNormalizeObject, + defaultNormalizationHandler, + NormalizedObjectShell, +} from './normalization'; +import { + CacheSnapshot, + exportCacheSnapshot, + importCacheSnapshot, +} from './persistence'; +import { isCacheObject } from './utils'; + +export type CacheRoot = { + query?: CacheObject; + mutation?: CacheObject; + subscription?: CacheObject; +}; + +export type CacheNode = CacheLeaf | CacheNode[] | CacheObject; + +export type CacheObject = { + __typename?: string; + [key: string]: CacheNode | CacheLeaf; +}; + +export type CacheLeaf = string | number | boolean | null | undefined; + +export type CacheOptions = { + maxAge?: number; + normalization?: boolean | CacheNormalizationHandler; + staleWhileRevalidate?: number; +}; + +export type CacheDataContainer = { + data: TData; + + /** + * data is open to TTL eviction after this time, before that only LRU eviction + * may take place. + */ + expiresAt: number; + + /** + * A hint for clients to revaliate, does not affect automatic cache eviction. + */ + swrBefore?: number; + + /** + * Internal reference of cache eviction timeout, subject to change in the + * future. + */ + timeout?: ReturnType; +}; + +export type CacheListener = ( + value: TData +) => void; + +export type CacheGetOptions = { + includeExpired?: boolean; +}; + +export type CacheSetOptions = { + skipNotify?: boolean; +}; + +/** + * A scoped cache for accessors, selections and data with expiry awareness. + */ +// TODO: LRU cap size +// TODO: Normalized cache eviction: evict(id: string) {} +// TODO: Simple cache eviction: evict(type: string, field: string) {} +export class Cache { + #maxAge = Infinity; + + #staleWhileRevalidate = 0; + + #data = new FrailMap(); + + #normalizationHandler?: CacheNormalizationHandler; + + /** Look up table for normalized objects. */ + #normalizedObjects = new FrailMap< + string, + NormalizedObjectShell + >(); + + constructor( + data?: CacheSnapshot, + { + maxAge = Infinity, + staleWhileRevalidate = 3600, + normalization, + }: CacheOptions = {} + ) { + this.#maxAge = maxAge; + this.#staleWhileRevalidate = staleWhileRevalidate; + + if (normalization) { + this.#normalizationHandler = + normalization === true ? defaultNormalizationHandler : normalization; + } + + if (data) { + this.restore(data); + } + } + + restore(data: CacheSnapshot) { + const { query, mutation, subscription, normalizedObjects } = + importCacheSnapshot(data, this.#normalizationHandler) ?? {}; + + this.#normalizedObjects = normalizedObjects ?? new FrailMap(); + this.#data = new FrailMap(); + + this.set({ query, mutation, subscription }, { skipNotify: true }); + } + + #subscriptions = new Map(); + + /** Subscription paths that reached a normalized object. */ + #normalizedSubscriptions = new WeakMap< + CacheObject, + Map + >(); + + /** Subscribe to cache changes. */ + subscribe(paths: string[], fn: CacheListener) { + const pathsSnapshot = Object.freeze([...paths]); + const unsubFns = new Set<() => void>(); + + this.#subscriptions.set(pathsSnapshot, fn); + unsubFns.add(() => this.#subscriptions.delete(pathsSnapshot)); + + // Normalized + { + const store = this.#normalizedObjects; + const subs = this.#normalizedSubscriptions; + const getId = this.#normalizationHandler?.identity; + if (getId) { + const scanNorbjs = (node: CacheNode, path: string[] = []) => { + for (const item of Array.isArray(node) ? node : [node]) { + if (!isCacheObject(item)) break; + + const id = getId(item); + if (id && store.has(id)) { + const sub = ( + subs.get(item) ?? new Map() + ).set(pathsSnapshot, fn); + + subs.set(item, sub); + + unsubFns.add(() => { + sub.delete(pathsSnapshot); + }); + } + + if (path.length > 0) { + scanNorbjs(item[path.shift()!], path); + } + } + }; + + for (const path of paths) { + const [type, field, ...parts] = path.split('.'); + + // Skip normalizations for out-of-spec paths to avoid pitfalls + if (!type || !field) continue; + + scanNorbjs(this.get(`${type}.${field}`)?.data, parts); + } + } + } + + return () => { + unsubFns.forEach((unsub) => unsub()); + }; + } + + // This is pretty inefficient, but maintaining an indexed tree is too much + // effort right now. Accepting PRs. + #notifySubscribers = (value: CacheRoot) => { + const ref = { + memo: undefined as any, + get current() { + return this.memo ?? (this.memo = deepCopy(value)); + }, + }; + + for (const [paths, notify] of this.#subscriptions) { + for (const path of paths) { + const parts = path.split('.'); + const node = select(value, parts); + + // Notify and breaks when something is hit + if ( + Array.isArray(node) + ? (node as unknown[]) + .flat(Infinity) + .some((item) => item !== undefined) + : node !== undefined + ) { + notify(ref.current); + break; + } + } + } + + // Normalized + if (this.#normalizationHandler) { + crawl(value, (node) => { + if (isCacheObject(node)) { + this.#normalizedSubscriptions + .get(node) + ?.forEach((notify) => notify(ref.current)); + } + }); + } + }; + + /* FIXME + * + * Caching accessors by selections is a mean to retain sub-selections when + * nullable arrays and objects has null cached, such accessors will return + * null and no futher selections can be triggered on them. + * + * Only when cache value is null, such a cache should be responsible for + * returning all child selections made last time in this scope. + * + * Caching accessors by cache values is broken with normalization enabled. + * Different selection paths leading to the same normalized object overwrites + * each other, along with the selection inside. + */ + #selectionAccessors = new WeakMap(); + + getAccessor( + selection: Selection, + createAccessor: () => TSchemaType + ): TSchemaType { + const map = this.#selectionAccessors; + const accessor = map.get(selection) ?? createAccessor(); + + if (!map.has(selection)) { + map.set(selection, accessor); + } + + return accessor as TSchemaType; + } + + /** + * Retrieve cache values by first 2 path segments, e.g. `query.todos` or + * `mutation.createTodo`. + */ + get( + path: string, + { includeExpired }: CacheGetOptions = {} + ): CacheDataContainer | undefined { + const [, type, key, subpath] = + path.match(/^([a-z]+(?:\w*))\.(?:__)?([a-z]+(?:\w*))(.*[^\.])?$/i) ?? []; + if (!type || !key) { + throw new ReferenceError( + 'Cache path must starts with `${type}.`: ' + path + ); + } + + const cacheKey = `${type}.${key}`; + + let dataContainer = this.#data.get(cacheKey); + if (dataContainer === undefined) { + return; + } + + const { expiresAt, swrBefore } = dataContainer; + let { data } = dataContainer; + + return { + data: + expiresAt < Date.now() && !includeExpired + ? undefined + : subpath + ? select(data, subpath.slice(1).split('.')) + : data, + expiresAt, + swrBefore, + }; + } + + /** + * Merge objects into the current cache, recursively normalize incoming values + * if normalization is enabled. Notifies cache listeners afterwards. + * + * Example value: `{ query: { foo: "bar" } }` + */ + set(values: CacheRoot, { skipNotify = false }: CacheSetOptions = {}) { + const age = this.#maxAge; + const swr = this.#staleWhileRevalidate; + const now = Date.now(); + + // Normalize incoming data before merging. + if (this.#normalizationHandler) { + values = deepNormalizeObject(values, { + ...this.#normalizationHandler, + store: this.#normalizedObjects, + }); + } + + for (const [type, cacheObjects = {}] of Object.entries(values)) { + for (const [field, data] of Object.entries(cacheObjects as CacheObject)) { + const cacheKey = `${type}.${field}`; + + clearTimeout(this.#data.get(cacheKey)?.timeout); + + const dataContainer: CacheDataContainer = { + data, + expiresAt: age + now, + swrBefore: age + swr + now, + }; + + if (isFinite(age + swr)) { + const timeout = setTimeout( + // Hold on to lexical scope reference, preventing GC from WeakRef. + () => dataContainer, + age + swr + ); + + if (typeof timeout === 'object') { + timeout.unref(); + } + + dataContainer.timeout = timeout; + } + + this.#data.set(cacheKey, dataContainer, { strong: !isFinite(age) }); + } + } + + if (!skipNotify) { + this.#notifySubscribers(values); + } + } + + toJSON() { + const snapshot = + // Remove skeletons + crawl( + [...this.#data].reduce((prev, [key, { data }]) => { + set(prev, key, data); + return prev; + }, {} as CacheRoot), + (it, key, obj) => { + if (isSkeleton(it)) { + delete (obj as any)[key]; + } + } + ); + + if (this.#normalizationHandler) { + return exportCacheSnapshot(snapshot, this.#normalizationHandler); + } else { + return snapshot; + } + } +} + +/** + * Similar to _.get() but dots goes into arrays. + * + * JSONata, JSONPath and JMESPath does similar things but they're overkill here. + */ +export function select(node: CacheNode, path: string[]): CacheNode { + if (node == null || typeof node !== 'object' || path.length === 0) { + return node; + } + + if (Array.isArray(node)) { + return node.map((item) => select(item, path)); + } + + const [key, ...rest] = path; + + return select(node[key], rest); +} diff --git a/packages/gqty/src/Cache/normalization.ts b/packages/gqty/src/Cache/normalization.ts new file mode 100644 index 000000000..281668bc2 --- /dev/null +++ b/packages/gqty/src/Cache/normalization.ts @@ -0,0 +1,196 @@ +import type { CacheNode, CacheObject } from '.'; +import { GQtyError } from '../Error'; +import { deepAssign } from '../Utils'; +import { crawl } from './crawl'; +import { isCacheObject } from './utils'; + +const refKey = Symbol('__ref'); + +export type NormalizedObjectShell = + TData & { + $set(value: TData): void; + toJSON(): TData; + }; + +export const isNormalizedObjectShell = ( + value: any +): value is NormalizedObjectShell => shells.has(value); + +const deshell = (input: any) => + isNormalizedObjectShell(input) ? input.toJSON() : input; + +const shells = new Set(); + +export type NormalizatioOptions = + CacheNormalizationHandler & { + store: Map>; + }; + +/** + * Update the store with incoming data, merge or replace them depends on + * provided handlers. + */ +export const normalizeObject = ( + data: TData, + { identity, onConflict = (_, t) => t, store }: NormalizatioOptions +): NormalizedObjectShell | undefined => { + if (typeof data !== 'object' || Array.isArray(data)) { + throw new GQtyError( + `Only objects can be normalized, received ${typeof data}.` + ); + } + + const id = identity(data); + if (!id) return; + + const existing = store.get(id); + data = deshell(data); + + if (existing) { + data = deepAssign({}, [existing.toJSON(), data], onConflict); + + existing.$set(data as TData); + + return existing; + } else { + const result = new Proxy( + { [refKey]: data }, + { + ownKeys(target) { + return Reflect.ownKeys(target[refKey]); + }, + getOwnPropertyDescriptor(target, key) { + return Reflect.getOwnPropertyDescriptor(target[refKey], key); + }, + set(target, key, value) { + return Reflect.set(target[refKey], key, value); + }, + get(target, key) { + if (key === '$set') { + return (value: TData) => { + target[refKey] = value; + }; + } + + if (key === 'toJSON') { + return () => target[refKey]; + } + + return Reflect.get(target, key) ?? Reflect.get(target[refKey], key); + }, + } + ) as unknown as NormalizedObjectShell; + + shells.add(result); + + store.set(id, result); + + return result; + } +}; + +/** + * Recursively replace normalize input objects with the provided store. + */ +export const deepNormalizeObject = ( + data: TData, + options: NormalizatioOptions +): TData => { + const seen = new Set(); + + return crawl(data, (it, key, obj) => { + if (!isCacheObject(it)) return; + + // Replace normalized objects across queries, but merge multiple occurrances + // of the same object within a query. + const id = options.identity(it); + + if (id && !seen.has(id)) { + // We always merge in normalizedObject(), replacement is done by replacing + // with an empty one beforehand. + options.store.get(id)?.$set({}); + + seen.add(id); + } + + const norbj = normalizeObject(it, options); + if (norbj === undefined) return; + + (obj as any)[key] = norbj; + + if (seen.has(norbj)) return; + seen.add(norbj); + + return [norbj, 0, []]; + }); +}; + +export type CacheNormalizationHandler = { + /** + * To disable normalization for a particular object, return undefined. + */ + identity(value: CacheObject): string | undefined; + + onConflict?( + /** Existing value */ + sourceValue: object, + /** Incoming value */ + targetValue: object + ): object | undefined; + + schemaKeys?: Record; +}; + +export const defaultNormalizationHandler: CacheNormalizationHandler = { + identity(value) { + if (!value || typeof value !== 'object') return; + + const identityFields = [value.__typename, value.id ?? value._id]; + + if (identityFields.some((field) => field === undefined)) return; + + return identityFields.join(':'); + }, + onConflict(existing, incoming) { + if (Array.isArray(existing) && Array.isArray(incoming)) { + if (existing.length === incoming.length) { + for (const [k, a] of existing.entries()) { + const b = incoming[k]; + if (isCacheObject(a) && isCacheObject(b)) { + Object.assign(a, b); + } + } + } else { + // Replace the values, but keep the original array reference. + existing.splice(0, existing.length, ...incoming); + } + + return existing; + } + // else if (isCacheObject(existing) && isCacheObject(incoming)) { + // /** + // * Object subsets further closer to leaf nodes will replace objects closer + // * to root, we should blindly merge them in the same fetch. + // * + // * Replacements via isSubsetOf() may happen between fetches, not within. + // */ + // if (isSubsetOf(existing, incoming) || isSubsetOf(incoming, existing)) { + // return { ...incoming, ...existing }; + // } else { + // return incoming; + // } + // } + + return; + }, +}; + +export const isSubsetOf = (a: CacheObject, b: CacheObject) => { + for (const [key, value] of Object.entries(a)) { + if (value !== b[key]) { + return false; + } + } + + return true; +}; diff --git a/packages/gqty/src/Cache/persistence.ts b/packages/gqty/src/Cache/persistence.ts index 4b016c2d8..88e7bd120 100644 --- a/packages/gqty/src/Cache/persistence.ts +++ b/packages/gqty/src/Cache/persistence.ts @@ -1,99 +1,186 @@ -import type { - SelectionManager, - SelectionsBackup, -} from '../Selection/SelectionManager'; -import { decycle, isPlainObject, retrocycle } from '../Utils'; -import type { CacheInstance } from './dataCache'; - -export interface PersistenceHelpers { - backupPersistence(version?: string): string; - - restorePersistence( - backup: () => Promise, - expectedVersion?: string | undefined - ): Promise; - restorePersistence( - backup: string | null | undefined, - expectedVersion?: string | undefined - ): boolean; -} - -export function createPersistenceHelpers( - clientCache: CacheInstance, - selectionManager: SelectionManager -): PersistenceHelpers { - function backupPersistence(version?: string): string { - const { query } = clientCache.cache; - const cache = decycle({ query }); - const selections = selectionManager.backup(); - - return JSON.stringify({ - version, - cache, - selections, - }); - } +import { fromJSON, toJSON } from 'flatted'; +import type { Cache, CacheLeaf, CacheNode, CacheObject, CacheRoot } from '.'; +import { GQtyError } from '../Error'; +import { deepCopy } from '../Helpers/deepCopy'; +import { FrailMap } from '../Helpers/FrailMap'; +import { isPlainObject } from '../Utils'; +import { crawl } from './crawl'; +import { + CacheNormalizationHandler, + isNormalizedObjectShell, + NormalizedObjectShell, + normalizeObject, +} from './normalization'; - function restorePersistence( - backup: () => Promise, - expectedVersion?: string +export type Persistors = { + persist(version?: string): CacheSnapshot; + restore(snapshot: CacheSnapshot, version?: string): boolean; + restoreAsync( + snapshot: () => Promise, + version?: string ): Promise; - function restorePersistence( - backup: string | null | undefined, - expectedVersion?: string - ): boolean; - function restorePersistence( - backup: string | null | undefined | (() => Promise), - expectedVersion?: string - ): boolean | Promise { - if (typeof backup === 'function') { - return new Promise((resolve) => { - backup() - .then((value) => resolve(restore(value))) - .catch(() => resolve(false)); - }); - } - return restore(backup); - - function restore(backup?: unknown) { - if (typeof backup !== 'string') return false; - - const backupObject: { - cache?: Record; - selections?: SelectionsBackup; - version?: string; - } = JSON.parse(backup); - - if (isPlainObject(backupObject) && isPlainObject(backupObject.cache)) { - if ( - (expectedVersion && !backupObject.version) || - (backupObject.version && !expectedVersion) - ) { - return false; +}; + +/** Exported cache shape, for cache initialization and persistence. */ +export type CacheSnapshot = { + query?: Record; + mutation?: Record; + subscription?: Record; + normalized?: Record; + version?: string; +}; + +export type CacheSnapshotOutput = { + query?: Record; + mutation?: Record; + subscription?: Record; + normalizedObjects?: FrailMap>; +}; + +export type CacheSnapshotObject = { + __typename: string; + [key: string]: CacheSnapshotNode | CacheLeaf; +}; + +export type CacheReference = { __ref: string }; + +export type CacheSnapshotNode = + | CacheLeaf + | CacheObject + | CacheReference + | CacheSnapshotNode[] + | CacheSnapshotObject; + +export const isCacheSnapshotObject = ( + value: unknown +): value is CacheSnapshotObject => + isPlainObject(value) && typeof value.__typename === 'string'; + +export const isCacheReference = (value: unknown): value is CacheReference => + isPlainObject(value) && typeof value.__ref === 'string'; + +export const importCacheSnapshot = ( + snapshot: CacheSnapshot, + options?: CacheNormalizationHandler +): CacheSnapshotOutput => { + const { query, mutation, subscription, normalized = {} } = deepCopy(snapshot); + const seen = new Set(); + const data: CacheSnapshotOutput = crawl( + { query, mutation, subscription }, + (it, key, parent) => { + // Dereference + if (isCacheReference(it)) { + const norbj = normalized[it.__ref]; + (parent as any)[key] = norbj; + + if (!seen.has(norbj)) { + seen.add(norbj); + return [norbj, 0, []]; } - if (expectedVersion && backupObject.version) { - if (typeof backupObject.version === 'string') { - if (backupObject.version !== expectedVersion) { - return false; - } - } else { - return false; - } + } + + return; + } + ); + + if (Object.keys(data).length === 0) { + throw new GQtyError( + `No known root keys (query, mutation and subscription) are found.` + ); + } + + if (options) { + data.normalizedObjects = Object.entries(normalized).reduce( + (store, [key, value]) => { + const norbject = normalizeObject(value as CacheObject, { + ...options, + store, + }); + + if (norbject !== undefined) { + store.set(key, norbject); } - Object.assign(clientCache.cache, retrocycle(backupObject.cache)); + return store; + }, + new FrailMap>() + ); + } - selectionManager.restore(backupObject.selections); + return data; +}; - return true; +/** + * Cache may contain circular reference of objects. To properly serialize it, + * use `flatted` or `@ungap/structured-clone`. + */ +export const exportCacheSnapshot = ( + { query, mutation, subscription }: CacheRoot, + options?: CacheNormalizationHandler +): CacheSnapshot => { + const snapshot: CacheSnapshot = fromJSON( + toJSON({ query, mutation, subscription }) + ); + + if (options) { + const normalized: Record = {}; + + crawl(snapshot, (it, key, parent) => { + const id = options?.identity(it); + if (!id) return; + + if (!normalized[id]) { + normalized[id] = isNormalizedObjectShell(it) ? it.toJSON() : it; } - return false; + (parent as any)[key] = { __ref: id }; + }); + + if (Object.keys(normalized).length > 0) { + snapshot.normalized = normalized; } } - return { - backupPersistence, - restorePersistence, - }; -} + return snapshot; +}; + +export const createPersistors = (cache: Cache): Persistors => ({ + persist(version) { + const snapshot = cache.toJSON(); + if (version !== undefined) { + snapshot.version = version; + } + + return snapshot; + }, + + restore(data: CacheSnapshot, version?: string) { + if ( + data.version !== version || + (version !== undefined && typeof version !== 'string') + ) { + console.warn(`[GQty] Cache version mismatch, ignored.`); + return false; + } + + if (data == null || typeof data !== 'object' || Array.isArray(data)) { + return false; + } + + try { + cache.restore(data); + } catch (e) { + console.warn(e); + } finally { + return true; + } + }, + + async restoreAsync(data, version) { + try { + return this.restore(await data(), version); + } catch { + return false; + } + }, +}); diff --git a/packages/gqty/src/Cache/query.ts b/packages/gqty/src/Cache/query.ts new file mode 100644 index 000000000..1ab78a335 --- /dev/null +++ b/packages/gqty/src/Cache/query.ts @@ -0,0 +1,54 @@ +import type { ExecutionResult } from 'graphql-ws'; +import type { Cache } from '.'; + +/** Global query deduplication when cache instance is not provided. */ +const nullObjectKey = {}; + +const deduplicationCache = new WeakMap< + Cache | typeof nullObjectKey, + Map> +>([[nullObjectKey, new Map()]]); + +/** + * Keep track of ongoing promises, identified by a provided hash. + * + * Before the promise is resolved, subsequent requests with the same hash + * gets the same promise. + * + * After promise resolution, the hash is removed from the map. + * + * If the cache to omitted, a global cache will be used instead. + */ +export const dedupePromise = < + TData = Record, + TExtensions = Record +>( + cache: Cache | undefined, + hash: string, + fetchOrSubscribe: () => Promise | void> +): Promise> => { + const key = cache ?? nullObjectKey; + + const queryHashMap = deduplicationCache.get(key) ?? new Map(); + if (!deduplicationCache.has(key)) { + deduplicationCache.set(key, queryHashMap); + } + + const cachedQueryPromise = + queryHashMap.get(hash) ?? + fetchOrSubscribe().finally(() => { + queryHashMap.delete(hash); + }); + + if (!queryHashMap.has(hash)) { + queryHashMap.set(hash, cachedQueryPromise); + } + + return cachedQueryPromise; +}; + +/** Retrieve active promises associated provided cache, useful for SSR. */ +export const getActivePromises = (cache?: Cache) => + deduplicationCache.get(cache ?? nullObjectKey)?.values(); + +// TODO: test this file diff --git a/packages/gqty/src/Cache/utils.ts b/packages/gqty/src/Cache/utils.ts new file mode 100644 index 000000000..c541607f6 --- /dev/null +++ b/packages/gqty/src/Cache/utils.ts @@ -0,0 +1,14 @@ +import type { CacheObject } from '.'; + +export const isCacheObject = (value: unknown): value is CacheObject => { + if (value === null || typeof value !== 'object' || Array.isArray(value)) + return false; + + const obj = value as CacheObject; + if (obj.__typename && typeof obj.__typename !== 'string') return false; + + return true; +}; + +export const isCacheObjectArray = (value: unknown): value is CacheObject[] => + Array.isArray(value) && value.every(isCacheObject); diff --git a/packages/gqty/src/Client/client.ts b/packages/gqty/src/Client/client.ts deleted file mode 100644 index dd5ba342b..000000000 --- a/packages/gqty/src/Client/client.ts +++ /dev/null @@ -1,411 +0,0 @@ -import { - AssignSelections, - createAccessorCreators, - createSchemaUnions, - SchemaUnions, - SetCache, -} from '../Accessor'; -import { - AccessorCache, - CacheInstance, - CacheType, - createAccessorCache, - createCache, -} from '../Cache'; -import { - createPersistenceHelpers, - PersistenceHelpers, -} from '../Cache/persistence'; -import { GQtyError, type RetryOptions } from '../Error'; -import { EventHandler } from '../Events'; -import { createPrefetch, Prefetch } from '../Helpers/prefetch'; -import { createRefetch, Refetch } from '../Helpers/refetch'; -import { createSSRHelpers, HydrateCache, PrepareRender } from '../Helpers/ssr'; -import { createTracker, Track } from '../Helpers/track'; -import { createInterceptorManager, InterceptorManager } from '../Interceptor'; -import { - createNormalizationHandler, - NormalizationHandler, - NormalizationOptions, -} from '../Normalization'; -import { createScheduler, Scheduler } from '../Scheduler'; -import type { QueryFetcher, ScalarsEnumsHash, Schema } from '../Schema/types'; -import type { Selection } from '../Selection/selection'; -import { - createSelectionManager, - SelectionManager, -} from '../Selection/SelectionManager'; -import { - BuildAndFetchSelections, - createResolvers, - InlineResolved, - Resolved, - Resolvers, -} from './resolvers'; - -export interface InnerClientState { - allowCache: boolean; - foundValidCache: boolean; - clientCache: CacheInstance; - selectionManager: SelectionManager; - readonly accessorCache: AccessorCache; - readonly interceptorManager: InterceptorManager; - readonly scheduler: Scheduler; - readonly eventHandler: EventHandler; - readonly schema: Readonly; - readonly scalarsEnumsHash: Readonly; - readonly queryFetcher: QueryFetcher; - readonly schemaUnions: SchemaUnions; - readonly normalizationHandler: NormalizationHandler | undefined; - readonly depthLimit: number; - defaults: CoreClientDefaults; -} - -export interface SubscribeEvents { - onData: (data: Record) => void; - onError: (payload: { - error: GQtyError; - data: Record | null; - }) => void; - onStart?: () => void; - onComplete?: () => void; -} - -export type PossiblePromise = Promise | T; - -export interface SubscriptionsClient { - subscribe(opts: { - query: string; - variables: Record | undefined; - selections: Selection[]; - events: - | ((ctx: { - selections: Selection[]; - query: string; - variables: Record | undefined; - operationId: string; - }) => SubscribeEvents) - | SubscribeEvents; - cacheKey?: string; - }): PossiblePromise<{ - unsubscribe: () => Promise; - operationId: string; - }>; - unsubscribe(selections: Selection[] | Set): Promise; - close(): Promise; - setConnectionParams( - connectionParams: - | (() => PossiblePromise>) - | Record, - restartClient?: boolean - ): void; -} - -export interface CoreClientDefaults { - /** - * `resolved` defaults - */ - resolved?: { - /** - * Set the default `noCache` option - * - * @default false - */ - noCache?: boolean; - /** - * Set the default `refetch` option - * - * @default false - */ - refetch?: boolean; - /** - * Set the default `retry` strategy - * - * @default false - */ - retry?: RetryOptions; - }; -} - -export interface ClientOptions< - ObjectTypesNames extends string = never, - SchemaObjectTypes extends { - [P in ObjectTypesNames]: { - __typename?: P; - }; - } = never -> { - schema: Readonly; - scalarsEnumsHash: ScalarsEnumsHash; - queryFetcher: QueryFetcher; - catchSelectionsTimeMS?: number; - retry?: RetryOptions; - normalization?: - | NormalizationOptions - | boolean; - subscriptionsClient?: SubscriptionsClient; - defaults?: CoreClientDefaults; - /** - * Set the maximum depth limit, needed to prevent possible infinite recursion. - * - * After the specified depth is reached, the proxy creation is stopped returning `null` - * - * @default 15 - */ - depthLimit?: number; -} - -export interface MutateHelpers< - GeneratedSchema extends { - query: {}; - } -> { - query: GeneratedSchema['query']; - setCache: SetCache; - assignSelections: AssignSelections; -} - -export interface Mutate< - GeneratedSchema extends { - query: {}; - mutation: {}; - } -> { - ( - fn: (mutation: GeneratedSchema['mutation']) => T, - opts?: { - onComplete?: (data: T, helpers: MutateHelpers) => void; - onError?: ( - error: GQtyError, - helpers: MutateHelpers - ) => void; - } - ): Promise; -} - -export interface GQtyClient< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } -> extends PersistenceHelpers { - query: GeneratedSchema['query']; - mutation: GeneratedSchema['mutation']; - subscription: GeneratedSchema['subscription']; - resolved: Resolved; - inlineResolved: InlineResolved; - cache: CacheType; - interceptorManager: InterceptorManager; - scheduler: Scheduler; - refetch: Refetch; - accessorCache: AccessorCache; - buildAndFetchSelections: BuildAndFetchSelections; - eventHandler: EventHandler; - setCache: SetCache; - hydrateCache: HydrateCache; - prepareRender: PrepareRender; - assignSelections: AssignSelections; - mutate: Mutate; - subscriptionsClient: SubscriptionsClient | undefined; - prefetch: Prefetch; - track: Track; -} - -export type { - Resolved, - CacheType, - InterceptorManager, - Scheduler, - Refetch, - AccessorCache, - Resolvers, - EventHandler, - SetCache, - HydrateCache, - PrepareRender, - AssignSelections, - Prefetch, - BuildAndFetchSelections, - InlineResolved, -}; - -export function createClient< - GeneratedSchema extends { - query: {}; - mutation: {}; - subscription: {}; - } = never, - ObjectTypesNames extends string = never, - ObjectTypes extends { - [P in ObjectTypesNames]: { - __typename?: P; - }; - } = never ->({ - schema, - scalarsEnumsHash, - queryFetcher, - catchSelectionsTimeMS = 10, - retry, - normalization = true, - subscriptionsClient, - defaults = {}, - depthLimit = 15, -}: ClientOptions): GQtyClient { - const interceptorManager = createInterceptorManager(); - - const { globalInterceptor } = interceptorManager; - - const accessorCache = createAccessorCache(); - - const eventHandler = new EventHandler(); - - const normalizationHandler = createNormalizationHandler( - normalization, - eventHandler, - schema, - scalarsEnumsHash - ); - - const clientCache = createCache(normalizationHandler); - - const selectionManager = createSelectionManager(); - - const scheduler = createScheduler( - interceptorManager, - resolveSchedulerSelections, - catchSelectionsTimeMS - ); - - const innerState: InnerClientState = { - allowCache: true, - foundValidCache: true, - clientCache, - accessorCache, - selectionManager, - interceptorManager, - schema, - scalarsEnumsHash, - scheduler, - eventHandler, - queryFetcher, - schemaUnions: createSchemaUnions(schema), - normalizationHandler, - defaults, - depthLimit, - }; - - const { - resolved, - buildAndFetchSelections, - resolveSelections, - inlineResolved, - } = createResolvers(innerState, catchSelectionsTimeMS, subscriptionsClient); - - async function resolveSchedulerSelections(selections: Set) { - const resolvingPromise = scheduler.resolving; - - const resolvePromise = resolveSelections(selections, undefined, { - retry: retry === undefined ? true : retry, - scheduler: true, - }); - - globalInterceptor.removeSelections(selections); - try { - await resolvePromise; - } catch (error: any) { - resolvingPromise?.resolve({ - error, - selections, - }); - } - } - - const refetch = createRefetch(innerState, resolveSelections, inlineResolved); - - const { query, mutation, subscription, setCache, assignSelections } = - createAccessorCreators(innerState); - - const ssrHelpers = createSSRHelpers({ - innerState, - query, - refetch, - }); - - async function mutate( - fn: (mutation: GeneratedSchema['mutation']) => T, - opts: { - onComplete?: ( - data: T, - helpers: { - query: GeneratedSchema['query']; - setCache: typeof setCache; - assignSelections: typeof assignSelections; - } - ) => void; - onError?: ( - error: GQtyError, - helpers: { - query: GeneratedSchema['query']; - setCache: typeof setCache; - assignSelections: typeof assignSelections; - } - ) => void; - } = {} - ): Promise { - try { - const data = await resolved(() => fn(mutation), { - refetch: true, - }); - opts.onComplete?.(data, { - query, - setCache, - assignSelections, - }); - return data; - } catch (err) { - const error = GQtyError.create(err, mutate); - - opts.onError?.(error, { - query, - setCache, - assignSelections, - }); - - throw error; - } - } - - const prefetch = createPrefetch(query, innerState); - - const persistenceHelpers = createPersistenceHelpers( - clientCache, - selectionManager - ); - - const tracker = createTracker(innerState, subscriptionsClient); - - return { - query, - mutation, - subscription, - resolved, - inlineResolved, - cache: innerState.clientCache.cache, - interceptorManager, - scheduler, - refetch, - accessorCache, - buildAndFetchSelections, - eventHandler, - setCache, - ...ssrHelpers, - assignSelections, - mutate, - subscriptionsClient, - prefetch, - ...persistenceHelpers, - ...tracker, - }; -} diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts new file mode 100644 index 000000000..99903a231 --- /dev/null +++ b/packages/gqty/src/Client/compat/client.ts @@ -0,0 +1,164 @@ +import type { BaseGeneratedSchema, FetchOptions, SchemaContext } from '../..'; +import type { Cache } from '../../Cache'; +import type { ScalarsEnumsHash, Schema } from '../../Schema'; +import type { Selection } from '../../Selection'; +import type { createResolvers } from '../createResolvers'; +import { createLegacyHydrateCache, LegacyHydrateCache } from './hydrateCache'; +import { + createLegacyInlineResolved, + LegacyInlineResolved, +} from './inlineResolved'; +import { createLegacyMutate, LegacyMutate } from './mutate'; +import { createLegacyPrefetch, LegacyPrefetch } from './prefetch'; +import { + createLegacyPrepareRender, + LegacyPrepareRender, +} from './prepareRender'; +import { createRefetch, LegacyRefetch } from './refetch'; +import { createLegacyResolved, LegacyResolved } from './resolved'; +import { createLegacyTrack, LegacyTrack } from './track'; + +// TODO: Add deprecation warning +let deprecationWarningMessage: string | undefined = + !process.env.NODE_ENV || process.env.NODE_ENV === 'development' + ? '[GQty] global query, mutation and subscription is deprecated, please see ' + + 'the migration guide for scoped query.' + : undefined; + +export type CreateLegacyClientOptions = { + accessor: TSchema; + cache: Cache; + context: SchemaContext; + fetchOptions: FetchOptions; + resolve: ReturnType>['resolve']; + scalars: ScalarsEnumsHash; + schema: Readonly; + subscribe: ReturnType>['subscribe']; + __depthLimit?: number; +}; + +/** + * Subscribing to selections made by global accessors, exposed for testing + * purpose. + */ +export type SelectionSubscriber = ( + fn: NonNullable +) => () => void; + +export type LegacyClient = { + /** + * @deprecated Use the new `resolve()` method. + */ + resolved: LegacyResolved; + /** + * @deprecated Use the new `resolve()` method. + */ + inlineResolved: LegacyInlineResolved; + /** + * @deprecated Use the new `resolve()` method. + */ + mutate: LegacyMutate; + /** + * @deprecated Use the new `subscribe()` method. + */ + track: LegacyTrack; + /** + * @deprecated Use the new `resolve()` method. + */ + prefetch: LegacyPrefetch; + /** + * @deprecated Use the new `resolve()` method. + */ + refetch: LegacyRefetch; + /** + * @deprecated It does not include selections from scoped queries such as + * `resolve()` and `subscribe()`, do not mix usage if you are using SSR. + */ + prepareRender: LegacyPrepareRender; + /** + * @deprecated The new cache hydration has no `shouldRefetch` option. It + * always skip `no-cache` and `no-store` queries, and refetches according + * to cache expiry. + */ + hydrateCache: LegacyHydrateCache; + /** + * @deprecated Please migrate from global accessors to locally scoped + * accessors, i.e. `resolve({ query } => {})` or + * `subscribe({ query } => {})`. + */ + query: TSchema['query']; + /** + * @deprecated Please migrate from global accessors to locally scoped + * accessors, i.e. `resolve({ mutation } => {})` or + * `subscribe({ mutation } => {})`. + */ + mutation: TSchema['mutation']; + /** + * @deprecated Please migrate from global accessors to locally scoped + * accessors, i.e. `resolve({ subscription } => {})` or + * `subscribe({ subscription } => {})`. + */ + subscription: TSchema['subscription']; + /** Exposed for testing purpose. */ + subscribeLegacySelections: SelectionSubscriber; +}; + +export type CreateLegacyMethodOptions = + CreateLegacyClientOptions & { + subscribeLegacySelections: SelectionSubscriber; + }; + +export const createLegacyClient = ( + options: CreateLegacyClientOptions +): LegacyClient => { + // Storing ALL scalar selections ever made, specifically made for refetch(). + const selectionHistory = new Set(); + + /** compat: Selection callback for global accessors */ + const selectionSubscriptions = new Set< + NonNullable + >(); + + const prevOnSelect = options.context.onSelect; + options.context.onSelect = (selection, cache) => { + if (selectionSubscriptions.size > 0) { + selectionHistory.add(selection); + } + + selectionSubscriptions.forEach((fn) => fn(selection, cache)); + + prevOnSelect?.call(options.context, selection, cache); + }; + + const methodOptions: CreateLegacyMethodOptions = { + ...options, + subscribeLegacySelections(fn) { + selectionSubscriptions.add(fn); + return () => selectionSubscriptions.delete(fn); + }, + }; + + // refetch needs this + const inlineResolved = createLegacyInlineResolved(methodOptions); + + return { + resolved: createLegacyResolved(methodOptions), + inlineResolved, + mutate: createLegacyMutate(methodOptions), + track: createLegacyTrack(methodOptions), + prefetch: createLegacyPrefetch(methodOptions), + refetch: createRefetch({ + ...methodOptions, + selectionHistory, + inlineResolved, + }), + prepareRender: createLegacyPrepareRender(methodOptions), + hydrateCache: createLegacyHydrateCache(methodOptions), + + query: options.accessor.query, + mutation: options.accessor.mutation, + subscription: options.accessor.subscription, + + subscribeLegacySelections: methodOptions.subscribeLegacySelections, + }; +}; diff --git a/packages/gqty/src/Client/compat/hydrateCache.ts b/packages/gqty/src/Client/compat/hydrateCache.ts new file mode 100644 index 000000000..015d37236 --- /dev/null +++ b/packages/gqty/src/Client/compat/hydrateCache.ts @@ -0,0 +1,84 @@ +import { fromJSON } from 'flatted'; +import type { BaseGeneratedSchema } from '..'; +import { $meta } from '../../Accessor'; +import { GQtyError } from '../../Error'; +import type { Selection } from '../../Selection'; +import { fetchSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; +import { isLegacyCacheSnapshot } from './prepareRender'; + +export type LegacyHydrateCache = { + ({ cacheSnapshot, shouldRefetch }: LegacyHydrateCacheOptions): void; +}; + +export type LegacyHydrateCacheOptions = { + /** + * Cache snapshot, returned from `prepareRender` + */ + cacheSnapshot: string; + /** + * If it should refetch everything after + * + * Specify a number greater than `0` to delay the refetch that amount in ms + * + * @default + * false + */ + shouldRefetch?: boolean | number; +}; + +export const createLegacyHydrateCache = + ({ + accessor, + cache, + fetchOptions, + }: CreateLegacyMethodOptions): LegacyHydrateCache => + ({ cacheSnapshot, shouldRefetch = false }) => { + const { cache: snapshot, selections: selectionSnapshots } = + parseSnapshot(cacheSnapshot); + + if (snapshot) { + cache.restore(snapshot); + } + + if (selectionSnapshots && shouldRefetch) { + const selections = new Set(); + for (const [[root], ...snapshot] of selectionSnapshots) { + const { selection } = $meta(accessor[root as string]!)!; + + selections.add(selection.fromJSON(snapshot)); + } + + setTimeout( + () => { + fetchSelections(selections, { + cache, + fetchOptions: { + ...fetchOptions, + fetchPolicy: 'no-cache', // refetch + }, + }).then((results) => updateCaches(results, [cache])); + }, + shouldRefetch === true ? 0 : shouldRefetch + ); + } + + // TODO: shouldRefetch: number; Skip networks for X ms to prevent unnecessary no-cache/no-store renders. + }; + +// TODO: New SSR should always trust the cache during hydration, never refetch +// until cache expiry or SWR. + +export const parseSnapshot = (snapshot: string) => { + try { + const data = fromJSON(snapshot); + if (!isLegacyCacheSnapshot(data)) { + throw 1; + } + + return data; + } catch { + throw new GQtyError(`Unrecognized snapshot format.`); + } +}; diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts new file mode 100644 index 000000000..c6a2979a7 --- /dev/null +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -0,0 +1,87 @@ +import type { BaseGeneratedSchema } from '../..'; +import type { Selection } from '../../Selection'; +import { fetchSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; +import { convertSelection, LegacySelection } from './selection'; + +export interface LegacyInlineResolved { + ( + fn: () => TData, + options?: LegacyInlineResolveOptions + ): TData | Promise; +} + +export interface LegacyInlineResolveOptions { + refetch?: boolean; + onEmptyResolve?: () => void; + /** + * Get every selection intercepted in the specified function + */ + onSelection?: (selection: LegacySelection) => void; + /** + * On valid cache data found callback + */ + onCacheData?: (data: TData) => void; + /** + * Query operation name + */ + operationName?: string; +} + +export const createLegacyInlineResolved = < + TSchema extends BaseGeneratedSchema = BaseGeneratedSchema +>({ + cache, + fetchOptions: { fetchPolicy, ...fetchOptions }, + subscribeLegacySelections: subscribeSelections, +}: CreateLegacyMethodOptions): LegacyInlineResolved => { + return ( + fn, + { + refetch = false, + onEmptyResolve, + onSelection, + onCacheData, + operationName, + } = {} + ) => { + let hasCacheHit = false; + let shouldFetch = refetch; + const selections = new Set(); + const unsubscribe = subscribeSelections((selection, cache) => { + shouldFetch ||= cache?.data === undefined; + hasCacheHit ||= cache?.data !== undefined; + + selections.add(selection); + onSelection?.(convertSelection(selection)); + }); + + const data = fn(); + + unsubscribe(); + + if (selections.size === 0) { + if (process.env.NODE_ENV !== 'production') { + console.warn('[gqty] Warning! No data requested.'); + } + onEmptyResolve?.(); + return data; + } + + if (!shouldFetch) { + return data; + } + + if (hasCacheHit && !refetch) { + onCacheData?.(data); + } + + return fetchSelections(selections, { fetchOptions, operationName }) + .then((results) => updateCaches(results, [cache])) + .then(() => fn()) + .finally(() => { + selections.clear(); + }); + }; +}; diff --git a/packages/gqty/src/Client/compat/mutate.ts b/packages/gqty/src/Client/compat/mutate.ts new file mode 100644 index 000000000..7d0b2df11 --- /dev/null +++ b/packages/gqty/src/Client/compat/mutate.ts @@ -0,0 +1,54 @@ +import type { BaseGeneratedSchema } from '..'; +import { assignSelections, setCache } from '../../Accessor'; +import { GQtyError } from '../../Error'; +import type { CreateLegacyMethodOptions } from './client'; + +export interface LegacyMutateHelpers { + query: TSchema['query']; + setCache: typeof setCache; + assignSelections: typeof assignSelections; +} + +export interface LegacyMutate { + ( + fn: (mutation: TSchema['mutation']) => T, + opts?: { + onComplete?: (data: T, helpers: LegacyMutateHelpers) => void; + onError?: ( + error: GQtyError, + helpers: LegacyMutateHelpers + ) => void; + } + ): Promise; +} + +export const createLegacyMutate = ({ + accessor, + resolve, +}: CreateLegacyMethodOptions): LegacyMutate => { + return async (fn, { onComplete, onError } = {}) => { + try { + const data = (await resolve(({ mutation }) => fn(mutation), { + fetchPolicy: 'no-cache', + })) as ReturnType; + + onComplete?.(data, { + query: accessor.query, + setCache, + assignSelections, + }); + + return data; + } catch (e) { + if (e instanceof GQtyError) { + onError?.(e, { + query: accessor.query, + setCache, + assignSelections, + }); + } + + throw e; + } + }; +}; diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts new file mode 100644 index 000000000..af08cc5d4 --- /dev/null +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -0,0 +1,49 @@ +import type { BaseGeneratedSchema } from '../..'; +import { GQtyError } from '../../Error'; +import type { Selection } from '../../Selection'; +import { fetchSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; + +export type LegacyPrefetch = { + (fn: (query: TSchema['query']) => TData): TData | Promise; +}; + +export const createLegacyPrefetch = < + TSchema extends BaseGeneratedSchema = BaseGeneratedSchema +>({ + accessor, + cache, + fetchOptions: { fetcher, retryPolicy, subscriber, ...fetchOptions }, + subscribeLegacySelections: subscribeSelections, +}: CreateLegacyMethodOptions): LegacyPrefetch => { + return (fn, { operationName }: { operationName?: string } = {}) => { + let shouldFetch = false; + const selections = new Set(); + const unsubscribe = subscribeSelections((selection, cache) => { + shouldFetch ||= cache?.data === undefined; + + selections.add(selection); + }); + + const data = fn(accessor.query); + + unsubscribe(); + + if (!shouldFetch) { + return data; + } + + return fetchSelections(selections, { + fetchOptions: { fetcher, retryPolicy, ...fetchOptions }, + operationName, + }).then( + (results) => { + updateCaches(results, [cache]); + + return fn(accessor.query); + }, + (error) => Promise.reject(GQtyError.create(error, () => {})) + ); + }; +}; diff --git a/packages/gqty/src/Client/compat/prepareRender.ts b/packages/gqty/src/Client/compat/prepareRender.ts new file mode 100644 index 000000000..79bd5089f --- /dev/null +++ b/packages/gqty/src/Client/compat/prepareRender.ts @@ -0,0 +1,109 @@ +import { toJSON } from 'flatted'; +import type { BaseGeneratedSchema } from '..'; +import { Cache } from '../../Cache'; +import type { CacheSnapshot } from '../../Cache/persistence'; +import type { Selection, SelectionSnapshot } from '../../Selection'; +import { isPlainObject } from '../../Utils'; +import { fetchSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; + +export interface LegacyPrepareRender { + (render: () => Promise | void): Promise<{ + cacheSnapshot: string; + }>; +} + +export type LegacyCacheSnapshot = { + cache?: CacheSnapshot; + selections?: SelectionSnapshot[]; +}; + +export const isLegacyCacheSnapshot = ( + json: unknown +): json is LegacyCacheSnapshot => { + if (json != null && !isPlainObject(json)) { + return false; + } + + const snapshot = json as LegacyCacheSnapshot; + + if (snapshot.cache !== undefined && !isPlainObject(snapshot.cache)) { + return false; + } + + if (snapshot.selections) { + if (!Array.isArray(snapshot.selections)) { + return false; + } + + if ( + !snapshot.selections.every((selection) => { + if ( + !Array.isArray(selection) || + !selection.every((it) => { + if (!Array.isArray(it)) return false; + + if (typeof it[0] !== 'string' && typeof it[0] !== 'number') + return false; + + if ( + it[1] && + (!isPlainObject(it[1]) || + !isPlainObject(it[1].input) || + typeof it[1].isUnion !== 'boolean') + ) + return false; + + return true; + }) + ) + return false; + + return true; + }) + ) + return false; + } + + return true; +}; + +export const createLegacyPrepareRender = ({ + cache, + fetchOptions, + subscribeLegacySelections, +}: CreateLegacyMethodOptions): LegacyPrepareRender => { + return async (render) => { + const ssrCache = new Cache(); + const selections = new Set(); + const unsubscribe = subscribeLegacySelections((selection) => { + selections.add(selection); + }); + + try { + await render(); + } finally { + unsubscribe(); + } + + const results = await fetchSelections(selections, { + cache, + fetchOptions, + }); + + updateCaches(results, [cache, ssrCache], { skipNotify: true }); + + // await Promise.all(getActivePromises(cache) ?? []); + + return { + cacheSnapshot: toJSON( + Object.keys(cache.toJSON()).length > 0 + ? selections.size > 0 + ? { cache, selections: [...selections] } + : { cache } + : {} + ), + }; + }; +}; diff --git a/packages/gqty/src/Client/compat/refetch.ts b/packages/gqty/src/Client/compat/refetch.ts new file mode 100644 index 000000000..0756a8607 --- /dev/null +++ b/packages/gqty/src/Client/compat/refetch.ts @@ -0,0 +1,61 @@ +import type { BaseGeneratedSchema } from '..'; +import { $meta } from '../../Accessor'; +import type { Selection } from '../../Selection'; +import { fetchSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; +import type { LegacyInlineResolved } from './inlineResolved'; + +export type LegacyRefetch = { + (fn: (schema: TSchema) => TData): Promise; + (accessor: TData): Promise; +}; + +export const createRefetch = ({ + cache, + fetchOptions, + inlineResolved, + selectionHistory, +}: CreateLegacyMethodOptions & { + /** Valid scalar selections for refetching. */ + selectionHistory: Set; + inlineResolved: LegacyInlineResolved; +}): LegacyRefetch => { + return async ( + fnOrProxy: TData | ((schema: TSchema) => TData), + operationName?: string + ): Promise => { + if (typeof fnOrProxy === 'function') { + return inlineResolved(fnOrProxy as any, { refetch: true }); + } else { + const selection = $meta(fnOrProxy as any)?.selection; + if (!selection) { + if (process.env.NODE_ENV !== 'production') { + console.warn('[gqty] Invalid proxy to refetch!'); + } + + return fnOrProxy; + } + + const selections = new Set(); + + for (const leaf of selection.getLeafNodes()) { + if (selectionHistory.has(leaf)) { + selections.add(leaf); + } + } + + if (selections.size > 0) { + await fetchSelections(selections, { + cache, + fetchOptions, + operationName, + }).then((results) => { + updateCaches(results, [cache]); + }); + } + + return fnOrProxy; + } + }; +}; diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts new file mode 100644 index 000000000..eb0923687 --- /dev/null +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -0,0 +1,244 @@ +import type { GraphQLError } from 'graphql'; +import type { BaseGeneratedSchema } from '..'; +import { Cache } from '../../Cache'; +import { GQtyError, RetryOptions } from '../../Error'; +import { buildQuery } from '../../QueryBuilder'; +import type { Selection } from '../../Selection'; +import { + FetchResult, + fetchSelections, + isCloseEvent, +} from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; +import { convertSelection, type LegacySelection } from './selection'; + +export interface LegacyFetchOptions extends Omit {} + +export interface LegacyResolved { + (fn: () => T, opts?: LegacyResolveOptions): Promise; +} + +export interface LegacyResolveOptions { + /** + * Ignore cache data during selection, which always results in a fetch. + */ + refetch?: boolean; + /** + * Do not update the cache after fetch, return the result only. + */ + noCache?: boolean; + /** + * Activate special handling of non-serializable variables, + * for example, files uploading + * + * @default false + */ + nonSerializableVariables?: boolean; + /** + * Middleware function that is called if valid cache is found + * for all the data requirements, it should return `true` if the + * the resolution and fetch should continue, and `false` + * if you wish to stop the resolution, resolving the promise + * with the existing cache data. + */ + onCacheData?: (data: TData) => boolean; + /** + * On No Cache found + */ + onNoCacheFound?: () => void; + /** + * Get every selection intercepted in the specified function + */ + onSelection?: (selection: LegacySelection) => void; + /** + * On subscription event listener + */ + onSubscription?: ( + event: + | { + type: 'data'; + unsubscribe: () => Promise; + data: TData; + error?: undefined; + } + | { + type: 'with-errors'; + unsubscribe: () => Promise; + data?: TData; + error: GQtyError; + } + | { + type: 'start' | 'complete'; + unsubscribe: () => Promise; + data?: undefined; + error?: undefined; + } + ) => void; + /** + * Function called on empty resolution + */ + onEmptyResolve?: () => void; + + /** + * Retry strategy + */ + retry?: RetryOptions; + + /** + * Pass any extra fetch options + */ + fetchOptions?: LegacyFetchOptions; + + /** + * Query operation name + */ + operationName?: string; +} + +/** + * `resolved()` has to be re-implemented from the parts because the new + * `resolve()` closes subscriptions on first data to mimic a one-time promise, + * while `resolved()` exposes callbacks, letting subcriptions outlive the + * promise. + */ +export const createLegacyResolved = < + TSchema extends BaseGeneratedSchema = BaseGeneratedSchema +>({ + cache, + context, + fetchOptions: { fetcher, subscriber, retryPolicy }, + subscribeLegacySelections: subscribeSelections, +}: CreateLegacyMethodOptions): LegacyResolved => { + return async ( + fn: () => TData, + { + fetchOptions, + noCache = false, // prevent cache writes after fetch + //nonSerializableVariables, // Ignored, object-hash can handle files + onCacheData, + onEmptyResolve, + onNoCacheFound, + onSelection, + onSubscription, + operationName, + refetch = false, // prevent cache reads from selections + retry = retryPolicy, + }: LegacyResolveOptions = {} + ) => { + let hasCacheHit = false; + let shouldFetch = refetch || noCache; + const selections = new Set(); + const resolutionCache = noCache ? new Cache() : cache; + const dataFn = () => { + context.cache = resolutionCache; + + try { + return fn(); + } finally { + context.cache = cache; + } + }; + + const unsubscribe = subscribeSelections((selection, cache) => { + shouldFetch ||= cache?.data === undefined; + hasCacheHit ||= cache?.data !== undefined; + + selections.add(selection); + onSelection?.(convertSelection(selection)); + }); + + const data = dataFn(); + + unsubscribe(); + + if (selections.size === 0) { + if (process.env.NODE_ENV !== 'production') { + console.warn('[gqty] Warning! No data requested.'); + } + onEmptyResolve?.(); + return data; + } + + if (!shouldFetch) { + return data; + } + + if (hasCacheHit) { + onCacheData?.(data); + } else { + onNoCacheFound?.(); + } + + // Queries and mutations + await fetchSelections( + new Set( + [...selections].filter(({ root: { key } }) => key !== 'subscription') + ), + { + fetchOptions: { fetcher, retryPolicy: retry, ...fetchOptions }, + operationName, + } + ).then( + (results) => { + updateCaches(results, [resolutionCache]); + }, + (error) => Promise.reject(GQtyError.create(error, () => {})) + ); + + // Subscriptions + buildQuery( + new Set( + [...selections].filter(({ root: { key } }) => key === 'subscription') + ), + operationName + ).map(({ query, variables, operationName }) => { + const _unsubscribe = subscriber?.subscribe( + { query, variables, operationName }, + { + next(result) { + if (result.data != null) { + result.extensions = { type: 'subscription' }; + updateCaches([result as FetchResult], [resolutionCache]); + } + + onSubscription?.({ + type: 'data', + data: dataFn() ?? (result as TData), + unsubscribe, + }); + }, + error(error: Error | readonly GraphQLError[] | CloseEvent) { + if (isCloseEvent(error)) { + unsubscribe(); + return this.complete(); + } + + onSubscription?.({ + type: 'with-errors', + error: Array.isArray(error) + ? GQtyError.fromGraphQLErrors(error) + : new GQtyError(`Subscription error`, { otherError: error }), + unsubscribe, + }); + }, + complete() { + onSubscription?.({ + type: 'complete', + unsubscribe, + }); + }, + } + ); + + const unsubscribe = async () => _unsubscribe?.(); + + onSubscription?.({ + type: 'start', + unsubscribe, + }); + }); + + return dataFn(); + }; +}; diff --git a/packages/gqty/src/Selection/selection.ts b/packages/gqty/src/Client/compat/selection.ts similarity index 62% rename from packages/gqty/src/Selection/selection.ts rename to packages/gqty/src/Client/compat/selection.ts index 4335b0c61..53f36d1a1 100644 --- a/packages/gqty/src/Selection/selection.ts +++ b/packages/gqty/src/Client/compat/selection.ts @@ -1,14 +1,16 @@ -export enum SelectionType { +import type { Selection } from '../../Selection'; + +export enum LegacySelectionType { Query, Mutation, Subscription, } -export type SelectionConstructorArgs = { +export type LegacySelectionConstructorArgs = { id: number; key: string | number; - prevSelection?: Selection; - type?: SelectionType; + prevSelection?: LegacySelection; + type?: LegacySelectionType; operationName?: string; alias?: string; args?: Record; @@ -16,12 +18,12 @@ export type SelectionConstructorArgs = { unions?: string[]; }; -export class Selection { +export class LegacySelection { id: string; key: string | number; - type: SelectionType; + type: LegacySelectionType; operationName?: string; @@ -34,13 +36,13 @@ export class Selection { cachePath: readonly (string | number)[] = []; pathString: string; - selectionsList: readonly Selection[]; + selectionsList: readonly LegacySelection[]; - noIndexSelections: readonly Selection[]; + noIndexSelections: readonly LegacySelection[]; - prevSelection: Selection | null = null; + prevSelection: LegacySelection | null = null; - currentCofetchSelections: Set | null = null; + currentCofetchSelections: Set | null = null; constructor({ key, @@ -52,7 +54,7 @@ export class Selection { alias, unions, id, - }: SelectionConstructorArgs) { + }: LegacySelectionConstructorArgs) { this.id = id + ''; this.key = key; this.operationName = operationName; @@ -93,10 +95,10 @@ export class Selection { this.argTypes = argTypes; this.unions = unions; - this.type = type ?? prevSelection?.type ?? SelectionType.Query; + this.type = type ?? prevSelection?.type ?? LegacySelectionType.Query; } - addCofetchSelections(selections: Selection[] | Set) { + addCofetchSelections(selections: LegacySelection[] | Set) { const cofetchSet = (this.currentCofetchSelections ||= new Set()); for (const selection of selections) { @@ -121,3 +123,29 @@ export class Selection { return this.currentCofetchSelections; } } + +export const convertSelection = ( + selection: Selection, + selectionId = 0, + operationName?: string +): LegacySelection => { + return new LegacySelection({ + id: ++selectionId, + key: selection.key, + // translate the whole selection chain upwards + prevSelection: selection.parent + ? convertSelection(selection.parent, selectionId, operationName) + : undefined, + args: selection.input?.values, + argTypes: selection.input?.types, + type: + selection.root.key === 'query' + ? LegacySelectionType.Query + : selection.root.key === 'mutation' + ? LegacySelectionType.Mutation + : LegacySelectionType.Subscription, + operationName, + alias: selection.alias, + unions: selection.isUnion ? [selection.key.toString()] : undefined, + }); +}; diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts new file mode 100644 index 000000000..a9774aec0 --- /dev/null +++ b/packages/gqty/src/Client/compat/track.ts @@ -0,0 +1,125 @@ +import { GraphQLError } from 'graphql'; +import type { BaseGeneratedSchema } from '..'; +import { Cache } from '../../Cache'; +import { GQtyError } from '../../Error'; +import type { Selection } from '../../Selection'; +import { subscribeSelections } from '../resolveSelections'; +import { updateCaches } from '../updateCaches'; +import type { CreateLegacyMethodOptions } from './client'; + +export type LegacyTrackCallType = 'initial' | 'cache_change'; + +export interface LegacyTrackCallInfo { + type: LegacyTrackCallType; +} + +export interface LegacyTrackOptions { + onError?: ((err: GQtyError) => void) | undefined; + + operationName?: string; + + /** Refetch on initial call */ + refetch?: boolean; +} + +export interface LegacyTrack { + ( + callback: (info: LegacyTrackCallInfo) => TData, + options?: LegacyTrackOptions + ): { + stop: () => void; + selections: Set; + data: { current: TData | undefined }; + }; +} + +export const createLegacyTrack = < + TSchema extends BaseGeneratedSchema = BaseGeneratedSchema +>({ + cache, + context, + fetchOptions: { fetchPolicy, ...fetchOptions }, + subscribeLegacySelections, +}: CreateLegacyMethodOptions) => { + const track: LegacyTrack = ( + fn, + { onError, operationName, refetch = false } = {} + ) => { + const selections = new Set(); + const resolutionCache = refetch ? new Cache() : cache; + const dataFn = (info: LegacyTrackCallInfo) => { + context.cache = resolutionCache; + + const data = fn(info); + + context.cache = cache; + + return data; + }; + + const unsubscribe = subscribeLegacySelections((selection) => { + selections.add(selection); + }); + + const data = { current: dataFn({ type: 'initial' }) }; + + unsubscribe(); + + const unsubscribeCache = context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + () => { + data.current = fn({ type: 'cache_change' }); + } + ); + + const unsubscribeSelections = subscribeSelections( + selections, + ({ errors, data, extensions }) => { + if (errors) { + const error = errors.every((error) => error instanceof GraphQLError) + ? GQtyError.fromGraphQLErrors(errors) + : errors[0] instanceof GQtyError + ? errors[0] + : new GQtyError('Subscription thrown an unknown error.', { + otherError: errors[0], + }); + + if (onError) { + onError(error); + } else { + throw error; + } + } else if (data !== undefined) { + updateCaches( + [{ data, extensions }], + fetchPolicy !== 'no-store' && context.cache !== cache + ? [context.cache, cache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + } else { + // Fetches responded, subscriptions closed, but cache subscription is + // still active. + } + }, + { + fetchOptions: { + fetchPolicy: refetch ? 'no-cache' : fetchPolicy, + ...fetchOptions, + }, + operationName, + } + ); + + return { + data, + selections, + stop: () => { + unsubscribeCache(); + unsubscribeSelections(); + }, + }; + }; + + return track; +}; diff --git a/packages/gqty/src/Client/createContext.ts b/packages/gqty/src/Client/createContext.ts new file mode 100644 index 000000000..1a587d51c --- /dev/null +++ b/packages/gqty/src/Client/createContext.ts @@ -0,0 +1,74 @@ +import { Cache, CacheDataContainer, CacheGetOptions } from '../Cache'; +import type { ScalarsEnumsHash, Schema } from '../Schema'; +import type { Selection } from '../Selection'; +import type { ResolveOptions } from './createResolvers'; + +export type ResolveContext = SchemaContext<{ + notifyCacheUpdate: boolean; + shouldFetch: boolean; +}>; + +export type SchemaContext< + T extends Record = Record +> = T & { + cache: Cache; + readonly cacheOptions?: CacheGetOptions; + readonly scalars: ScalarsEnumsHash; + /** Root schema for type lookups */ + readonly schema: Readonly; + /** Custom key fields for each object type. */ + readonly typeKeys?: Record; + readonly depthLimit: number; + + onSelect?: (selection: Selection, cache?: CacheDataContainer) => void; +}; + +export type CreateContextOptions = { + cache: Cache; + depthLimit: number; + fetchPolicy: ResolveOptions['fetchPolicy']; + onSelect?: NonNullable; + scalars: ScalarsEnumsHash; + schema: Readonly; + typeKeys?: Record; +}; + +export const createContext = ({ + cache, + depthLimit, + fetchPolicy, + onSelect, + scalars, + schema, + typeKeys, +}: CreateContextOptions): ResolveContext => ({ + cache: + fetchPolicy === 'no-cache' || fetchPolicy === 'no-store' + ? new Cache() + : cache, + cacheOptions: { + includeExpired: + fetchPolicy === 'default' || + fetchPolicy === 'force-cache' || + fetchPolicy === 'only-if-cached', + }, + scalars, + schema, + depthLimit, + onSelect(selection, cacheNode) { + const now = Date.now(); + const { data, expiresAt: age = Infinity } = cacheNode ?? {}; + + // Suggest a fetch on a stale or missing cache. + this.shouldFetch ||= data === undefined || age < now; + + // Missing cache always notify on cache updates. + // The only case we skip this is when fetching for SWR on 'default'. + this.notifyCacheUpdate ||= data === undefined; + + onSelect?.(selection, cacheNode); + }, + notifyCacheUpdate: fetchPolicy !== 'default', + shouldFetch: false, + typeKeys, +}); diff --git a/packages/gqty/src/Client/createResolvers.ts b/packages/gqty/src/Client/createResolvers.ts new file mode 100644 index 000000000..70474464c --- /dev/null +++ b/packages/gqty/src/Client/createResolvers.ts @@ -0,0 +1,312 @@ +import type { BaseGeneratedSchema, FetchOptions } from '.'; +import { createSchemaAccessor } from '../Accessor'; +import type { Cache } from '../Cache'; +import { GQtyError } from '../Error'; +import type { ScalarsEnumsHash, Schema } from '../Schema'; +import type { Selection } from '../Selection'; +import { pick } from '../Utils/pick'; +import { createContext, ResolveContext } from './createContext'; +import { fetchSelections, subscribeSelections } from './resolveSelections'; +import { updateCaches } from './updateCaches'; + +export type CreateResolvedOptions = { + cache: Cache; + depthLimit: number; + fetchOptions: FetchOptions; + scalars: ScalarsEnumsHash; + schema: Readonly; +}; + +export type DataFn = (schema: TSchema) => void; + +export type ResolveOptions = { + /** + * Awaits resolution it the query results in a fetch. Specify `false` to + * immediately return the current cache, placeholder data will be returned on + * a partial or complete cache miss. + * + * @default true + */ + awaitsFetch?: boolean; + + /** + * Defines how a query should fetch from the cache and network. + * + * - `default`: Serves the cached contents when it is fresh, and if they are + * stale within `staleWhileRevalidate` window, fetches in the background and + * updates the cache. Or simply fetches on cache stale or cache miss. During + * SWR, a successful fetch will not notify cache updates. New contents are + * served on next query. + * - `no-store`: Always fetch and does not update on response. + * GQty creates a temporary cache at query-level which immediately expires. + * - `no-cache`: Always fetch, updates on response. + * - `force-cache`: Serves the cached contents regardless of staleness. It + * fetches on cache miss or a stale cache, updates cache on response. + * - `only-if-cached`: Serves the cached contents regardless of staleness, + * throws a network error on cache miss. + * + * _It takes effort to make sure the above stays true for all supported + * frameworks, please consider sponsoring so we can dedicate even more time on + * this._ + */ + fetchPolicy?: FetchOptions['fetchPolicy']; + + onFetch?: (fetchPromise: Promise) => void; + + onSelect?: NonNullable; + + operationName?: string; +}; + +export type SubscribeOptions = { + fetchPolicy?: FetchOptions['fetchPolicy']; + + /** + * Intercept errors thrown from the underlying subscription client or query + * fetcher. + * + * If omitted, the `subscribe()` generator throws and closes on the first + * error, terminating other active subscriptions triggered from the same + * selections. + */ + onError?: (error: unknown) => void; + + onSelect?: NonNullable; + + operationName?: string; + + /** + * Interrupts the pending promise and exists the generator. + */ + signal?: AbortSignal; +}; + +export type ResolveFn = < + TData extends Record = Record +>( + fn: DataFn, + options?: ResolveOptions +) => Promise | TData; + +const asyncItDoneMessage = { done: true } as IteratorResult; + +export type SubscribeFn = < + TData extends Record = Record +>( + fn: DataFn, + options?: SubscribeOptions +) => AsyncGenerator; + +export const createResolvers = ({ + cache: clientCache, + depthLimit, + fetchOptions, + fetchOptions: { fetchPolicy: defaultFetchPolicy = 'default' }, + scalars, + schema, +}: CreateResolvedOptions) => { + const resolve: ResolveFn = < + TData extends Record = Record + >( + fn: DataFn, + { + awaitsFetch = true, + fetchPolicy = defaultFetchPolicy ?? 'default', + operationName, + onFetch, + onSelect, + }: ResolveOptions = {} + ): Promise | TData => { + const selections = new Set(); + const context = createContext({ + cache: clientCache, + depthLimit, + fetchPolicy, + onSelect(selection, cache) { + selections.add(selection); + onSelect?.(selection, cache); + }, + scalars, + schema, + }); + const accessor = createSchemaAccessor(context); + + const compatDataFn = () => + // compat: resolved(fn) and inlineResolved(fn) returns accessors + (fn(accessor) as unknown as TData) ?? pick(accessor, selections); + + const data = compatDataFn(); + + if (context.shouldFetch) { + if (fetchPolicy === 'only-if-cached') { + // Mimic fetch error in the Chromium/WebKit monopoly + throw new TypeError('Failed to fetch'); + } + const fetchPromises = fetchSelections(selections, { + operationName, + fetchOptions, + }) + .then((results) => { + updateCaches( + results, + fetchPolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + + return results; + }) + .finally(() => { + selections.clear(); + }); + + if (awaitsFetch) { + return fetchPromises.then(compatDataFn); + } else { + onFetch?.(fetchPromises); + } + } + + return data; + }; + + /** + * Initiates selected queries, mutations and subscriptions, then subscribes + * to caches changes until the generator is closed. + */ + const subscribe: SubscribeFn = function subscribe< + TData extends Record = Record + >( + fn: DataFn, + { + fetchPolicy = defaultFetchPolicy, + onError, + onSelect, + operationName, + signal, + }: SubscribeOptions = {} + ): AsyncGenerator { + const selections = new Set(); + const context = createContext({ + cache: clientCache, + depthLimit, + fetchPolicy, + onSelect(selection, cache) { + onSelect?.(selection, cache); + selections.add(selection); + }, + scalars, + schema, + }); + const accessor = createSchemaAccessor(context); + + fn(accessor); + + // Assuming selections are cached, otherwise uncomment the following line. + //context.onSelect = undefined; + + let deferred: + | { + resolve: () => void; + reject: (err: unknown) => void; + } + | undefined; + let rejected: unknown; + let done = false; + const pending = [] as TData[]; + + if (selections.size === 0) { + done = true; + } + + signal?.addEventListener('abort', () => { + done = true; + deferred?.resolve(); + }); + + const unsubscribeCache = context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + (value) => { + pending.push((fn(accessor) as any) ?? (value as any)); + deferred?.resolve(); + } + ); + + const unsubscribeSelections = subscribeSelections( + selections, + ({ errors, data, extensions }) => { + if (errors) { + const error = + errors.length > 1 + ? GQtyError.fromGraphQLErrors(errors) + : errors.length === 1 + ? errors[0] + : new GQtyError('Subscription thrown an unknown error.'); + + if (onError) { + onError(error); + } else { + // Discard data here because of how generators work + if (data !== undefined) { + } + + rejected = error; + deferred?.reject(error); + } + } else if (data !== undefined) { + updateCaches( + [{ data, extensions }], + fetchPolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + } else { + // Fetches responded, subscriptions closed, but cache subscription is + // still active. + } + }, + { + fetchOptions, + operationName, + } + ); + + return { + [Symbol.asyncIterator]() { + return this; + }, + async next() { + if (rejected !== undefined) { + throw rejected; + } else if (done) { + return asyncItDoneMessage; + } else if (pending.length > 0) { + return { value: pending.shift()! }; + } else { + await new Promise((resolve, reject) => { + deferred = { resolve, reject }; + }); + + return this.next(); + } + }, + async throw(error) { + throw error; + }, + async return() { + unsubscribeCache(); + unsubscribeSelections(); + return asyncItDoneMessage; + }, + }; + }; + + return { + resolve, + subscribe, + }; +}; + +// TODO: AbortController#signal aborts query and mutation fetches, if any. diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 31cc2665b..3677cb280 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,2 +1,215 @@ -export * from './client'; -export type { ResolveOptions, InlineResolveOptions } from './resolvers'; +import type { Client as SubscriptionsClient } from 'graphql-ws'; +import { createSchemaAccessor } from '../Accessor'; +import { Cache } from '../Cache'; +import { + CacheNormalizationHandler, + defaultNormalizationHandler as defaultNormalizationOptions, +} from '../Cache/normalization'; +import { createPersistors, Persistors } from '../Cache/persistence'; +import type { RetryOptions } from '../Error'; +import type { + GeneratedSchemaObject, + QueryFetcher, + ScalarsEnumsHash, + Schema, +} from '../Schema'; +import { createLegacyClient, LegacyClient } from './compat/client'; +import { createContext } from './createContext'; +import { createResolvers, ResolveFn, SubscribeFn } from './createResolvers'; + +export type { ResolveContext, SchemaContext } from './createContext'; + +/** A generated schema type in it's most basic form */ +export type BaseGeneratedSchema = { + query: GeneratedSchemaObject; + mutation?: GeneratedSchemaObject; + subscription?: GeneratedSchemaObject; + [key: string]: GeneratedSchemaObject | undefined; +}; + +export type SchemaObjectKeys = Exclude< + keyof TSchema, + 'query' | 'mutation' | 'subscription' | number | symbol +>; + +export type SchemaObjects = { + [key in SchemaObjectKeys]: { __typename: key }; +}; + +export type FetchOptions = Omit & { + fetcher: QueryFetcher; + + /** + * Defines how a query should fetch from the cache and network. + * + * - `default`: Serves the cached contents when it is fresh, and if they are + * stale within `staleWhileRevalidate` window, fetches in the background and + * updates the cache. Or simply fetches on stale cache or cache miss. During + * SWR, a successful fetch will not notify cache updates. New contents are + * served on next query. + * - `no-store`: Always fetch and does not update on response. + * GQty creates a temporary cache at query-level which immediately expires. + * - `no-cache`: Always fetch, updates on response. + * - `force-cache`: Serves the cached contents regardless of staleness. It + * fetches on cache miss or a stale cache, updates cache on response. + * - `only-if-cached`: Serves the cached contents regardless of staleness, + * throws a network error on cache miss. + * + * _It takes effort to make sure the above stays true for all supported + * frameworks, please consider sponsoring so we can dedicate even more time on + * this._ + */ + fetchPolicy?: Exclude | 'cache-and-network'; + + /** Default retry strategy upon fetch failure, configurable on query level. */ + retryPolicy?: RetryOptions; + + /** Client implementation for GraphQL Subscriptions. */ + subscriber?: SubscriptionsClient; +}; + +export type ClientOptions = { + /** + * Default cache options is an immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + cacheOptions?: { + maxAge?: number; + staleWhileRevalidate?: number; + /** + * `false` to disable normalized cache, which usually means manual + * refetching after mutations. + */ + normalization?: boolean | CacheNormalizationHandler; + }; + fetchOptions: FetchOptions; + scalars: ScalarsEnumsHash; + schema: Readonly; + + /** + * Maximum accessor depth, prevents infinite recursions. + * + * @default 15 + */ + __depthLimit?: number; +}; + +export type Client = Persistors & { + /** + * Query, mutation and subscription in a promise. + * + * Selections to queries and mutations are fetched with + * `fetchOptions.fetcher`, the result is resolved with the cache updated + * according to the current fetch policy + * + * Subscriptions are disconnected upon delivery of the first data message, + * the cache is updated and the data is resolved, essentially behaving like + * a promise. + */ + resolve: ResolveFn; + + /** + * Query, mutation and subscription in an async generator. + * + * Subscription data continuously update the cache, while queries and + * mutations are fetched once and then listen to future cache changes + * from the same selections. + * + * This function subscribes to *cache changes*, termination of underlying + * subscription (WebSocket/EventSource) does not stop this generator. + * + * Calling `.return()` does not terminate pending promise. Use the `signal` + * option to exist the generator without waiting for the next update. + */ + subscribe: SubscribeFn; + + schema: TSchema; +}; + +export const createClient = ({ + cacheOptions: { + maxAge = 0, + normalization = true, + staleWhileRevalidate = 5 * 60 * 1000, + } = {}, + fetchOptions: { + fetcher, + fetchPolicy = 'default', + retryPolicy: defaultRetryPolicy = { + maxRetries: 3, + retryDelay: 1000, + }, + subscriber, + ...fetchOptions + }, + scalars, + schema, + __depthLimit = 15, +}: ClientOptions): Client & LegacyClient => { + const normalizationOptions = + normalization === true + ? defaultNormalizationOptions + : normalization === false + ? undefined + : normalization; + + const clientCache = new Cache(undefined, { + maxAge, + normalization: normalizationOptions, + staleWhileRevalidate, + }); + + const { resolve, subscribe } = createResolvers({ + scalars, + schema, + cache: clientCache, + fetchOptions: { + fetcher, + fetchPolicy, + retryPolicy: defaultRetryPolicy, + subscriber, + ...fetchOptions, + }, + depthLimit: __depthLimit, + }); + + /** For cache accessors outside of resolver scopes. */ + const clientContext = createContext({ + cache: clientCache, + depthLimit: __depthLimit, + fetchPolicy, + scalars, + schema, + typeKeys: normalizationOptions?.schemaKeys, + }); + + const accessor = createSchemaAccessor(clientContext); + + return { + resolve, + subscribe, + schema: accessor, + + ...createPersistors(clientCache), + + ...createLegacyClient({ + accessor, + cache: clientCache, + context: clientContext, + fetchOptions: { + fetcher, + fetchPolicy, + retryPolicy: defaultRetryPolicy, + subscriber, + ...fetchOptions, + }, + resolve, + scalars, + schema, + subscribe, + __depthLimit, + }), + }; +}; + +// TODO: Update fetcher in cli codegen to accept QueryPayload diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts new file mode 100644 index 000000000..9fbe66e76 --- /dev/null +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -0,0 +1,248 @@ +import type { ExecutionResult } from 'graphql'; +import type { SubscribePayload } from 'graphql-ws'; +import { CloseEvent, WebSocket } from 'ws'; +import type { FetchOptions } from '.'; +import type { Cache } from '../Cache'; +import { dedupePromise } from '../Cache/query'; +import { doRetry, GQtyError } from '../Error'; +import { buildQuery } from '../QueryBuilder'; +import type { QueryPayload } from '../Schema'; +import type { Selection } from '../Selection'; + +export type FetchSelectionsOptions = { + fetchOptions: FetchOptions; + operationName?: string; + cache?: Cache; +}; + +export type FetchResult< + TData extends Record = Record +> = ExecutionResult; + +export const fetchSelections = < + TData extends Record = Record +>( + selections: Set, + { cache, fetchOptions, operationName }: FetchSelectionsOptions +): Promise[]> => + Promise.all( + buildQuery(selections, operationName).map( + async ({ + query, + variables, + operationName, + extensions: { type, hash } = {}, + }) => { + if (!type) { + throw new GQtyError(`Invalid query type: ${type}`); + } + + if (!hash) { + throw new GQtyError(`Expected query hash.`); + } + + const payload = { query, variables, operationName }; + + // Dedupe + const result = await dedupePromise( + cache, + hash, + type === 'subscription' + ? () => doSubscribeOnce(payload, fetchOptions) + : () => doFetch(payload, fetchOptions) + ); + + return { ...result, extensions: { type, hash } }; + } + ) + ); + +export type SubscriptionCallback> = ( + result: FetchResult | Record +) => void; + +export type Unsubscribe = () => void; + +export const subscribeSelections = < + TData extends Record = Record +>( + selections: Set, + /** + * When a connection closes, this function will be called a last time without + * any arguments. + */ + fn: SubscriptionCallback, + { + cache, + fetchOptions: { subscriber, ...fetchOptions }, + operationName, + }: FetchSelectionsOptions +): Unsubscribe => { + const unsubscribers = new Set<() => void>(); + + Promise.all( + buildQuery(selections, operationName).map( + ({ + query, + variables, + operationName, + extensions: { type, hash } = {}, + }) => { + if (!type) { + throw new GQtyError(`Invalid query type: ${type}`); + } + + if (!hash) { + throw new GQtyError(`Expected query hash.`); + } + + const queryPayload = { query, variables, operationName }; + + const next = ({ data, errors, extensions }: ExecutionResult) => { + if (data === undefined) return; + + fn({ data, errors, extensions: { ...extensions, type, hash } }); + }; + + const error = (error: unknown) => { + if (error == null) { + throw new GQtyError(`Subscription sink closed without an error.`); + } + + fn({ errors: [error as any] }); + }; + + // Dedupe + return dedupePromise( + type === 'subscription' ? undefined : cache, + hash, + type === 'subscription' + ? () => + new Promise((complete) => { + const unsubscribe = subscriber?.subscribe( + queryPayload, + { + next, + error(err) { + if (isCloseEvent(err)) { + this.complete(); + } else if (Array.isArray(err)) { + error(GQtyError.fromGraphQLErrors(err)); + } else { + error(err); + } + }, + complete, + } + ); + + if (unsubscribe) { + unsubscribers.add(unsubscribe); + } + }) + : () => + new Promise((complete) => { + const aborter = new AbortController(); + + doFetch(queryPayload, { + ...fetchOptions, + signal: aborter.signal, + }) + .then(next, error) + .finally(complete); + + unsubscribers.add(() => aborter.abort()); + }) + ); + } + ) + ).finally(() => fn({})); + + return () => { + unsubscribers.forEach((fn) => fn()); + }; +}; + +const doFetch = async < + TData extends Record = Record +>( + payload: QueryPayload, + { fetcher, retryPolicy, ...fetchOptions }: FetchOptions +): Promise> => { + // lol + const doDoFetch = () => + fetcher(payload, fetchOptions) as Promise>; + + try { + return await doDoFetch(); + } catch (error) { + if (!retryPolicy || !(error instanceof Error)) throw error; + + return new Promise((resolve, reject) => { + doRetry(retryPolicy!, { + onLastTry: async () => { + try { + resolve(await doDoFetch()); + } catch (e) { + reject(e); + } + }, + onRetry: async () => { + resolve(await doDoFetch()); + }, + }); + }); + } +}; + +const doSubscribeOnce = async < + TData extends Record = Record +>( + payload: SubscribePayload, + { subscriber }: FetchOptions +) => { + if (!subscriber) { + throw new GQtyError(`Subscription client is required for subscritions.`); + } + + return new Promise>>( + (resolve, reject) => { + let result: any; + + const unsubscribe = subscriber.subscribe(payload, { + next(data) { + result = data; + unsubscribe(); + }, + error(error) { + if (isCloseEvent(error)) { + resolve(result); + } else if (Array.isArray(error)) { + reject(GQtyError.fromGraphQLErrors(error)); + } else { + reject(error); + } + }, + complete() { + if (!result) { + throw new GQtyError(`Subscription completed without data`); + } + + resolve(result); + }, + }); + } + ); +}; + +export const isCloseEvent = (input: unknown): input is CloseEvent => { + const error = input as CloseEvent; + + return ( + (error.type === 'close' && error.target instanceof WebSocket) || + (typeof error.code === 'number' && + [ + 4004, 4005, 4400, 4401, 4403, 4406, 4408, 4409, 4429, 4499, 4500, 4504, + ].includes(error.code)) + ); +}; diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts deleted file mode 100644 index 39a155dd2..000000000 --- a/packages/gqty/src/Client/resolvers.ts +++ /dev/null @@ -1,945 +0,0 @@ -import type { ExecutionResult, GraphQLError } from 'graphql'; -import { CacheInstance, createCache } from '../Cache'; -import { GQtyError } from '../Error'; -import { doRetry, type RetryOptions } from '../Error/retry'; -import { createQueryBuilder } from '../QueryBuilder'; -import { - createSelectionManager, - SelectionManager, - separateSelectionTypes, -} from '../Selection/SelectionManager'; -import { - createDeferredPromise, - DeferredPromise, - get, - LazyPromise, -} from '../Utils'; - -import type { FetchEventData } from '../Events'; -import type { NormalizationHandler } from '../Normalization'; -import type { SchedulerPromiseValue } from '../Scheduler'; -import type { FetchOptions } from '../Schema/types'; -import { Selection, SelectionType } from '../Selection/selection'; -import type { - InnerClientState, - SubscribeEvents, - SubscriptionsClient, -} from './client'; - -export interface ResolveOptions { - /** - * Set to `true` to refetch the data requirements - */ - refetch?: boolean; - /** - * Ignore the client cache - */ - noCache?: boolean; - /** - * Activate special handling of non-serializable variables, - * for example, files uploading - * - * @default false - */ - nonSerializableVariables?: boolean; - /** - * Middleware function that is called if valid cache is found - * for all the data requirements, it should return `true` if the - * the resolution and fetch should continue, and `false` - * if you wish to stop the resolution, resolving the promise - * with the existing cache data. - */ - onCacheData?: (data: TData) => boolean; - /** - * On No Cache found - */ - onNoCacheFound?: () => void; - /** - * Get every selection intercepted in the specified function - */ - onSelection?: (selection: Selection) => void; - /** - * On subscription event listener - */ - onSubscription?: ( - event: - | { - type: 'data'; - unsubscribe: () => Promise; - data: TData; - error?: undefined; - } - | { - type: 'with-errors'; - unsubscribe: () => Promise; - data?: TData; - error: GQtyError; - } - | { - type: 'start' | 'complete'; - unsubscribe: () => Promise; - data?: undefined; - error?: undefined; - } - ) => void; - /** - * Function called on empty resolution - */ - onEmptyResolve?: () => void; - - /** - * Retry strategy - */ - retry?: RetryOptions; - - /** - * Pass any extra fetch options - */ - fetchOptions?: FetchOptions; - - /** - * Query operation name - */ - operationName?: string; -} - -export interface FetchResolveOptions { - retry?: RetryOptions; - - scheduler?: boolean; - - ignoreResolveCache?: boolean; - - onSubscription?: ResolveOptions['onSubscription']; - - fetchOptions?: FetchOptions; -} - -function filterSelectionsWithErrors( - graphQLErrors: readonly GraphQLError[] | undefined, - executionData: Record | null | undefined, - selections: Selection[] -) { - if (!executionData) return selections; - - const gqlErrorsPaths = graphQLErrors - ?.map((err) => - err.path - ?.filter( - (pathValue): pathValue is string => typeof pathValue === 'string' - ) - .join('.') - ) - .filter( - (possiblePath): possiblePath is NonNullable => { - return !!possiblePath; - } - ); - const selectionsWithErrors = !gqlErrorsPaths?.length - ? selections - : selections.filter((selection) => { - const selectionPathNoIndex = selection.noIndexSelections - .slice(1) - .map((selection) => selection.alias || selection.key) - .join('.'); - const selectionData = get(executionData, selectionPathNoIndex); - - switch (selectionData) { - case undefined: { - return true; - } - case null: { - return gqlErrorsPaths.includes(selectionPathNoIndex); - } - default: - return false; - } - }); - - return selectionsWithErrors; -} - -export interface Resolved { - (dataFn: () => T, opts?: ResolveOptions): Promise; -} - -export interface BuildAndFetchSelections { - ( - selections: Selection[] | undefined, - type: 'query' | 'mutation', - cache?: CacheInstance, - options?: FetchResolveOptions, - lastTry?: boolean | undefined - ): Promise; -} - -export interface ResolveSelections { - ( - selections: Selection[] | Set, - cache?: CacheInstance, - options?: FetchResolveOptions - ): Promise; -} - -export interface Resolvers { - resolveSelections: ResolveSelections; - buildAndFetchSelections: BuildAndFetchSelections; - resolved: Resolved; - inlineResolved: InlineResolved; -} - -export interface InlineResolved { - (fn: () => TData, options?: InlineResolveOptions): - | TData - | Promise; -} - -export interface InlineResolveOptions { - refetch?: boolean; - onEmptyResolve?: () => void; - /** - * Get every selection intercepted in the specified function - */ - onSelection?: (selection: Selection) => void; - /** - * On valid cache data found callback - */ - onCacheData?: (data: TData) => void; - /** - * Query operation name - */ - operationName?: string; -} - -export function createResolvers( - innerState: InnerClientState, - catchSelectionsTimeMS: number, - subscriptions?: SubscriptionsClient -): Resolvers { - const { - interceptorManager, - eventHandler, - queryFetcher, - scheduler, - clientCache: globalCache, - selectionManager: globalSelectionManager, - defaults: { resolved: resolvedDefaults = {} }, - } = innerState; - const { globalInterceptor } = interceptorManager; - const buildQuery = createQueryBuilder(); - - const inlineResolved: InlineResolved = function inlineResolved< - TData = unknown - >( - fn: () => TData, - { - refetch, - onEmptyResolve, - onSelection, - onCacheData, - operationName, - }: InlineResolveOptions = {} - ) { - const prevFoundValidCache = innerState.foundValidCache; - innerState.foundValidCache = true; - - const interceptor = interceptorManager.createInterceptor(); - - let noSelection = true; - function onScalarSelection(selection: Selection) { - selection.operationName = operationName; - noSelection = false; - } - interceptor.selectionAddListeners.add(onScalarSelection); - interceptor.selectionCacheRefetchListeners.add(onScalarSelection); - - if (onSelection) { - interceptor.selectionAddListeners.add(onSelection); - interceptor.selectionCacheListeners.add(onSelection); - interceptor.selectionCacheRefetchListeners.add(onSelection); - } - - const prevAllowCache = innerState.allowCache; - try { - if (refetch) innerState.allowCache = false; - - const data = fn(); - - const foundValidCache = innerState.foundValidCache; - - innerState.allowCache = prevAllowCache; - innerState.foundValidCache = prevFoundValidCache; - interceptorManager.removeInterceptor(interceptor); - - if (noSelection) { - if (process.env.NODE_ENV !== 'production') { - console.warn('[gqty] Warning! No data requested.'); - } - if (onEmptyResolve) onEmptyResolve(); - return data; - } - - const promises: Promise[] = []; - groups: for (const [ - selectionSet, - promise, - ] of scheduler.pendingSelectionsGroupsPromises) { - for (const selection of interceptor.fetchSelections) { - if (selectionSet.has(selection)) { - promises.push(promise); - continue groups; - } - } - } - - if (promises.length) { - if (foundValidCache) { - if (onCacheData) { - onCacheData(data); - } - } - return Promise.all(promises).then((value) => { - for (const v of value) if (v.error) throw v.error; - - innerState.allowCache = true; - - return fn(); - }); - } - - return data; - } finally { - innerState.allowCache = prevAllowCache; - innerState.foundValidCache = prevFoundValidCache; - interceptorManager.removeInterceptor(interceptor); - } - }; - - const { - noCache: noCacheDefault = false, - refetch: refetchDefault = false, - retry: retryDefault = false, - } = resolvedDefaults; - const resolved: Resolved = async function resolved( - dataFn: () => T, - { - refetch = refetchDefault, - noCache = noCacheDefault, - onCacheData, - onSelection, - onSubscription, - retry = retryDefault, - nonSerializableVariables, - onNoCacheFound, - onEmptyResolve, - fetchOptions, - operationName, - }: ResolveOptions = {} - ): Promise { - const prevFoundValidCache = innerState.foundValidCache; - innerState.foundValidCache = true; - - let prevAllowCache = innerState.allowCache; - if (refetch) { - innerState.allowCache = false; - } - - let tempCache: typeof innerState.clientCache | undefined; - if (noCache) { - innerState.clientCache = tempCache = createCache(); - } - - let tempSelectionManager: SelectionManager | undefined; - if (nonSerializableVariables) { - innerState.selectionManager = tempSelectionManager = - createSelectionManager(); - } - - let prevGlobalInterceptorListening = globalInterceptor.listening; - globalInterceptor.listening = false; - - const interceptor = interceptorManager.createInterceptor(); - - let noSelection = true; - - function onScalarSelection(selection: Selection) { - selection.operationName = operationName; - noSelection = false; - } - interceptor.selectionAddListeners.add(onScalarSelection); - interceptor.selectionCacheRefetchListeners.add(onScalarSelection); - - if (onSelection) { - interceptor.selectionAddListeners.add(onSelection); - interceptor.selectionCacheListeners.add(onSelection); - interceptor.selectionCacheRefetchListeners.add(onSelection); - } - - try { - const data = dataFn(); - - if (noSelection) { - if (process.env.NODE_ENV !== 'production') { - console.warn('[gqty] Warning! No data requested.'); - } - if (onEmptyResolve) onEmptyResolve(); - return data; - } - - interceptorManager.removeInterceptor(interceptor); - - if (innerState.foundValidCache) { - if (onCacheData && !onCacheData(data)) { - return data; - } - } else { - onNoCacheFound?.(); - } - - innerState.foundValidCache = prevFoundValidCache; - innerState.allowCache = prevAllowCache; - innerState.clientCache = globalCache; - innerState.selectionManager = globalSelectionManager; - - globalInterceptor.listening = prevGlobalInterceptorListening; - - await resolveSelections( - interceptor.fetchSelections, - tempCache || innerState.clientCache, - { - ignoreResolveCache: refetch || noCache, - onSubscription: onSubscription - ? (event) => { - switch (event.type) { - case 'data': - case 'with-errors': - if (event.data) { - const prevAllowCache = innerState.allowCache; - try { - innerState.allowCache = true; - globalInterceptor.listening = false; - if (tempCache) { - innerState.clientCache = tempCache; - } - onSubscription({ - ...event, - data: dataFn(), - }); - } finally { - innerState.allowCache = prevAllowCache; - globalInterceptor.listening = true; - innerState.clientCache = globalCache; - } - } else { - onSubscription(event); - } - return; - default: - onSubscription(event); - } - } - : undefined, - retry, - fetchOptions, - } - ); - - prevAllowCache = innerState.allowCache; - innerState.allowCache = true; - - prevGlobalInterceptorListening = globalInterceptor.listening; - globalInterceptor.listening = false; - - if (tempCache) { - innerState.clientCache = tempCache; - } - if (tempSelectionManager) { - innerState.selectionManager = tempSelectionManager; - } - - return dataFn(); - } catch (err) { - throw GQtyError.create(err, resolved); - } finally { - interceptorManager.removeInterceptor(interceptor); - innerState.allowCache = prevAllowCache; - innerState.clientCache = globalCache; - innerState.selectionManager = globalSelectionManager; - innerState.foundValidCache = prevFoundValidCache; - globalInterceptor.listening = prevGlobalInterceptorListening; - } - }; - - const resolutionTempCache = new Map(); - const resolutionTempCacheTimeout = catchSelectionsTimeMS * 5; - - function buildQueryAndCheckTempCache( - selections: Selection[], - type: 'query' | 'mutation' | 'subscription', - normalizationHandler: NormalizationHandler | undefined, - ignoreResolveCache: boolean | undefined, - isGlobalCache: boolean - ) { - const { query, variables, cacheKey } = buildQuery( - selections, - { - type, - }, - normalizationHandler != null, - isGlobalCache - ); - - const cachedData = ignoreResolveCache - ? undefined - : (resolutionTempCache.get(cacheKey) as TData | undefined); - - return { - query, - variables, - cacheKey, - cachedData, - }; - } - - const resolveQueryPromisesMap: Record> = {}; - - async function buildAndFetchSelections( - selections: Selection[] | undefined, - type: 'query' | 'mutation', - cache: CacheInstance = innerState.clientCache, - options: FetchResolveOptions = {}, - lastTry?: boolean - ) { - if (!selections) return; - - const isLastTry = - lastTry === undefined ? (options.retry ? false : true) : lastTry; - - const { query, variables, cachedData, cacheKey } = - buildQueryAndCheckTempCache( - selections, - type, - innerState.normalizationHandler, - options.ignoreResolveCache, - cache === globalCache - ); - - if (!options.scheduler) return resolve(); - - let promise: Promise | undefined = - resolveQueryPromisesMap[cacheKey]; - - if (promise) return promise; - - promise = LazyPromise(resolve); - resolveQueryPromisesMap[cacheKey] = promise; - - try { - return await promise; - } finally { - delete resolveQueryPromisesMap[cacheKey]; - } - - async function resolve() { - if (!selections) return; - - let executionData: ExecutionResult['data']; - - let loggingPromise: DeferredPromise | undefined; - - try { - if (cachedData != null) return cachedData; - - if (eventHandler.hasFetchSubscribers) { - loggingPromise = createDeferredPromise(); - - eventHandler.sendFetchPromise(loggingPromise.promise, selections); - } - - const executionResult = await queryFetcher( - { query, variables }, - options.fetchOptions - ); - - const { data, errors } = executionResult; - - if (data) { - if (!errors && cacheKey) { - resolutionTempCache.set(cacheKey, data); - setTimeout( - () => resolutionTempCache.delete(cacheKey), - resolutionTempCacheTimeout - ); - } - - cache.mergeCache(data, type); - executionData = data; - } - - if (errors?.length) { - throw GQtyError.fromGraphQLErrors(errors); - } else if (options.scheduler) { - innerState.scheduler.errors.removeErrors(selections); - } - - loggingPromise?.resolve({ - executionResult, - query, - variables, - cacheSnapshot: cache.cache, - selections, - type, - }); - - return data as unknown as TData; - } catch (err) { - const error = GQtyError.create(err, () => {}); - loggingPromise?.resolve({ - error, - query, - variables, - cacheSnapshot: cache.cache, - selections, - type, - }); - - if (options.scheduler) { - const selectionsWithErrors = filterSelectionsWithErrors( - error.graphQLErrors, - executionData, - selections - ); - innerState.scheduler.errors.triggerError( - error, - selectionsWithErrors, - isLastTry - ); - } - - if (options.retry) { - async function retryFn(lastTry: boolean) { - const retryPromise: Promise = - buildAndFetchSelections( - selections, - type, - cache, - Object.assign({}, options, { - retry: false, - ignoreResolveCache: true, - } as FetchResolveOptions), - lastTry - ).then( - (data) => ({ data, selections: new Set(selections) }), - (err) => { - console.error(err); - return { - error: GQtyError.create(err), - selections: new Set(selections), - }; - } - ); - - if (options.scheduler) { - const setSelections = new Set(selections); - scheduler.pendingSelectionsGroups.add(setSelections); - - scheduler.errors.retryPromise(retryPromise, setSelections); - - retryPromise.finally(() => { - scheduler.pendingSelectionsGroups.delete(setSelections); - }); - } - - const { error } = await retryPromise; - - if (error) throw error; - } - doRetry(options.retry, { - onLastTry() { - return retryFn(true); - }, - onRetry() { - return retryFn(false); - }, - }); - } - - throw error; - } finally { - interceptorManager.removeSelections(selections); - } - } - } - - function subscriptionSchedulerEvents(ctx: { - selections: Selection[]; - query: string; - variables: Record | undefined; - operationId: string; - }): SubscribeEvents { - return { - onData(data) { - const { selections, query, operationId, variables } = ctx; - globalCache.mergeCache(data, 'subscription'); - scheduler.errors.removeErrors(selections); - for (const selection of selections) { - eventHandler.sendCacheChange({ - data, - selection, - }); - } - if (eventHandler.hasFetchSubscribers) { - eventHandler.sendFetchPromise( - Promise.resolve({ - executionResult: { - data, - }, - cacheSnapshot: globalCache.cache, - query, - variables, - selections, - type: 'subscription', - label: `[id=${operationId}] [data]`, - }), - selections - ); - } - }, - onError({ data, error }) { - const { query, variables, selections, operationId } = ctx; - if (data) globalCache.mergeCache(data, 'subscription'); - - scheduler.errors.triggerError( - error, - filterSelectionsWithErrors(error.graphQLErrors, data, selections), - true - ); - - if (eventHandler.hasFetchSubscribers) { - eventHandler.sendFetchPromise( - Promise.resolve({ - executionResult: { - data, - }, - error, - cacheSnapshot: globalCache.cache, - query, - variables, - selections, - type: 'subscription', - label: `[id=${operationId}] [error]`, - }), - selections - ); - } - }, - }; - } - - async function buildAndSubscribeSelections( - selections: Selection[] | undefined, - cache: CacheInstance = innerState.clientCache, - options: FetchResolveOptions - ) { - if (!selections) return; - - if (!subscriptions) { - if (typeof window !== 'undefined') { - console.error('ERROR: No subscriptions client specified!'); - } - return; - } - - const selectionsByRoot = new Map>(); - - for (const selection of selections) { - const root = selection.selectionsList[1]; - // This case realistically should never happen - /* istanbul ignore next */ - if (!root) continue; - - let selectionSet = selectionsByRoot.get(root); - if (selectionSet) { - selectionSet.push(selection); - } else { - selectionSet = [selection]; - selectionsByRoot.set(root, selectionSet); - } - } - - const unsubscribeCallbacks = new Set<() => Promise>(); - const unsubscribe = async () => { - await Promise.all(Array.from(unsubscribeCallbacks).map((cb) => cb())); - }; - - for (const selections of selectionsByRoot.values()) { - const { query, variables, cacheKey } = buildQueryAndCheckTempCache( - selections, - 'subscription', - innerState.normalizationHandler, - true, - cache === globalCache - ); - - let operationId: string; - const subResult = subscriptions.subscribe({ - query, - variables, - selections, - cacheKey, - events: options.scheduler - ? subscriptionSchedulerEvents - : { - onData(data) { - cache.mergeCache(data, 'subscription'); - - options.onSubscription?.({ - type: 'data', - unsubscribe, - data, - }); - if (eventHandler.hasFetchSubscribers) { - eventHandler.sendFetchPromise( - Promise.resolve({ - executionResult: { - data, - }, - cacheSnapshot: globalCache.cache, - query, - variables, - selections, - type: 'subscription', - label: `[id=${operationId}] [data]`, - }), - selections - ); - } - }, - onError({ data, error }) { - if (data) cache.mergeCache(data, 'subscription'); - - options.onSubscription?.({ - type: 'with-errors', - unsubscribe, - data, - error, - }); - - if (eventHandler.hasFetchSubscribers) { - eventHandler.sendFetchPromise( - Promise.resolve({ - executionResult: { - data, - }, - error, - cacheSnapshot: globalCache.cache, - query, - variables, - selections, - type: 'subscription', - label: `[id=${operationId}] [error]`, - }), - selections - ); - } - }, - onStart: options.onSubscription - ? () => { - options.onSubscription?.({ - type: 'start', - unsubscribe, - }); - } - : undefined, - onComplete: options.onSubscription - ? () => { - options.onSubscription?.({ - type: 'complete', - unsubscribe, - }); - } - : undefined, - }, - }); - - if (subResult instanceof Promise) { - let loggingPromise: DeferredPromise | undefined; - if (eventHandler.hasFetchSubscribers) { - loggingPromise = createDeferredPromise(); - eventHandler.sendFetchPromise(loggingPromise.promise, selections); - } - const { unsubscribe, operationId } = await subResult; - - unsubscribeCallbacks.add(unsubscribe); - - loggingPromise?.resolve({ - cacheSnapshot: cache.cache, - query, - variables, - selections, - type: 'subscription', - label: `[id=${operationId}] [created]`, - }); - } else { - unsubscribeCallbacks.add(subResult.unsubscribe); - } - } - } - - async function resolveSelections< - TQuery = unknown, - TMutation = unknown, - TSubscription = unknown - >( - selections: Selection[] | Set, - cache: CacheInstance = innerState.clientCache, - options: FetchResolveOptions = {} - ) { - const selectionBranches = separateSelectionTypes(selections); - - try { - await Promise.all( - selectionBranches.map((selections) => { - const [ - { - noIndexSelections: [{ type }], - }, - ] = selections; - - if (type === SelectionType.Query) { - return buildAndFetchSelections( - selections, - 'query', - cache, - options - ); - } else if (type === SelectionType.Mutation) { - return buildAndFetchSelections( - selections, - 'mutation', - cache, - options - ); - } else if (type === SelectionType.Subscription) { - return buildAndSubscribeSelections( - selections, - cache, - options - ); - } else { - throw new TypeError('Invalid selection type'); - } - }) - ); - } catch (err) { - throw GQtyError.create(err); - } - } - - return { - resolveSelections, - buildAndFetchSelections, - resolved, - inlineResolved, - }; -} diff --git a/packages/gqty/src/Client/updateCaches.ts b/packages/gqty/src/Client/updateCaches.ts new file mode 100644 index 000000000..799611153 --- /dev/null +++ b/packages/gqty/src/Client/updateCaches.ts @@ -0,0 +1,30 @@ +import type { GraphQLError } from 'graphql'; +import type { Cache, CacheObject, CacheRoot, CacheSetOptions } from '../Cache'; +import { GQtyError } from '../Error'; +import type { FetchResult } from './resolveSelections'; + +export const updateCaches = >( + results: FetchResult[], + caches: Cache[], + cacheSetOptions?: CacheSetOptions +) => { + const errorSet = new Set(); + + for (const { data, errors, extensions } of results) { + const type = `${extensions?.type}`; + + if (data !== undefined) { + const newValues = { [type]: data as CacheObject } as CacheRoot; + + for (const cache of caches) { + cache.set(newValues, cacheSetOptions); + } + } + + errors?.forEach((error) => errorSet.add(error)); + } + + if (errorSet.size) { + throw GQtyError.fromGraphQLErrors([...errorSet]); + } +}; diff --git a/packages/gqty/src/Error/index.ts b/packages/gqty/src/Error/index.ts index d347766ed..5cd7d4624 100644 --- a/packages/gqty/src/Error/index.ts +++ b/packages/gqty/src/Error/index.ts @@ -1,6 +1,8 @@ import type { GraphQLError } from 'graphql'; export class GQtyError extends Error { + readonly name = 'GQtyError'; + graphQLErrors?: ReadonlyArray; otherError?: unknown; diff --git a/packages/gqty/src/Events/index.ts b/packages/gqty/src/Events/index.ts deleted file mode 100644 index 629d4f6d4..000000000 --- a/packages/gqty/src/Events/index.ts +++ /dev/null @@ -1,68 +0,0 @@ -import type { ExecutionResult } from 'graphql'; - -import type { CacheType } from '../Cache'; -import type { GQtyError } from '../Error'; -import type { Selection } from '../Selection'; - -export interface FetchEventData { - label?: string; - executionResult?: Pick; - error?: GQtyError; - query: string; - variables: Record | undefined; - cacheSnapshot: CacheType; - selections: Selection[]; - type: 'query' | 'mutation' | 'subscription'; -} - -export interface CacheChangeEventData { - selection: Selection; - data: unknown; -} - -interface OnFetchEventFn { - (data: Promise, selections: Selection[]): void; -} - -interface OnCacheChangeEventFn { - (data: CacheChangeEventData): void; -} - -export class EventHandler { - public hasFetchSubscribers = false; - private onFetchListeners = new Set(); - private onCacheChangeListeners = new Set(); - - public sendCacheChange(data: CacheChangeEventData) { - for (const listener of this.onCacheChangeListeners) { - listener(data); - } - } - - public sendFetchPromise( - data: Promise, - selections: Selection[] - ) { - for (const listener of this.onFetchListeners) { - listener(data, selections); - } - } - - public onCacheChangeSubscribe(fn: OnCacheChangeEventFn) { - this.onCacheChangeListeners.add(fn); - - return () => { - this.onCacheChangeListeners.delete(fn); - }; - } - - public onFetchSubscribe(fn: OnFetchEventFn) { - this.onFetchListeners.add(fn); - this.hasFetchSubscribers = this.onFetchListeners.size > 0; - - return () => { - this.onFetchListeners.delete(fn); - this.hasFetchSubscribers = this.onFetchListeners.size > 0; - }; - } -} diff --git a/packages/gqty/src/Helpers/FrailMap.ts b/packages/gqty/src/Helpers/FrailMap.ts new file mode 100644 index 000000000..394806320 --- /dev/null +++ b/packages/gqty/src/Helpers/FrailMap.ts @@ -0,0 +1,105 @@ +export type FrailContainer = WeakRef<{ data: V }> | StrongRef<{ data: V }>; + +export type SetOptions = { + /** Use strong reference for this value. */ + strong?: boolean; +}; + +/** As oppose to WeakRef */ +class StrongRef { + #data: T; + constructor(data: T) { + this.#data = data; + } + deref() { + return this.#data; + } +} + +/** + * Strong limbs with a weak grab, a WeakMap that supports scalars. + * + * `size` will not be updated until a disposed object is accessed via one of + * these methods: get, entries, forEach, keys or values. + */ +export class FrailMap extends Map { + constructor(entries?: readonly (readonly [K, V])[] | null) { + super(); + + if (entries) { + for (const [k, v] of entries) { + this.set(k, v); + } + } + } + + get(key: K) { + const ref = super.get(key) as FrailContainer | undefined; + const val = ref?.deref(); + if (val === undefined) { + this.delete(key); + return; + } + + return val.data; + } + has(key: K) { + return super.has(key) && this.get(key) !== undefined; + } + set(key: K, value: V, options?: SetOptions) { + return super.set( + key, + (options?.strong + ? new StrongRef({ data: value }) + : new WeakRef({ data: value })) as V + ); + } + + forEach( + callbackfn: (value: V, key: K, map: Map) => void, + thisArg?: any + ) { + super.forEach((container, k) => { + const ref = (container as FrailContainer).deref(); + if (ref !== undefined) { + callbackfn.call(thisArg, ref.data, k, this); + } else { + this.delete(k); + } + }); + } + entries() { + const map = new Map(); + this.forEach((v, k) => { + map.set(k, v); + }); + return map.entries(); + } + keys() { + const keys = new Set(); + this.forEach((_, k) => { + keys.add(k); + }); + return keys.values(); + } + values() { + const keys = new Set(); + this.forEach((v) => { + keys.add(v); + }); + return keys.values(); + } + [Symbol.iterator]() { + return this.entries(); + } + get [Symbol.toStringTag]() { + return 'FrailMap'; + } + toJSON() { + const json: Record = {}; + this.forEach((v, k) => { + json[k as string] = v; + }); + return json; + } +} diff --git a/packages/gqty/src/Helpers/deepCopy.ts b/packages/gqty/src/Helpers/deepCopy.ts new file mode 100644 index 000000000..51c54b376 --- /dev/null +++ b/packages/gqty/src/Helpers/deepCopy.ts @@ -0,0 +1,24 @@ +export const deepCopy = (value: T, seen = new WeakSet()): Readonly => { + if (typeof value == 'object' && value !== null) { + if (seen.has(value)) { + return value; + } + + seen.add(value); + + if (Array.isArray(value)) { + return value.map((value) => deepCopy(value, seen)) as T; + } + + let data = value as any; + if (typeof data.toJSON === 'function') { + data = data.toJSON(); + } + + return Object.fromEntries( + Object.entries(data).map(([key, value]) => [key, deepCopy(value, seen)]) + ) as T; + } + + return value; +}; diff --git a/packages/gqty/src/Helpers/index.ts b/packages/gqty/src/Helpers/index.ts index 8d4093697..63835c0b7 100644 --- a/packages/gqty/src/Helpers/index.ts +++ b/packages/gqty/src/Helpers/index.ts @@ -1,6 +1,6 @@ -export * from './selectFields'; -export type { HydrateCacheOptions } from './ssr'; -export * from './getFields'; export * from './casters'; +export * from './deepCopy'; +export * from './FrailMap'; +export * from './getFields'; export * from './prepass'; -export * from './types'; +export * from './selectFields'; diff --git a/packages/gqty/src/Helpers/prefetch.ts b/packages/gqty/src/Helpers/prefetch.ts deleted file mode 100644 index 7fe870287..000000000 --- a/packages/gqty/src/Helpers/prefetch.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { InnerClientState } from '../Client/client'; -import type { SchedulerPromiseValue } from '../Scheduler'; - -export interface Prefetch< - GeneratedSchema extends { - query: object; - } -> { - (fn: (query: GeneratedSchema['query']) => TData): - | TData - | (Promise & { schedulerPromise: Promise }); -} - -export function createPrefetch< - GeneratedSchema extends { - query: object; - } ->( - query: GeneratedSchema['query'], - { scheduler }: InnerClientState -): Prefetch { - return function prefetch( - fn: (query: GeneratedSchema['query']) => TData - ): - | (Promise & { - schedulerPromise: Promise; - }) - | TData { - const existingData = fn(query); - - if (scheduler.resolving) { - return Object.assign( - scheduler.resolving.promise.then(() => prefetch(fn)), - { - schedulerPromise: scheduler.resolving.promise, - } - ); - } - return existingData; - }; -} diff --git a/packages/gqty/src/Helpers/refetch.ts b/packages/gqty/src/Helpers/refetch.ts deleted file mode 100644 index eb7e03440..000000000 --- a/packages/gqty/src/Helpers/refetch.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { InnerClientState } from '../Client/client'; -import type { Resolvers } from '../Client/resolvers'; - -export function isFunction(v: T | (() => T)): v is () => T { - return typeof v === 'function'; -} - -export interface Refetch { - (refetchArg: T | (() => T)): Promise; -} - -export function createRefetch( - innerState: InnerClientState, - resolveSelections: Resolvers['resolveSelections'], - inlineResolved: Resolvers['inlineResolved'] -): Refetch { - const { accessorCache } = innerState; - - async function refetch(refetchArg: T | (() => T)) { - if (isFunction(refetchArg)) - return inlineResolved(refetchArg, { refetch: true }); - - if (accessorCache.isProxy(refetchArg)) { - const selectionSet = accessorCache.getSelectionSetHistory(refetchArg); - - if (selectionSet) { - await resolveSelections(selectionSet, undefined, { - ignoreResolveCache: true, - }); - } - return refetchArg; - } - - if (process.env.NODE_ENV !== 'production') { - console.warn('gqty: Invalid proxy to refetch!', refetchArg); - } - return refetchArg; - } - - return refetch; -} diff --git a/packages/gqty/src/Helpers/selectFields.ts b/packages/gqty/src/Helpers/selectFields.ts index d7564ccb6..73dbc1fd9 100644 --- a/packages/gqty/src/Helpers/selectFields.ts +++ b/packages/gqty/src/Helpers/selectFields.ts @@ -1,4 +1,6 @@ -import { get, isObject, set } from '../Utils'; +import get from 'just-safe-get'; +import set from 'just-safe-set'; +import { isObject } from '../Utils'; export function selectFields( accessor: A, @@ -11,10 +13,12 @@ export function selectFields( return accessor.map((value) => selectFields(value, fields, recursionDepth) ) as A; + } else if (!isObject(accessor)) { + return accessor; + } else { + Reflect.get(accessor, '__typename'); } - if (!isObject(accessor)) return accessor; - if (fields.length === 0) { return {} as A; } @@ -50,6 +54,10 @@ export function selectFields( } return fields.reduce((acum, fieldName) => { + if (typeof fieldName === 'number') { + fieldName = fieldName.toString(); + } + const fieldValue = get(accessor, fieldName); if (fieldValue === undefined) return acum; diff --git a/packages/gqty/src/Helpers/ssr.ts b/packages/gqty/src/Helpers/ssr.ts deleted file mode 100644 index e6d43bfa3..000000000 --- a/packages/gqty/src/Helpers/ssr.ts +++ /dev/null @@ -1,126 +0,0 @@ -import type { ProxyAccessor } from '../Cache'; -import type { InnerClientState, Refetch } from '../Client/client'; -import type { SelectionsBackup } from '../Selection/SelectionManager'; -import { decycle, isEmptyObject, isPlainObject, retrocycle } from '../Utils'; - -export interface HydrateCacheOptions { - /** - * Cache snapshot, returned from `prepareRender` - */ - cacheSnapshot: string; - /** - * If it should refetch everything after - * - * Specify a number greater than `0` to delay the refetch that amount in ms - * - * @default - * false - */ - shouldRefetch?: boolean | number; -} - -export interface HydrateCache { - ({ cacheSnapshot, shouldRefetch }: HydrateCacheOptions): void; -} - -export interface PrepareRender { - (render: () => Promise | void): Promise<{ cacheSnapshot: string }>; -} - -export interface SSRHelpers { - hydrateCache: HydrateCache; - prepareRender: PrepareRender; -} - -export function createSSRHelpers({ - query, - refetch, - innerState, -}: { - query: ProxyAccessor; - refetch: Refetch; - innerState: InnerClientState; -}): SSRHelpers { - const hydrateCache = ({ - cacheSnapshot, - shouldRefetch = false, - }: HydrateCacheOptions) => { - try { - const recoveredCache = retrocycle<{ - cache?: Record; - normalizedCache?: Record; - selections?: SelectionsBackup; - }>(JSON.parse(cacheSnapshot)); - if ( - isPlainObject(recoveredCache) && - isPlainObject(recoveredCache.cache) - ) { - const { selections, cache } = recoveredCache; - - innerState.selectionManager.restore(selections); - - innerState.clientCache.mergeCache(cache, 'query'); - - if (shouldRefetch) { - setTimeout( - () => { - refetch(query).catch(console.error); - }, - typeof shouldRefetch === 'number' ? shouldRefetch : 0 - ); - } - } - } catch (err) { - console.error(err); - } - }; - - const prepareRender = async (render: () => Promise | unknown) => { - const interceptor = innerState.interceptorManager.createInterceptor(); - let prevIgnoreCache = innerState.allowCache; - try { - innerState.allowCache = false; - await render(); - } finally { - innerState.interceptorManager.removeInterceptor(interceptor); - innerState.allowCache = prevIgnoreCache; - } - - await Promise.all([ - ...innerState.scheduler.pendingSelectionsGroupsPromises.values(), - ]); - - const selections = innerState.selectionManager.backup(); - - const queryCache = innerState.clientCache.cache.query || {}; - - // We only want to pass the cache that is part of the selections made - // Not all the acumulated server cache - const cache: Record = {}; - for (const { - type, - // cachePath has always the form ["query", "user", "email"] - cachePath: [, queryPath], - } of interceptor.fetchSelections) { - // SelectionType.Query === 0 - if (type === 0) { - const value = queryCache[queryPath]; - if (value !== undefined) cache[queryPath] = value; - } - } - - return { - cacheSnapshot: JSON.stringify({ - ...decycle({ - cache: isEmptyObject(cache) ? undefined : cache, - }), - selections: selections[0].length ? selections : undefined, - }), - }; - }; - - return { - hydrateCache, - prepareRender, - }; -} diff --git a/packages/gqty/src/Helpers/track.ts b/packages/gqty/src/Helpers/track.ts deleted file mode 100644 index 0f8362479..000000000 --- a/packages/gqty/src/Helpers/track.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { GQtyError } from '../Error'; -import { debounce } from '../Utils/debounce'; -import { isAnySelectionIncluded } from '../Utils/selectionsInclude'; - -import type { Selection } from '../Selection'; -import type { InnerClientState, SubscriptionsClient } from '../Client'; - -export type TrackCallType = 'initial' | 'cache_change'; - -export interface TrackCallInfo { - type: TrackCallType; -} - -export interface TrackOptions { - onError?: ((err: GQtyError) => void) | undefined; - - /** - * Refetch on initial call - */ - refetch?: boolean; -} - -export interface Track { - (callback: (info: TrackCallInfo) => TData, options?: TrackOptions): { - stop: () => void; - selections: Set; - data: { current: TData | undefined }; - }; -} - -export function createTracker( - innerState: InnerClientState, - subscriptionsClient: SubscriptionsClient | undefined -): { - track: Track; -} { - const { - interceptorManager: { createInterceptor, removeInterceptor }, - eventHandler, - scheduler, - clientCache, - } = innerState; - - function track( - callback: (info: TrackCallInfo) => TData, - { onError, refetch }: TrackOptions = {} - ): { - stop: () => void; - selections: Set; - data: { current: TData | undefined }; - } { - const trackerSelections = new Set(); - - let lastError: unknown; - function callOnError(err: unknown) { - // Don't repeat error calls with the same error instance - if (lastError && err === lastError) return; - lastError = err; - - onError && onError(GQtyError.create(err, callback)); - } - - const data = { current: undefined as TData | undefined }; - - function main(info: TrackCallInfo) { - const interceptor = createInterceptor(); - - interceptor.selectionAddListeners.add((selection) => { - trackerSelections.add(selection); - }); - - const shouldRefetch = refetch && info.type === 'initial'; - - try { - if (shouldRefetch) { - innerState.allowCache = false; - } - - Promise.resolve(callback(info)) - .then((value) => { - data.current = value; - }) - .catch(callOnError); - } catch (err) { - callOnError(err); - } finally { - if (shouldRefetch) { - innerState.allowCache = true; - } - - removeInterceptor(interceptor); - } - } - - const isNotifying = { current: false }; - const debouncedCacheChange = debounce(() => { - isNotifying.current = false; - main({ - type: 'cache_change', - }); - }, 10); - - const unsubErrors = - onError && - scheduler.errors.subscribeErrors((data) => { - switch (data.type) { - case 'new_error': { - if (isAnySelectionIncluded(data.selections, trackerSelections)) { - callOnError(data.newError); - } - return; - } - } - }); - - const unsubCache = eventHandler.onCacheChangeSubscribe(({ selection }) => { - if (isNotifying.current) return; - - if (trackerSelections.has(selection)) { - isNotifying.current = true; - debouncedCacheChange(); - } - }); - - const unsubFetch = eventHandler.onFetchSubscribe((promise) => { - promise.then(({ error, selections, executionResult }) => { - if ( - isNotifying.current || - !isAnySelectionIncluded(trackerSelections, selections) - ) - return; - - error && callOnError(error); - - if (executionResult?.data) { - isNotifying.current = true; - debouncedCacheChange(); - } - }); - }); - - const stopSubscriptions = - subscriptionsClient && - (() => { - subscriptionsClient - .unsubscribe(trackerSelections) - .then((operationsIds) => { - if (eventHandler.hasFetchSubscribers && operationsIds.length) { - const arraySelections = Array.from(trackerSelections); - for (const id of operationsIds) { - eventHandler.sendFetchPromise( - Promise.resolve({ - query: '', - variables: undefined, - cacheSnapshot: clientCache.cache, - selections: arraySelections, - type: 'subscription', - label: `[id=${id}] [unsubscribe]`, - }), - arraySelections - ); - } - } - }); - }); - - main({ - type: 'initial', - }); - - return { - stop() { - unsubCache(); - unsubFetch(); - unsubErrors?.(); - stopSubscriptions?.(); - }, - selections: trackerSelections, - data, - }; - } - - return { track }; -} diff --git a/packages/gqty/src/Helpers/types.ts b/packages/gqty/src/Helpers/types.ts deleted file mode 100644 index f13645ff2..000000000 --- a/packages/gqty/src/Helpers/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type Variables any = never> = - Parameters[0]; - -export type Args any = never> = - Variables; diff --git a/packages/gqty/src/Interceptor/index.ts b/packages/gqty/src/Interceptor/index.ts deleted file mode 100644 index 995d4d4c1..000000000 --- a/packages/gqty/src/Interceptor/index.ts +++ /dev/null @@ -1,114 +0,0 @@ -import type { Selection } from '../Selection'; - -export class Interceptor { - fetchSelections = new Set(); - listening = true; - selectionAddListeners = new Set<(selection: Selection) => void>(); - selectionCacheListeners = new Set<(selection: Selection) => void>(); - selectionCacheRefetchListeners = new Set<(selection: Selection) => void>(); - - addSelection(selection: Selection) { - if (!this.listening) return; - - this.fetchSelections.add(selection); - - for (const listener of this.selectionAddListeners) { - listener(selection); - } - } - - addSelectionCache(selection: Selection) { - if (!this.listening) return; - - for (const listener of this.selectionCacheListeners) { - listener(selection); - } - } - - addSelectionCacheRefetch(selection: Selection) { - if (!this.listening) return; - - for (const listener of this.selectionCacheRefetchListeners) { - listener(selection); - } - } - - removeSelections(selections: Set | Selection[]) { - for (const selection of selections) { - this.fetchSelections.delete(selection); - } - } -} - -export interface InterceptorManager { - interceptors: Set; - globalInterceptor: Interceptor; - createInterceptor: () => Interceptor; - removeInterceptor: (interceptor: Interceptor) => void; - addSelection: (selection: Selection) => void; - addSelectionCache: (selection: Selection) => void; - addSelectionCacheRefetch: (selection: Selection) => void; - addSelections: (selection: Selection[] | Set) => void; - removeSelections: (selections: Selection[] | Set) => void; -} - -export function createInterceptorManager(): InterceptorManager { - const interceptors = new Set(); - - const globalInterceptor = new Interceptor(); - interceptors.add(globalInterceptor); - - function createInterceptor() { - const interceptor = new Interceptor(); - interceptors.add(interceptor); - return interceptor; - } - - function removeInterceptor(interceptor: Interceptor) { - interceptors.delete(interceptor); - } - - function addSelection(selection: Selection) { - for (const interceptor of interceptors) { - interceptor.addSelection(selection); - } - } - - function addSelectionCache(selection: Selection) { - for (const interceptor of interceptors) { - if (interceptor === globalInterceptor) continue; - - interceptor.addSelectionCache(selection); - } - } - - function addSelectionCacheRefetch(selection: Selection) { - for (const interceptor of interceptors) { - if (interceptor === globalInterceptor) continue; - - interceptor.addSelectionCacheRefetch(selection); - } - } - - function addSelections(selection: Selection[] | Set) { - selection.forEach(addSelection); - } - - function removeSelections(selections: Selection[] | Set) { - for (const interceptor of interceptors) { - interceptor.removeSelections(selections); - } - } - - return { - interceptors, - globalInterceptor, - createInterceptor, - removeInterceptor, - addSelection, - addSelectionCache, - addSelectionCacheRefetch, - addSelections, - removeSelections, - }; -} diff --git a/packages/gqty/src/Normalization/index.ts b/packages/gqty/src/Normalization/index.ts deleted file mode 100644 index 9b1d69a85..000000000 --- a/packages/gqty/src/Normalization/index.ts +++ /dev/null @@ -1,343 +0,0 @@ -import type { CacheType } from '../Cache'; -import type { EventHandler } from '../Events'; -import { parseSchemaType, ScalarsEnumsHash, Schema, Type } from '../Schema'; -import type { Selection } from '../Selection'; -import { - deepAssign, - DeepPartial, - isObject, - isObjectWithType, - mergeWith, - ObjectWithType, - PlainObject, -} from '../Utils'; - -type MakeTypenamesNonNullable = { - [K in keyof Obj]: K extends '__typename' ? NonNullable : Obj[K]; -}; - -export interface NormalizationOptions< - ObjectTypesNames extends string = never, - ObjectTypes extends { - [P in ObjectTypesNames]: { - __typename?: P; - }; - } = never -> { - /** - * ### Custom object identifier. - * - * It gives an incoming object with it's ___typename_ and it should return: - * - * - A __string__ if successfully identified - * - '__null__' if it shouldn't be normalized - * - Or '__undefined__', to fallback to either default or custom keyFields - * - * @example - * identifier(obj) { - * switch (obj.__typename) { - * case "User": { - * if (obj.email) { - * return `${obj.__typename}${obj.email}` - * } - * return null; - * } - * default: { - * return; - * } - * } - * } - * - */ - identifier?: ( - obj: MakeTypenamesNonNullable> - ) => string | null | undefined | void; - /** - * ### Auto-fetch & object identifier customization - * - * Keep in mind that `gqty` already checks your schema and looks for the fields **id** or **__id** - * and it add thems **automatically**. - * - * Set the __id's__ of any object type in your schema. - * - * __IMPORTANT__: Please make sure to only put [`Scalars`](https://graphql.org/learn/schema/#scalar-types) - * without any variable needed as keyFields - * - * @example - * keyFields: { - * User: ["email"] - * } - */ - keyFields?: { - [P in ObjectTypesNames]?: - | Array> - | null - | undefined; - }; -} - -function toString(v: unknown): string | null { - switch (typeof v) { - case 'string': - return v; - case 'number': - case 'bigint': - return v + ''; - case 'boolean': - return v ? '1' : '0'; - case 'object': - return v && JSON.stringify(v); - default: - return null; - } -} - -export interface NormalizationHandler { - getId: (obj: ObjectWithType) => string | undefined | null; - getCacheFromSelection: ( - selection: Selection, - notFoundValue: NotFound, - cache: CacheType - ) => Value | NotFound; - scanNormalizedObjects: (obj: object) => void; - normalizedCache: Record; - onObjectMergeConflict: ( - currentValue: object, - incomingValue: object - ) => object | void; - schemaKeys: Record; -} - -export function createNormalizationHandler( - options: - | NormalizationOptions> - | undefined - | boolean, - eventHandler: EventHandler | undefined, - schema: Readonly, - scalarsEnumsHash: ScalarsEnumsHash -): NormalizationHandler | undefined { - if (!options) return; - - const { identifier, keyFields } = isObject(options) - ? options - : ({} as NormalizationOptions); - - const schemaKeys: Record = keyFields - ? Object.assign({}, keyFields) - : {}; - - const idSchemaKey: ['id'] = ['id']; - const _idSchemaKey: ['_id'] = ['_id']; - - function addIdIfValid( - idKey: string, - typeName: string, - schemaType: Record, - idsList: string[] - ) { - const type = schemaType[idKey] as Type | undefined; - if (!type || type.__args) return; - - const { pureType, isArray } = parseSchemaType(type.__type); - if (isArray || !scalarsEnumsHash[pureType]) return; - - schemaKeys[typeName] = idsList; - - return true; - } - - for (const [typeName, schemaType] of Object.entries(schema)) { - const existingKeyFields = schemaKeys[typeName]; - if ( - !isObject(schemaType) || - Array.isArray(existingKeyFields) || - existingKeyFields === null || - typeName === 'query' || - typeName === 'mutation' || - typeName === 'subscription' || - !schemaType.__typename - ) { - continue; - } - - addIdIfValid('id', typeName, schemaType, idSchemaKey) || - addIdIfValid('_id', typeName, schemaType, _idSchemaKey); - } - - function getId(obj: ObjectWithType): string | undefined | null { - if (identifier) { - const result = identifier(obj as never); - - if (result !== undefined) return result; - } - - const keys = schemaKeys[obj.__typename]; - - if (!keys) return; - - let id: string = ''; - - for (const key of keys) { - if (typeof key !== 'string') continue; - - const value = toString(obj[key]); - if (value !== null) id += value; - } - - return id && obj.__typename + id; - } - - const normalizedCache: Record = {}; - - const normalizedSelections = new Map>(); - - function getCacheFromSelection( - selection: Selection, - notFoundValue: NotFound, - cache: CacheType - ): Value | NotFound { - let container: PlainObject | undefined; - let containerKey: string | number | undefined; - - let currentValue: unknown = cache; - - let currentSelection: Selection; - - function getNormalized() { - let id: string | undefined | null; - if (isObjectWithType(currentValue) && (id = getId(currentValue))) { - let selectionsSet = normalizedSelections.get(id); - if (!selectionsSet) { - selectionsSet = new Set(); - normalizedSelections.set(id, selectionsSet); - } - - selectionsSet.add(currentSelection); - - let normalizedObject: PlainObject | undefined; - - if ( - (normalizedObject = normalizedCache[id]) && - normalizedObject !== (currentValue as unknown) - ) { - if (container && containerKey != null) { - container[containerKey] = normalizedObject; - } - - currentValue = normalizedObject; - } - } - } - - for (const selectionValue of selection.selectionsList) { - if (selectionValue.key === '$on') continue; - currentSelection = selectionValue; - const key = selectionValue.alias || selectionValue.key; - - if (isObject(currentValue)) { - getNormalized(); - - //@ts-expect-error - container = currentValue; - containerKey = key; - - currentValue = - //@ts-expect-error - currentValue[key]; - } else return notFoundValue; - } - - getNormalized(); - - return currentValue === undefined ? notFoundValue : (currentValue as Value); - } - - function scanNormalizedObjects(obj: object) { - const pendingObjects = new Set([obj]); - - for (const container of pendingObjects) { - for (const value of Object.values(container)) { - if (Array.isArray(value)) { - pendingObjects.add(value); - } else if (isObjectWithType(value)) { - const id = getId(value); - let data = value; - if (id) { - const currentValueNormalizedCache = normalizedCache[id]; - - if (currentValueNormalizedCache !== (value as unknown)) { - if (currentValueNormalizedCache) { - normalizedCache[id] = data = deepAssign( - {}, - [currentValueNormalizedCache, value], - (targetValue, sourceValue): object | void => { - if ( - Array.isArray(targetValue) && - Array.isArray(sourceValue) && - targetValue.length !== sourceValue.length - ) { - return sourceValue; - } - } - ); - } else { - normalizedCache[id] = value as any; - } - - if (eventHandler) { - const selections = normalizedSelections.get(id); - - if (selections) { - for (const selection of selections) { - eventHandler.sendCacheChange({ - data, - selection, - }); - } - } - } - } else continue; - } - - pendingObjects.add(value); - } - } - } - } - - function onObjectMergeConflict( - currentValue: object, - incomingValue: object - ): object | void { - if (isObjectWithType(incomingValue) && isObjectWithType(currentValue)) { - const idNewValue = getId(incomingValue); - if (!idNewValue) return; - - const idCurrentValue = getId(currentValue); - - if (idNewValue === idCurrentValue) { - const currentObject = normalizedCache[idNewValue]; - - if (currentObject !== (incomingValue as unknown)) { - return (normalizedCache[idNewValue] = mergeWith( - {}, - currentObject, - incomingValue, - onObjectMergeConflict - )); - } - return incomingValue; - } - } - } - - return { - getId, - getCacheFromSelection, - scanNormalizedObjects, - normalizedCache, - onObjectMergeConflict, - schemaKeys, - }; -} diff --git a/packages/gqty/src/QueryBuilder/buildQuery.ts b/packages/gqty/src/QueryBuilder/buildQuery.ts deleted file mode 100644 index cb4ba720f..000000000 --- a/packages/gqty/src/QueryBuilder/buildQuery.ts +++ /dev/null @@ -1,215 +0,0 @@ -import type { Selection } from '../Selection'; -import { set } from '../Utils'; -import { serializeVariables } from '../Utils/cachedJSON'; - -interface SelectionTree { - [P: string]: SelectionTree | true; -} - -const stringSelectionTree = (v: SelectionTree) => { - const treeEntries = Object.entries(v); - return treeEntries.reduce((acum, [key, value], index) => { - if (typeof value === 'object') { - acum += key + '{'; - - acum += stringSelectionTree(value); - - acum += '}'; - } else { - acum += key + (index !== treeEntries.length - 1 ? ' ' : ''); - } - return acum; - }, ''); -}; - -interface BuiltQuery { - query: string; - variables: Record | undefined; - cacheKey: string; -} - -export function createQueryBuilder() { - const queryCache: Record = {}; - - return function buildQuery( - selections: Set | Selection[], - { - type, - }: { - type: 'query' | 'mutation' | 'subscription'; - }, - normalization?: boolean, - isGlobalCache?: boolean - ): BuiltQuery { - let variableId = 1; - - const selectionTree: SelectionTree = {}; - const variablesMap = new Map(); - const variableTypes: Record = {}; - const variablesMapKeyValue: Record = {}; - const [{ operationName }] = selections; - - if (normalization) { - const selectionsSet = new Set(); - - for (const selection of selections) { - if (selection.cofetchSelections) { - for (const coFetchSelection of selection.cofetchSelections) { - selectionsSet.add(coFetchSelection); - } - } - - selectionsSet.add(selection); - } - selections = selectionsSet; - } - - let builtQuery: BuiltQuery | undefined; - let idAcum = operationName ?? ''; - - if (isGlobalCache) { - for (const { id } of selections) idAcum += id; - - if ((builtQuery = queryCache[idAcum])) return builtQuery; - } - - for (const { noIndexSelections } of selections) { - if (noIndexSelections[0]?.key !== type) { - throw new Error( - `Expected root selection of type "${type}", found "${noIndexSelections[0].key}".` - ); - } - - const selectionBranches: string[][] = []; - - function createSelectionBranch( - selections: readonly Selection[], - initialValue: string[] = [] - ) { - return selections.reduce( - (acum, { args, alias, key, argTypes, unions }, index) => { - if (key === '$on') return acum; - - const argsLength = args ? Object.keys(args).length : 0; - - const selectionKey = alias ? alias + ':' + key : key; - - let leafValue: string; - - if (args && argTypes && argsLength) { - leafValue = - selectionKey + - '(' + - Object.entries(args).reduce((acum, [key, value], index) => { - const variableMapKey = - argTypes[key] + '-' + key + '-' + JSON.stringify(value); - - variablesMapKeyValue[variableMapKey] = value; - - const variableMapValue = variablesMap.get(variableMapKey); - - if (variableMapValue) { - acum += key + ':$' + variableMapValue; - } else { - const newVariableValue = key + variableId++; - const newVariableType = argTypes[key]; - - variableTypes[newVariableValue] = newVariableType; - variablesMap.set(variableMapKey, newVariableValue); - - acum += key + ':$' + newVariableValue; - } - - if (index < argsLength - 1) { - acum += ' '; - } - - return acum; - }, '') + - ')'; - } else { - leafValue = selectionKey + ''; - } - - if (unions) { - for (const union of unions.slice(1)) { - const newAcum = [...acum, '...on ' + union, leafValue]; - - selectionBranches.push( - createSelectionBranch(selections.slice(index + 1), newAcum) - ); - } - - acum.push('...on ' + unions[0], leafValue); - } else { - acum.push(leafValue); - } - - return acum; - }, - initialValue - ); - } - - selectionBranches.push(createSelectionBranch(noIndexSelections)); - - for (const branch of selectionBranches) { - if (normalization) { - for (let i = 2; i < branch.length; ++i) { - const typenameBranch = branch.slice(0, i); - if (typenameBranch[typenameBranch.length - 1]?.startsWith('...')) { - continue; - } else typenameBranch.push('__typename'); - - set(selectionTree, typenameBranch, true); - } - } - - set(selectionTree, branch, true); - } - } - - let variables: Record | undefined; - - if (variablesMap.size) { - const variablesObj: Record = {}; - variables = variablesObj; - - variablesMap.forEach((value, key) => { - variablesObj[value] = variablesMapKeyValue[key]; - }); - } - - let query = stringSelectionTree(selectionTree); - - const variableTypesEntries = Object.entries(variableTypes); - - if (variableTypesEntries.length) { - query = query.replace( - type, - type + - '(' + - variableTypesEntries.reduce((acum, [variableName, type]) => { - acum += '$' + variableName + ':' + type; - return acum; - }, '') + - ')' - ); - } - - if (operationName) { - query = query.replace(type, type + ' ' + operationName); - } - - builtQuery = { - query, - variables, - cacheKey: - idAcum || query + (variables ? serializeVariables(variables) : ''), - }; - - if (isGlobalCache) queryCache[idAcum] = builtQuery; - - return builtQuery; - }; -} diff --git a/packages/gqty/src/QueryBuilder/index.ts b/packages/gqty/src/QueryBuilder/index.ts index 29b6a4304..baac52d25 100644 --- a/packages/gqty/src/QueryBuilder/index.ts +++ b/packages/gqty/src/QueryBuilder/index.ts @@ -1 +1,147 @@ -export * from './buildQuery'; +import set from 'just-safe-set'; +import hash from 'object-hash'; +import type { Cache } from '../Cache'; +import type { QueryPayload } from '../Schema'; +import type { Selection } from '../Selection'; + +export type QueryBuilderOptions = { + batchWindow: number; + batchStrategy: 'debounce' | 'throttle'; + cache: Cache; +}; + +export type BuiltQuery = QueryPayload<{ + type: 'query' | 'mutation' | 'subscription'; + hash: string; +}>; + +type SelectionTreeLeaf = Record; +type SelectionTreeNode = { + [key: string]: SelectionTreeNode | SelectionTreeLeaf; +}; +type SelectionTreeRoot = Record< + 'query' | 'mutation' | 'subscription', + SelectionTreeNode +>; + +type SelectionBranchEntry = [keyof SelectionTreeRoot, SelectionTreeNode]; + +const stringifySelectionTree = (tree: SelectionTreeNode): string => + Object.entries(tree).reduce((prev, [key, value]) => { + const query = + typeof value === 'object' + ? `${key}{${stringifySelectionTree(value as SelectionTreeNode)}}` + : key; + + // TODO: buildQuery.test.ts wants exact output of `graphql` parse, + // but this is not future proof and unnecessarily hits the performance. + if (!prev || prev.endsWith('}') || prev.endsWith('{')) { + return `${prev}${query}`; + } else { + return `${prev} ${query}`; + } + }, ''); + +export const buildQuery = ( + selections: Set, + operationName?: string +): BuiltQuery[] => { + const root = {} as SelectionTreeRoot; + const variables = new Map(); + const inputDedupe = new Map(); + for (const { ancestry } of selections) { + set( + root, + ancestry.reduce((prev, s) => { + if ( + typeof s.key === 'symbol' || + typeof s.key === 'number' || + s.key === '$on' + ) { + return prev; + } + + if (s.isUnion) { + return [...prev, `...on ${s.key}`]; + } + + const key = s.alias ? `${s.alias}:${s.key}` : s.key; + + const input = s.input; + if (input) { + if (!inputDedupe.has(input)) { + const queryInputs = Object.entries(input.values) + .map(([key, value]) => { + const index = variables.size + 1; + + variables.set(`v${index}`, { value, type: input.types[key] }); + + return `${key}:$v${index}`; + }) + .join(' '); + + inputDedupe.set(input, `${key}(${queryInputs})`); + } + + return [...prev, inputDedupe.get(input)!]; + } + + return [...prev, key]; + }, []), + true + ); + } + + // Split top level fields of subscriptions + const branches = Object.entries(root).reduce( + (prev, [key, value]) => { + if (key !== 'subscription') { + return [...prev, [key, value] as SelectionBranchEntry]; + } + + return [ + ...prev, + ...Object.entries(value).map( + ([topField, branch]) => ['subscription', { [topField]: branch }] + ), + ]; + }, + [] + ); + + return branches.map(([key, branch]) => { + const rootKey = key as keyof SelectionTreeRoot; + let query = stringifySelectionTree({ [rootKey]: branch }); + + // Query variables + if (variables.size > 0) { + query = query.replace( + rootKey, + `${rootKey}(${[...variables.entries()] + .map(([, { type }], index) => `$v${index + 1}:${type}`) + .join('')})` + ); + } + + // Operation name + if (operationName) { + query = query.replace(rootKey, `${rootKey} ${operationName}`); + } + + return { + query, + variables: + variables.size > 0 + ? [...variables].reduce>( + (prev, [key, { value }]) => ((prev[key] = value), prev), + {} + ) + : undefined, + operationName, + extensions: { + type: rootKey, + hash: hash(query), // For query dedupe and cache keys + }, + }; + }); +}; diff --git a/packages/gqty/src/Scheduler/index.ts b/packages/gqty/src/Scheduler/index.ts deleted file mode 100644 index 959c9cb25..000000000 --- a/packages/gqty/src/Scheduler/index.ts +++ /dev/null @@ -1,263 +0,0 @@ -import type { GQtyError } from '../Error'; -import type { InterceptorManager } from '../Interceptor'; -import { Selection, SelectionType } from '../Selection'; -import { createDeferredPromise, DeferredPromise } from '../Utils'; -import { debounce } from '../Utils/debounce'; - -export type SchedulerPromiseValue = { - error?: GQtyError; - data?: unknown; - selections: Set; -}; -export type ResolvingLazyPromise = DeferredPromise; -export type ResolvedLazyPromise = Promise; -export type ResolveSubscriptionFn = ( - promise: ResolvedLazyPromise, - selection: Selection -) => void; -export type ErrorSubscriptionEvent = - | { - type: 'new_error'; - newError: GQtyError; - selections: Selection[]; - isLastTry: boolean; - } - | { - type: 'errors_clean'; - selectionsCleaned: Selection[]; - } - | { - type: 'retry'; - retryPromise: Promise; - selections: Set; - }; -export type ErrorSubscriptionFn = (event: ErrorSubscriptionEvent) => void; -export type IsFetchingSubscriptionFn = (isFetching: boolean) => void; - -export interface Scheduler { - resolving: DeferredPromise | null; - subscribeResolve: ( - fn: (promise: Promise, selection: Selection) => void - ) => () => void; - errors: { - map: Map; - subscribeErrors: (fn: ErrorSubscriptionFn) => () => void; - triggerError: ( - newError: GQtyError, - selections: Selection[], - isLastTry: boolean - ) => void; - removeErrors: (selectionsCleaned: Selection[]) => void; - retryPromise: ( - retryPromise: Promise, - selections: Set - ) => void; - }; - isFetching: boolean; - pendingSelectionsGroups: Set>; - pendingSelectionsGroupsPromises: Map< - Set, - Promise - >; - getResolvingPromise( - selections: Selection | Set - ): ResolvedLazyPromise | void; -} - -export const createScheduler = ( - { globalInterceptor }: InterceptorManager, - resolveSchedulerSelections: (selections: Set) => Promise, - catchSelectionsTimeMS: number -) => { - const resolveListeners = new Set(); - const notifyResolves = ( - promise: ResolvedLazyPromise, - selection: Selection - ) => { - for (const notify of resolveListeners) { - notify(promise, selection); - } - }; - - const errorsListeners = new Set(); - const errorsMap = new Map(); - const notifyErrors = (event: ErrorSubscriptionEvent) => { - for (const notify of errorsListeners) { - notify(event); - } - }; - - const pendingSelectionsGroups = new Set>(); - const pendingSelectionsGroupsPromises = new Map< - Set, - ResolvedLazyPromise - >(); - const selectionsOnTheFly = new Set(); - const selectionsWithFinalErrors = new Set(); - - const scheduler: Scheduler = { - resolving: null, - subscribeResolve: (fn) => { - resolveListeners.add(fn); - - return () => { - resolveListeners.delete(fn); - }; - }, - errors: { - map: errorsMap, - subscribeErrors: (fn) => { - errorsListeners.add(fn); - - return () => { - errorsListeners.delete(fn); - }; - }, - triggerError: (newError, selections, isLastTry) => { - if (!selections.length) return; - - for (const selection of selections) { - errorsMap.set(selection, newError); - } - - notifyErrors({ - type: 'new_error', - newError, - selections, - isLastTry, - }); - }, - removeErrors: (selectionsCleaned: Selection[]) => { - if (errorsMap.size === 0) return; - - for (const selection of selectionsCleaned) { - errorsMap.delete(selection); - selectionsWithFinalErrors.delete(selection); - } - - notifyErrors({ - type: 'errors_clean', - selectionsCleaned, - }); - }, - retryPromise: (retryPromise, selections) => { - pendingSelectionsGroups.add(selections); - pendingSelectionsGroupsPromises.set(selections, retryPromise); - - retryPromise.finally(() => { - pendingSelectionsGroups.delete(selections); - pendingSelectionsGroupsPromises.delete(selections); - }); - - notifyErrors({ - type: 'retry', - retryPromise, - selections, - }); - }, - }, - isFetching: false, - pendingSelectionsGroups, - pendingSelectionsGroupsPromises, - getResolvingPromise: (selections) => { - if (selections instanceof Selection) { - for (const [group, promise] of pendingSelectionsGroupsPromises) { - if (group.has(selections)) return promise; - } - } else { - for (const selection of selections) { - for (const [group, promise] of pendingSelectionsGroupsPromises) { - if (group.has(selection)) return promise; - } - } - } - - return; - }, - }; - - let resolvingPromise: ResolvingLazyPromise | null = null; - - const fetchSelections = debounce((lazyPromise: ResolvingLazyPromise) => { - resolvingPromise = null; - - selectionsOnTheFly.clear(); - pendingSelectionsGroups.delete(selectionsOnTheFly); - pendingSelectionsGroupsPromises.delete(selectionsOnTheFly); - - const selectionsToFetch = new Set(globalInterceptor.fetchSelections); - pendingSelectionsGroups.add(selectionsToFetch); - pendingSelectionsGroupsPromises.set(selectionsToFetch, lazyPromise.promise); - - resolveSchedulerSelections(selectionsToFetch).then( - () => { - pendingSelectionsGroups.delete(selectionsToFetch); - pendingSelectionsGroupsPromises.delete(selectionsToFetch); - if (scheduler.resolving === lazyPromise) { - scheduler.resolving = null; - } - - lazyPromise.resolve({ selections: selectionsToFetch }); - }, - (error) => { - pendingSelectionsGroups.delete(selectionsToFetch); - pendingSelectionsGroupsPromises.delete(selectionsToFetch); - if (scheduler.resolving === lazyPromise) { - scheduler.resolving = null; - } - - lazyPromise.resolve({ - error, - selections: selectionsToFetch, - }); - } - ); - }, catchSelectionsTimeMS); - - function addSelectionToScheduler(selection: Selection, notifyResolve = true) { - if (selection.type === SelectionType.Subscription) { - notifyResolve = false; - } - - { - const promise = scheduler.getResolvingPromise(selection); - if (notifyResolve && promise) { - notifyResolves(promise, selection); - } - } - - const lazyPromise = - resolvingPromise ?? createDeferredPromise(); - if (resolvingPromise === null) { - lazyPromise.promise.then(({ error }) => { - if (error) console.error(error); - }); - - resolvingPromise = lazyPromise; - scheduler.resolving = lazyPromise; - } - - pendingSelectionsGroups.add(selectionsOnTheFly); - selectionsOnTheFly.add(selection); - pendingSelectionsGroupsPromises.set( - selectionsOnTheFly, - lazyPromise.promise - ); - - if (notifyResolve) { - notifyResolves(lazyPromise.promise, selection); - } - - fetchSelections(lazyPromise); - } - - globalInterceptor.selectionAddListeners.add((selection) => { - addSelectionToScheduler(selection); - }); - - globalInterceptor.selectionCacheRefetchListeners.add((selection) => - addSelectionToScheduler(selection, false) - ); - - return scheduler; -}; diff --git a/packages/gqty/src/Schema/types.ts b/packages/gqty/src/Schema/types.ts index 7851e4098..8f5cf1535 100644 --- a/packages/gqty/src/Schema/types.ts +++ b/packages/gqty/src/Schema/types.ts @@ -24,11 +24,9 @@ export interface Scalars { export type ScalarsEnumsHash = Record; -export interface FetchOptions extends Omit {} - export type QueryFetcher> = ( payload: QueryPayload, - fetchOptions?: FetchOptions + fetchOptions?: Omit ) => Promise> | ExecutionResult; export type QueryPayload< @@ -93,13 +91,8 @@ export const parseSchemaType = memoize( } ); -export type DeepPartial = T extends Function - ? T - : T extends Array - ? _DeepPartialArray - : T extends object - ? _DeepPartialObject - : T | undefined; - -interface _DeepPartialArray extends Array> {} -type _DeepPartialObject = { [P in keyof T]?: DeepPartial }; +export type GeneratedSchemaObject< + T extends Record = Record +> = T & { + __typename?: string; +}; diff --git a/packages/gqty/src/Selection/SelectionManager.ts b/packages/gqty/src/Selection/SelectionManager.ts deleted file mode 100644 index 0ad2cb1d8..000000000 --- a/packages/gqty/src/Selection/SelectionManager.ts +++ /dev/null @@ -1,182 +0,0 @@ -import { sha1 } from '@gqty/utils/sha1'; - -import { serializeVariables } from '../Utils/cachedJSON'; -import { Selection, SelectionConstructorArgs } from './selection'; - -export function separateSelectionTypes( - selections: Selection[] | Set -) { - /** Group selections by root type and operation names. */ - const selectionBranches = new Map(); - - for (const selection of selections) { - const { type, operationName } = selection; - const branchKey = `${type}.${operationName}`; - - if (!selectionBranches.has(branchKey)) { - selectionBranches.set(branchKey, []); - } - - selectionBranches.get(branchKey)!.push(selection); - } - - return [...selectionBranches.values()]; -} - -export interface GetSelection { - ( - options: Pick< - SelectionConstructorArgs, - 'key' | 'prevSelection' | 'args' | 'argTypes' | 'type' | 'unions' - > - ): Selection; -} - -export interface SelectionManager { - getSelection: GetSelection; - restore(backup: unknown): void; - backup(): SelectionsBackup; -} - -export type VariableHashTuple = [ - serializedVariables: string, - variablesStringId: string -]; -const selectionsBackupVersion = 'v1'; - -function isSelectionsBackup( - selectionsBackup?: unknown -): selectionsBackup is SelectionsBackup { - return ( - Array.isArray(selectionsBackup) && - Array.isArray(selectionsBackup[0]) && - selectionsBackup[1] === selectionsBackupVersion - ); -} - -export type SelectionsBackup = [VariableHashTuple[], string]; - -let uniqueSelectionId = 0; - -export function createSelectionManager(): SelectionManager { - const selectionCache = new Map< - /** - * cacheKey - */ - string, - Selection - >(); - - const stringsHash: Record = {}; - - let restoredBackup: SelectionsBackup | undefined; - - function getSerializedVariablesId(variables: Record) { - const serializedVariables = serializeVariables(variables); - - let hashId: string; - - if ((hashId = stringsHash[serializedVariables]) === undefined) { - hashId = stringsHash[serializedVariables] = sha1( - serializedVariables - ).slice(0, 5); - - if (restoredBackup) restoredBackup[0].push([serializedVariables, hashId]); - } - - return hashId; - } - - function restore(backup: unknown) { - if (!isSelectionsBackup(backup)) return; - - restoredBackup = backup; - - for (const [stringKey, hashIdValue] of backup[0]) { - stringsHash[stringKey] = hashIdValue; - } - } - - function backup(): SelectionsBackup { - if (restoredBackup) { - restoredBackup[0] = []; - - return restoredBackup; - } - - const backup: SelectionsBackup = [[], selectionsBackupVersion]; - - for (const serializedVariables in stringsHash) { - backup[0].push([serializedVariables, stringsHash[serializedVariables]]); - } - - return (restoredBackup = backup); - } - - function getVariableAlias( - key: string | number, - variables: Record, - variableTypes: Record - ) { - return ( - key + - '_' + - getSerializedVariablesId(variableTypes) + - '_' + - getSerializedVariablesId(variables) - ); - } - - function getSelection({ - key, - prevSelection, - args, - argTypes, - type, - unions, - }: Pick< - SelectionConstructorArgs, - 'key' | 'prevSelection' | 'args' | 'argTypes' | 'type' | 'unions' - >) { - let alias: string | undefined; - let cacheKey = key + ''; - if (args && argTypes) { - alias = getVariableAlias(key, args, argTypes); - cacheKey = alias; - } - - if (prevSelection) { - cacheKey = prevSelection.pathString + '.' + cacheKey; - } - - if (unions?.length) { - cacheKey += ';' + unions.join(';'); - } - - let selection = selectionCache.get(cacheKey); - - if (selection == null) { - selection = new Selection({ - key, - prevSelection, - args, - argTypes, - alias, - type, - unions, - id: ++uniqueSelectionId, - }); - selectionCache.set(cacheKey, selection); - } else if (args) { - selection.args = args; - } - - return selection; - } - - return { - getSelection, - restore, - backup, - }; -} diff --git a/packages/gqty/src/Selection/index.ts b/packages/gqty/src/Selection/index.ts index 39637841b..c839b0122 100644 --- a/packages/gqty/src/Selection/index.ts +++ b/packages/gqty/src/Selection/index.ts @@ -1,2 +1,148 @@ -export * from './selection'; -export type { SelectionManager } from './SelectionManager'; +import memoize from 'just-memoize'; +import hash from 'object-hash'; +import { GQtyError } from '../Error'; + +const createSymbol = Symbol(); + +const aliasGenerator = { + seq: 0, + map: new WeakMap(), + hash: memoize((...args: unknown[]) => hash(args).replace(/^\d+/, '')), + get(key: string | number, input: Record) { + const hash = this.hash({ key, ...input }); + if (hash) return hash; + + const seq = this.map.get(input) ?? this.seq++; + + // Sane use cases shouldn't hit this + if (seq > Number.MAX_SAFE_INTEGER) { + throw new GQtyError(`selection alias fallback overflow`); + } + + this.map.set(input, seq); + + return `alias${seq}`; + }, +}; + +export type SelectionOptions = { + readonly alias?: string; + readonly aliasLength?: number; + readonly input?: SelectionInput; + readonly isUnion?: boolean; + readonly parent?: Selection; +}; + +export type SelectionInput = { + readonly types: Record; + readonly values: Record; +}; + +export type SelectionSnapshot = Array< + [string | number, SelectionOptions] | [string | number] +>; + +export class Selection { + readonly alias?: string; + readonly cacheKeys: string[] = []; + readonly children = new Map(); + readonly input?: SelectionInput; + readonly parent?: Selection; + readonly root: Selection; + + /** Indicates current selection being a inteface/union key. */ + readonly isUnion: boolean; + + constructor( + readonly key: string | number, + { input, alias, isUnion = false, parent }: SelectionOptions = {}, + token?: symbol + ) { + if (token !== createSymbol) { + throw new GQtyError(`Use Selection.createRoot() instead.`); + } + + this.alias = alias; + this.input = input; + this.isUnion = isUnion; + this.parent = parent; + this.root = parent?.root ?? this; + + if (typeof key === 'number' || key === '$on' || parent?.key === '$on') { + this.cacheKeys = parent?.cacheKeys ?? []; + } else { + this.cacheKeys = (parent?.cacheKeys ?? []).concat(this.alias || key); + } + } + + /** The selection path from root the leaf as an array. */ + get ancestry() { + const ancestry: Selection[] = []; + let current: Selection | undefined = this; + + while (current) { + ancestry.unshift(current); + current = current.parent; + } + + return ancestry; + } + + static createRoot(key: string) { + return new Selection(key, {}, createSymbol); + } + + getChild(key: string | number, options?: SelectionOptions) { + const alias = + options?.alias ?? + (options?.input + ? aliasGenerator + .get(key, options.input) + .slice(0, options.aliasLength ?? 5) + : undefined); + const hashKey = alias ?? key.toString(); + + const selection = + this.children.get(hashKey) ?? + new Selection(key, { ...options, alias, parent: this }, createSymbol); + + this.children.set(hashKey, selection); + + return selection; + } + + getLeafNodes(this: Selection) { + const result = new Set(); + const stack = new Set([this]); + for (const selection of stack) { + if (selection.children.size === 0) { + result.add(selection); + } else { + for (const [, child] of selection.children) stack.add(child); + } + } + + return result; + } + + toJSON(): SelectionSnapshot { + return this.ancestry.map(({ key, isUnion, input }) => { + if (isUnion) { + return [key, { isUnion }]; + } else if (input) { + return [key, { input }]; + } else { + return [key]; + } + }); + } + + fromJSON(this: Selection, json: SelectionSnapshot) { + let node = this; + for (const [key, options] of json) { + node = node.getChild(key, options); + } + + return node; + } +} diff --git a/packages/gqty/src/Utils/cachedJSON.ts b/packages/gqty/src/Utils/cachedJSON.ts deleted file mode 100644 index 2e6f73282..000000000 --- a/packages/gqty/src/Utils/cachedJSON.ts +++ /dev/null @@ -1,11 +0,0 @@ -const serializedVariablesCache = new WeakMap(); - -export function serializeVariables(variables: Record): string { - let serializedVariables: string; - if ((serializedVariables = serializedVariablesCache.get(variables)!)) { - return serializedVariables; - } - serializedVariables = JSON.stringify(variables); - serializedVariablesCache.set(variables, serializedVariables); - return serializedVariables; -} diff --git a/packages/gqty/src/Utils/cycle.ts b/packages/gqty/src/Utils/cycle.ts deleted file mode 100644 index 9878731b4..000000000 --- a/packages/gqty/src/Utils/cycle.ts +++ /dev/null @@ -1,170 +0,0 @@ -//@ts-nocheck - -/* - cycle.js - 2013-02-19 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. -*/ - -/*jslint evil: true, regexp: true */ - -/*members $ref, apply, call, decycle, hasOwnProperty, length, prototype, push, - retrocycle, stringify, test, toString -*/ - -export function decycle(object: T): T { - 'use strict'; - - // Make a deep copy of an object or array, assuring that there is at most - // one instance of each object or array in the resulting structure. The - // duplicate references (which might be forming cycles) are replaced with - // an object of the form - // {$ref: PATH} - // where the PATH is a JSONPath string that locates the first occurance. - // So, - // var a = []; - // a[0] = a; - // return JSON.stringify(JSON.decycle(a)); - // produces the string '[{"$ref":"$"}]'. - - // JSONPath is used to locate the unique object. $ indicates the top level of - // the object or array. [NUMBER] or [STRING] indicates a child member or - // property. - - var objects = [], // Keep a reference to each unique object or array - paths = []; // Keep the path to each unique object or array - - return (function derez(value, path) { - // The derez recurses through the object, producing the deep copy. - - var i, // The loop counter - name, // Property name - nu; // The new object or array - - // typeof null === 'object', so go on if this value is really an object but not - // one of the weird builtin objects. - - if ( - typeof value === 'object' && - value !== null && - !(value instanceof Boolean) && - !(value instanceof Date) && - !(value instanceof Number) && - !(value instanceof RegExp) && - !(value instanceof String) - ) { - // If the value is an object or array, look to see if we have already - // encountered it. If so, return a $ref/path object. This is a hard way, - // linear search that will get slower as the number of unique objects grows. - - for (i = 0; i < objects.length; i += 1) { - if (objects[i] === value) { - return { $ref: paths[i] }; - } - } - - // Otherwise, accumulate the unique value and its path. - - objects.push(value); - paths.push(path); - - // If it is an array, replicate the array. - - if (Object.prototype.toString.apply(value) === '[object Array]') { - nu = []; - for (i = 0; i < value.length; i += 1) { - nu[i] = derez(value[i], path + '[' + i + ']'); - } - } else { - // If it is an object, replicate the object. - - nu = {}; - for (name in value) { - if (Object.prototype.hasOwnProperty.call(value, name)) { - nu[name] = derez( - value[name], - path + '[' + JSON.stringify(name) + ']' - ); - } - } - } - return nu; - } - return value; - })(object, '$'); -} - -export function retrocycle($: T) { - 'use strict'; - - // Restore an object that was reduced by decycle. Members whose values are - // objects of the form - // {$ref: PATH} - // are replaced with references to the value found by the PATH. This will - // restore cycles. The object will be mutated. - - // The eval function is used to locate the values described by a PATH. The - // root object is kept in a $ variable. A regular expression is used to - // assure that the PATH is extremely well formed. The regexp contains nested - // * quantifiers. That has been known to have extremely bad performance - // problems on some browsers for very long strings. A PATH is expected to be - // reasonably short. A PATH is allowed to belong to a very restricted subset of - // Goessner's JSONPath. - - // So, - // var s = '[{"$ref":"$"}]'; - // return JSON.retrocycle(JSON.parse(s)); - // produces an array containing a single element which is the array itself. - - var px = - /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/; - - (function rez(value) { - // The rez function walks recursively through the object looking for $ref - // properties. When it finds one that has a value that is a path, then it - // replaces the $ref object with a reference to the value that is found by - // the path. - - var i, item, name, path; - - if (value && typeof value === 'object') { - if (Object.prototype.toString.apply(value) === '[object Array]') { - for (i = 0; i < value.length; i += 1) { - item = value[i]; - if (item && typeof item === 'object') { - path = item.$ref; - if (typeof path === 'string' && px.test(path)) { - value[i] = eval(path); - } else { - rez(item); - } - } - } - } else { - for (name in value) { - if (typeof value[name] === 'object') { - item = value[name]; - if (item) { - path = item.$ref; - if (typeof path === 'string' && px.test(path)) { - value[name] = eval(path); - } else { - rez(item); - } - } - } - } - } - } - })($); - return $; -} diff --git a/packages/gqty/src/Utils/debounce.ts b/packages/gqty/src/Utils/debounce.ts deleted file mode 100644 index 0937df876..000000000 --- a/packages/gqty/src/Utils/debounce.ts +++ /dev/null @@ -1,21 +0,0 @@ -export function debounce( - fn: (...args: T) => void, - delay: number -) { - let timeout: NodeJS.Timeout | string | number | undefined = undefined; - - return function debounced(...args: Parameters) { - const execFetch = () => { - timeout = undefined; - fn(...args); - }; - if (timeout !== undefined) clearTimeout(timeout); - - if (delay < 0) { - execFetch(); - timeout = undefined; - } else { - timeout = setTimeout(execFetch, delay); - } - }; -} diff --git a/packages/gqty/src/Utils/index.ts b/packages/gqty/src/Utils/index.ts index 6a3bf7c2e..2bd81a539 100644 --- a/packages/gqty/src/Utils/index.ts +++ b/packages/gqty/src/Utils/index.ts @@ -5,9 +5,5 @@ export function isEmptyObject(obj: object) { return true; } -export * from './debounce'; export * from './object'; -export * from './cycle'; -export { mergeWith } from '@gqty/utils/mergeWith'; -export * from './selectionsInclude'; export * from './promise'; diff --git a/packages/gqty/src/Utils/object.ts b/packages/gqty/src/Utils/object.ts index 4993fc682..ff0ed6c21 100644 --- a/packages/gqty/src/Utils/object.ts +++ b/packages/gqty/src/Utils/object.ts @@ -47,96 +47,3 @@ export function deepAssign( return target as T; } - -type SetGetPath = readonly (string | number)[] | string | number; - -function castPath(path: SetGetPath): readonly (string | number)[] { - return Array.isArray(path) ? path : (path + '').split('.'); -} - -export function set( - object: T, - path: SetGetPath, - value: unknown -) { - if (!isObject(object)) return object; - - path = castPath(path); - - const length = path.length; - const lastIndex = length - 1; - - let index = -1; - let nested: unknown = object; - - while (nested != null && ++index < length) { - const key = path[index] + ''; - let newValue = value; - - if (index != lastIndex) { - const objValue = - //@ts-expect-error - nested[key]; - newValue = undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : typeof path[index + 1] === 'number' - ? [] - : {}; - } - } - //@ts-expect-error - nested[key] = newValue; - - //@ts-expect-error - nested = nested[key]; - } - return object; -} - -export function get( - object: object | null | undefined, - path: SetGetPath -): Value | undefined; -export function get( - object: object | null | undefined, - path: SetGetPath, - defaultValue: DefaultValue -): Value | DefaultValue; -export function get( - object: object | null | undefined, - path: SetGetPath, - defaultValue?: DefaultValue -) { - path = castPath(path); - - let index = 0; - const length = path.length; - - while (object != null && index < length) { - object = - //@ts-expect-error - object[path[index++]]; - } - const value = - index && index === length - ? (object as unknown as Value) - : (defaultValue as DefaultValue); - return value === undefined ? defaultValue : value; -} - -export type DeepPartial = T extends Function - ? T - : T extends Array - ? _DeepPartialArray - : T extends object - ? _DeepPartialObject - : T | undefined; - -interface _DeepPartialArray extends Array> {} -type _DeepPartialObject = { [P in keyof T]?: DeepPartial }; - -export type NonNullableObject = { - [P in keyof T]-?: NonNullable; -}; diff --git a/packages/gqty/src/Utils/pick.ts b/packages/gqty/src/Utils/pick.ts new file mode 100644 index 000000000..d3e5e68c0 --- /dev/null +++ b/packages/gqty/src/Utils/pick.ts @@ -0,0 +1,28 @@ +import set from 'just-safe-set'; +import type { Selection } from '../Selection'; + +export const pick = ( + schema: Record, + selections: Set +) => { + const result: Record = {}; + + for (const { ancestry, cacheKeys } of selections) { + let node = schema; + for (const { key, input } of ancestry) { + if (input) { + node = node[key](input.values); + } else { + node = node[key]; + } + } + + if (node !== undefined) { + set(result, cacheKeys, node); + } + } + + return result; +}; + +// TODO: support arrays diff --git a/packages/gqty/src/Utils/selectionsInclude.ts b/packages/gqty/src/Utils/selectionsInclude.ts deleted file mode 100644 index bed736f32..000000000 --- a/packages/gqty/src/Utils/selectionsInclude.ts +++ /dev/null @@ -1,50 +0,0 @@ -// These functions will eventually be removed from the React Package -// And re-use these - -import type { Selection } from '../Selection'; - -export type List = Set | Array; - -export function toSetIfNeeded(list: List): Set { - return Array.isArray(list) ? new Set(list) : list; -} - -export function isSelectionIncluded( - selection: Selection, - selectionList: List -) { - const setSelectionList = toSetIfNeeded(selectionList); - - if (setSelectionList.has(selection)) return true; - - for (const listValue of selectionList) { - if (setSelectionList.has(listValue)) return true; - } - - return false; -} - -export function isAnySelectionIncluded( - selectionsToCheck: List, - selectionsList: List -) { - const setSelectionList = toSetIfNeeded(selectionsList); - for (const selection of selectionsToCheck) { - if (isSelectionIncluded(selection, setSelectionList)) return true; - } - - return false; -} - -export function isAnySelectionIncludedInMatrix( - selectionsToCheck: List, - selectionsMatrix: List> -) { - const selectionsToCheckSet = toSetIfNeeded(selectionsToCheck); - - for (const group of selectionsMatrix) { - if (isAnySelectionIncluded(selectionsToCheckSet, group)) return true; - } - - return false; -} diff --git a/packages/gqty/src/index.ts b/packages/gqty/src/index.ts index a2197a3c0..592613afb 100644 --- a/packages/gqty/src/index.ts +++ b/packages/gqty/src/index.ts @@ -1,6 +1,6 @@ export * from './Client'; -export * from './Selection'; -export * from './Schema'; +export type { Client as GQtyClient } from './Client'; export * from './Error'; export * from './Helpers'; -export { debounce } from './Utils/debounce'; +export * from './Schema'; +export * from './Selection'; diff --git a/packages/gqty/test/FrailMap.test.ts b/packages/gqty/test/FrailMap.test.ts new file mode 100644 index 000000000..5300aeb26 --- /dev/null +++ b/packages/gqty/test/FrailMap.test.ts @@ -0,0 +1,42 @@ +import { randomUUID } from 'crypto'; +import { FrailMap } from '../src/Helpers/FrailMap'; + +jest.setTimeout(1_000_000); + +describe('FrailMap', () => { + it('should triggers garbage collection', async () => { + const keys: string[] = []; + const map = new FrailMap>(); + + for (let i = 0; i < 50_000; i++) { + const key = randomUUID(); + const value: Record = { + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + [randomUUID()]: randomUUID(), + }; + + map.set(key, value); + + keys.push(key); + + // Give it some time for GC to happen. + if (i % 5000 === 0) { + await new Promise((r) => setTimeout(r, 100)); + } + } + + // Trigger keys disposal + map.keys(); + + expect(map.size).toBeLessThan(keys.length); + }); +}); diff --git a/packages/gqty/test/accessor.test.ts b/packages/gqty/test/accessor.test.ts index 1b314f55b..506691735 100644 --- a/packages/gqty/test/accessor.test.ts +++ b/packages/gqty/test/accessor.test.ts @@ -1,21 +1,26 @@ -import { waitForExpect } from 'test-utils'; -import { getArrayFields, SelectionType } from '../src'; -import type { CacheChangeEventData } from '../src/Events'; +import { getArrayFields, GQtyError } from '../src'; +import { $meta, assignSelections, setCache } from '../src/Accessor'; import { createTestClient, Dog, expectConsoleWarn } from './utils'; -describe('array accessors', () => { - test('array query', async () => { - const { query, resolved } = await createTestClient(); - - const data = await resolved(() => { - const human = query.human(); - return human.sons.map((son) => { - return son.name; - }); - }); +test('legacy warning', async () => { + const { query } = await createTestClient(); + + expectConsoleWarn((n, message) => { + switch (n) { + case 1: + return expect(message).toMatchInlineSnapshot( + `"[GQty] global query, mutation and subscription is deprecated, please see the migration guide for scoped query."` + ); + default: + throw Error('Unexpected warn: ' + message); + } + }); - expect(data).toEqual(['default', 'default']); + query.hello; +}); +describe('array accessors', () => { + test('array query', async () => { expectConsoleWarn((n, message) => { switch (n) { case 1: @@ -27,6 +32,17 @@ describe('array accessors', () => { } }); + const { query, resolved } = await createTestClient(); + + const data = await resolved(() => { + const human = query.human(); + return human.sons.map((son) => { + return son.name; + }); + }); + + expect(data).toEqual(['default', 'default']); + const cachedDataHumanOutOfSize = await resolved(() => { const human = query.human(); return human.sons[2]; @@ -71,7 +87,18 @@ describe('accessor undefined paths', () => { }); test('intentionally manipulated schema', async () => { - const { query } = await createTestClient({ + expectConsoleWarn((n, message) => { + switch (n) { + case 1: + return expect(message).toMatchInlineSnapshot( + `"[gqty] Warning! No data requested."` + ); + default: + throw Error('Unexpected warn: ' + message); + } + }); + + const { query, resolved } = await createTestClient({ query: { other: { __type: 'error', @@ -80,201 +107,217 @@ describe('accessor undefined paths', () => { wrongroot: false as any, }); - expect(() => { - //@ts-expect-error - query.other; - }).toThrow('GraphQL Type not found: error'); - - expect( - //@ts-expect-error - query.wrongroot - ).toBe(undefined); + await expect(() => + resolved( + () => + // @ts-expect-error + query.other + ) + ).rejects.toEqual(new GQtyError(`GraphQL type not found: error`)); + + await expect( + resolved( + () => + // @ts-expect-error + query.wrongRoot + ) + ).resolves.toBe(undefined); }); }); describe('setCache', () => { test('expected functionality', async () => { - const { scheduler, query, mutation, setCache } = await createTestClient(); - - const humanQuery = query.human({ - name: 'aaa', - }); - - const name1 = humanQuery.name; - - expect(name1).toBe(undefined); - - expect(scheduler.resolving).toBeTruthy(); - await scheduler.resolving!.promise; - - const name2 = humanQuery.name; - - expect(name2).toBe('aaa'); - - const humanMutation = mutation.humanMutation({ - nameArg: 'zzz', - }); - - const name3 = humanMutation.name; + const { + schema: { query, mutation }, + resolve, + } = await createTestClient(); - expect(name3).toBe(undefined); + { + expect(query.human({ name: 'aaa' }).name).toBe(undefined); - expect(scheduler.resolving).toBeTruthy(); - await scheduler.resolving!.promise; + await resolve(({ query }) => { + query.human({ name: 'aaa' }).name; + }); + expect(query.human({ name: 'aaa' }).name).toBe('aaa'); + } - const name4 = humanMutation.name; + { + expect(mutation.humanMutation({ nameArg: 'bbb' }).name).toBe(undefined); - expect(name4).toBe('zzz'); + await resolve(({ mutation }) => { + mutation.humanMutation({ nameArg: 'bbb' }).name; + }); + expect(mutation.humanMutation({ nameArg: 'bbb' }).name).toBe('bbb'); + } - expect(scheduler.resolving).toBe(null); + { + const humanQuery = query.human({ name: 'aaa' }); + const humanMutation = mutation.humanMutation({ nameArg: 'bbb' }); - setCache(humanQuery, humanMutation); + Object.assign(humanQuery, humanMutation); + expect(humanQuery.name).toBe('bbb'); - expect(humanQuery.name).toBe(name4); + humanQuery.name = 'ccc'; + expect(humanQuery.name).toBe('ccc'); - humanQuery.name = 'bbb'; + $meta(humanQuery)!.cache.data = {}; + Object.assign(humanQuery, query.human({ name: 'nnn' })); + expect(humanQuery.name).toBe(undefined); + } - expect(humanQuery.name).toBe('bbb'); + { + await resolve( + ({ query }) => { + query.human({ name: 'aaa' }).name; + }, + { fetchPolicy: 'no-cache' } + ); - setCache( - humanQuery, - query.human({ - name: 'nnn', - }) - ); + const humanQuery = query.human({ name: 'aaa' }); + expect(humanQuery.name).toBe('aaa'); - const name5 = humanQuery.name; + humanQuery.sons[0] = { ...humanQuery }; + expect(humanQuery.sons[0].name).toBe('aaa'); - expect(name5).toBe(undefined); + humanQuery.name = 'bbb'; + expect(query.human({ name: 'aaa' }).name).toBe('bbb'); - expect(scheduler.resolving).toBeTruthy(); - await scheduler.resolving!.promise; + humanQuery.sons[0].name = 'ccc'; - await waitForExpect(() => { - const name6 = humanQuery.name; + expect(humanQuery.sons[0].name).toBe('ccc'); + expect(humanQuery.name).toBe('bbb'); - expect(name6).toBe('aaa'); - }, 1000); + Object.assign(query.human({ name: 'hhh' }), { name: 'nnn' }); + expect(query.human({ name: 'hhh' }).name).toBe('nnn'); - humanQuery.sons[0] = humanQuery; + query.human().name = 'zzz'; + query.human().name = 'zzz'; - expect(humanQuery.sons[0].name).toBe('aaa'); + query.human().name = 'zzz'; - setCache( - query.human, - { - name: 'hhh', - }, - { - name: 'nnn', - } - ); - - expect( - query.human({ - name: 'hhh', - }).name - ).toBe('nnn'); - - query.human().name = 'zzz'; - - expect(query.human().name).toBe('zzz'); + expect(query.human().name).toBe('zzz'); + } }); test('with listeners', async () => { - const { setCache, query, eventHandler } = await createTestClient(); - - const eventListener1 = jest - .fn() - .mockImplementation(({ selection, data }: CacheChangeEventData) => { - expect(selection.type).toBe(SelectionType.Query); - expect(selection.key).toBe('hello'); - expect(data).toBe('12345'); + const { + schema: { query }, + subscribeLegacySelections: subscribeSelections, + } = await createTestClient(); + + { + const selections: Array<[string, any]> = []; + const mockedFn = jest.fn((selection, cache) => { + selections.push([selection.cacheKeys.join('.'), cache?.data]); }); - const unsubscribe = eventHandler.onCacheChangeSubscribe(eventListener1); + const unsubscribe = subscribeSelections(mockedFn); - try { query.hello = '12345'; - expect(eventListener1).toBeCalledTimes(1); + unsubscribe(); expect(query.hello).toBe('12345'); - } finally { - unsubscribe(); + expect(mockedFn).toBeCalledTimes(1); + expect(selections).toMatchInlineSnapshot(` + [ + [ + "query.hello", + "12345", + ], + ] + `); + expect(query).toMatchInlineSnapshot(` + { + "__typename": "Query", + "hello": "12345", + } + `); } - const eventListener2 = jest - .fn() - .mockImplementation(({ selection, data }: CacheChangeEventData) => { - expect(selection.type).toBe(SelectionType.Query); - expect(selection.key).toBe('query'); - expect(data).toStrictEqual({ hello: '6789' }); + { + const selections: Array<[string, any]> = []; + const mockedFn = jest.fn((selection, cache) => { + selections.push([selection.cacheKeys.join('.'), cache?.data]); }); - const unsubscribe2 = eventHandler.onCacheChangeSubscribe(eventListener2); + const unsubscribe = subscribeSelections(mockedFn); - try { - setCache(query, { hello: '6789' }); + Object.assign(query, { hello: '6789' }); - expect(eventListener2).toBeCalledTimes(1); + unsubscribe(); + expect(mockedFn).toBeCalledTimes(1); + expect(selections).toMatchInlineSnapshot(` + [ + [ + "query.hello", + "6789", + ], + ] + `); expect(query.hello).toBe('6789'); - } finally { - unsubscribe2(); + expect(query).toMatchInlineSnapshot(` + { + "__typename": "Query", + "hello": "6789", + } + `); } }); test('validation', async () => { - const { setCache, query } = await createTestClient(); + const { + schema: { query }, + } = await createTestClient(); expect(() => { - setCache((_args?: { a: string }) => {}, undefined, undefined); - }).toThrowError('Invalid gqty function'); + // @ts-expect-error + setCache((_args?: { a: string }) => {}, undefined); + }).toThrowError('Subject must be an accessor.'); expect(() => { - setCache( - (_args?: { a: string }) => {}, - () => {} - ); - }).toThrowError('Invalid arguments of type: ' + 'function'); + setCache(query, (() => {}) as any); + }).toThrowError( + 'Data must be a subset the schema object, got type: ' + 'function' + ); expect(() => { - setCache((_args?: { a: string }) => {}, 123123 as any); - }).toThrowError('Invalid arguments of type: ' + 'number'); + setCache(query, 123123 as any); + }).toThrowError( + 'Data must be a subset the schema object, got type: ' + 'number' + ); expect(() => { setCache({}, {}); - }).toThrowError('Invalid gqty proxy'); + }).toThrowError('Subject must be an accessor.'); expect(() => { - //@ts-expect-error + // @ts-expect-error query.human({ name: 'ñññ' }).sons['hello'] = null; - }).toThrowError('Invalid array assignation'); - - expect(() => { - //@ts-expect-error - query.human({ name: 'ñññ' }).zxc = null; - }).toThrowError('Invalid proxy assignation'); + }).toThrowError('Invalid array assignment.'); }); }); describe('assign selections', () => { test('expected usage', async () => { - const { query, scheduler, mutate, assignSelections } = - await createTestClient(); - - const human = query.human({ - name: 'A', - }); + const { + mutate, + resolve, + schema: { query }, + } = await createTestClient(); - human.name; - human.father.name; - human.father.father.name; - human.sons.map((son) => son.name); + await resolve(({ query }) => { + const human = query.human({ name: 'A' }); - await scheduler.resolving!.promise; + human.name; + human.father.name; + human.father.father.name; + human.father.name; + human.sons.map((son) => son.name); + }); + const human = query.human({ name: 'A' }); expect(human.name).toBe('A'); expect(human.father.name).toBeTruthy(); expect(human.father.father.name).toBeTruthy(); @@ -294,13 +337,10 @@ describe('assign selections', () => { }); expect(humanMutation.name).toBe('B'); - expect(humanMutation.father.name).toBeTruthy(); expect(human.father.name).toBeTruthy(); - expect(humanMutation.father.father.name).toBeTruthy(); expect(human.father.father.name).toBeTruthy(); - expect(humanMutation.sons.length).toBe(2); expect( humanMutation.sons.every((son) => typeof son.name === 'string') @@ -308,11 +348,7 @@ describe('assign selections', () => { }); test('Source proxy without selections warn in non-production env', async () => { - const { - query, - - assignSelections, - } = await createTestClient(); + const { query } = await createTestClient(); const human = query.human({ name: 'L', @@ -341,14 +377,14 @@ describe('assign selections', () => { }); test('null proxies', async () => { - const { assignSelections, query } = await createTestClient(); + const { query } = await createTestClient(); assignSelections(query, null); assignSelections(null, query); }); test('Invalid proxies', async () => { - const { assignSelections, query } = await createTestClient(); + const { query } = await createTestClient(); expect(() => { assignSelections({}, {}); @@ -367,7 +403,6 @@ describe('unions support', () => { await resolved(() => { return query.species.map((v) => { const onSpecies = v.$on; - const dogName = onSpecies.Dog?.name; const humanName = onSpecies.Human?.name; return { @@ -396,9 +431,9 @@ describe('unions support', () => { describe('mutate accessors', () => { test('works', async () => { - const { query, setCache, resolved } = await createTestClient(); + const { query, resolved } = await createTestClient(); - setCache(query.human, {}, { name: 'hello' }); + Object.assign(query.human(), { name: 'hello' }); const humanHello = query.human(); @@ -415,9 +450,19 @@ describe('mutate accessors', () => { ]; humanHello.dogs = newDogs; - expect(JSON.stringify(humanHello.dogs)).toBe( - '[{"__typename":"Dog","name":"zxc","owner":{"name":"hello","father":{"$ref":"$"}}}]' - ); + expect(humanHello.dogs).toMatchInlineSnapshot(` + [ + { + "__typename": "Dog", + "name": "zxc", + "owner": { + "dogs": [Circular], + "father": [Circular], + "name": "hello", + }, + }, + ] + `); const dogs = await resolved(() => { return getArrayFields(query.dogs, 'name'); @@ -433,67 +478,50 @@ describe('mutate accessors', () => { union: [], }); - expect(JSON.stringify(owner, null, 2)).toMatchInlineSnapshot( - ` - "{ + expect(owner).toMatchInlineSnapshot(` + { "__typename": "Human", "dogs": [ { "__typename": "Dog", "name": "zxc", "owner": { + "dogs": [ + [Circular], + ], + "father": [Circular], "name": "hello", - "father": [ - { - "$ref": "$" - } - ] - } - } + }, + }, ], "father": { - "name": "hello", - "father": { - "$ref": "$" - }, "dogs": [ { "__typename": "Dog", "name": "zxc", - "owner": { - "name": "hello", - "father": { - "$ref": "$[\\"dogs\\"]" - } - } - } - ] + "owner": [Circular], + }, + ], + "father": [Circular], + "name": "hello", }, "name": "ModifiedOwner", + "node": [], "sons": [ { - "name": "hello", - "father": { - "$ref": "$" - }, "dogs": [ { "__typename": "Dog", "name": "zxc", - "owner": { - "name": "hello", - "father": { - "$ref": "$[\\"dogs\\"]" - } - } - } - ] - } + "owner": [Circular], + }, + ], + "father": [Circular], + "name": "hello", + }, ], - "node": [], - "union": [] - }" - ` - ); + "union": [], + } + `); }); }); diff --git a/packages/gqty/test/buildQuery.test.ts b/packages/gqty/test/buildQuery.test.ts index 8353039cf..49a2d9c42 100644 --- a/packages/gqty/test/buildQuery.test.ts +++ b/packages/gqty/test/buildQuery.test.ts @@ -2,250 +2,128 @@ import { parse, stripIgnoredCharacters as officialStripIgnoredCharacters, } from 'graphql'; - -import { createQueryBuilder } from '../src/QueryBuilder'; -import { Selection, SelectionType } from '../src/Selection'; - -const buildQuery = createQueryBuilder(); +import { buildQuery } from '../src/QueryBuilder'; +import { Selection } from '../src/Selection'; describe('buildQuery()', () => { it('should builds basic query', () => { - const baseSelection = new Selection({ - key: 'query', - type: SelectionType.Query, - id: 0, - }); - - const selectionA = new Selection({ - key: 'a', - prevSelection: baseSelection, - id: 1, - }); + const baseSelection = Selection.createRoot('query'); + const selectionA = baseSelection.getChild('a'); + const selectionB = baseSelection.getChild('b'); - const selectionB = new Selection({ - key: 'b', - prevSelection: baseSelection, - id: 2, - }); - - const { query, variables } = buildQuery([selectionA, selectionB], { - type: 'query', - }); + const [{ query, variables }] = buildQuery( + new Set([selectionA, selectionB]) + ); expect(query).toMatchInlineSnapshot(`"query{a b}"`); expect(variables).toBe(undefined); - - expect(() => { - parse(query); - }).not.toThrow(); - + expect(() => parse(query)).not.toThrow(); expect(officialStripIgnoredCharacters(query)).toBe(query); }); it('should builds deep query with unions', () => { - const baseSelection = new Selection({ - key: 'query', - type: SelectionType.Query, - id: 0, - }); - - const selectionA = new Selection({ - key: 'a', - prevSelection: baseSelection, - id: 1, - }); - - const selectionB = new Selection({ - key: 'b', - prevSelection: selectionA, - id: 2, - }); - - const selectionC = new Selection({ - key: 'c', - prevSelection: selectionB, - id: 3, - }); - - const selectionD = new Selection({ - key: 'd', - prevSelection: selectionC, - id: 4, - }); - - const selectionE1 = new Selection({ - key: 'a', - prevSelection: selectionD, - unions: ['val1', 'val2'], - id: 4, - }); - - const selectionE2 = new Selection({ - key: 'b', - prevSelection: selectionD, - unions: ['val1'], - id: 5, - }); - - const selectionF = new Selection({ - key: 'f', - prevSelection: selectionE1, - id: 6, - }); - - const { query, variables } = buildQuery([selectionE2, selectionF], { - type: 'query', - }); + const baseSelection = Selection.createRoot('query'); + const selectionD = baseSelection + .getChild('a') + .getChild('b') + .getChild('c') + .getChild('d'); + + const selectionD1 = selectionD.getChild('val1', { isUnion: true }); + const selectionD1B = selectionD1.getChild('b'); + const selectionD1A = selectionD1.getChild('a'); + const selectionD1AF = selectionD1A.getChild('f'); + + const selectionD2 = selectionD.getChild('val2', { isUnion: true }); + const selectionD2A = selectionD2.getChild('a'); + const selectionD2AF = selectionD2A.getChild('f'); + + const [{ query, variables }] = buildQuery( + new Set([selectionD1B, selectionD1AF, selectionD2AF]) + ); expect(query).toMatchInlineSnapshot( `"query{a{b{c{d{...on val1{b a{f}}...on val2{a{f}}}}}}}"` ); expect(variables).toBe(undefined); - - expect(() => { - parse(query); - }).not.toThrow(); - + expect(() => parse(query)).not.toThrow(); expect(officialStripIgnoredCharacters(query)).toBe(query); }); it('should queries with arguments', () => { - const baseSelection = new Selection({ - key: 'query', - type: SelectionType.Query, - id: 0, - }); - - const selectionA = new Selection({ - key: 'a', - prevSelection: baseSelection, - args: { - a: 1, - b: 1, - }, - argTypes: { - a: 'Int!', - b: 'String!', - }, + const baseSelection = Selection.createRoot('query'); + const selectionA = baseSelection.getChild('a', { alias: 'gqtyAlias_1', - id: 1, - }); - - const selectionB = new Selection({ - key: 'a_b', - prevSelection: selectionA, - id: 2, - }); - - const selectionC = new Selection({ - key: 'a_c', - prevSelection: selectionA, - id: 3, - }); - - const selectionD = new Selection({ - key: 'd', - prevSelection: baseSelection, - id: 4, + parent: baseSelection, + input: { + types: { + a: 'Int!', + b: 'String!', + }, + values: { + a: 1, + b: 1, + }, + }, }); + const selectionB = selectionA.getChild('a_b'); + const selectionC = selectionA.getChild('a_c'); + const selectionD = baseSelection.getChild('d'); - const { query, variables } = buildQuery( - [selectionB, selectionC, selectionD], - { - type: 'query', - } + const [{ query, variables }] = buildQuery( + new Set([selectionB, selectionC, selectionD]) ); expect(query).toMatchInlineSnapshot( - `"query($a1:Int!$b2:String!){gqtyAlias_1:a(a:$a1 b:$b2){a_b a_c}d}"` + `"query($v1:Int!$v2:String!){gqtyAlias_1:a(a:$v1 b:$v2){a_b a_c}d}"` ); - - expect(() => { - parse(query); - }).not.toThrow(); - - expect(variables).toEqual({ a1: 1, b2: 1 }); - + expect(() => parse(query)).not.toThrow(); + expect(variables).toEqual({ v1: 1, v2: 1 }); expect(officialStripIgnoredCharacters(query)).toBe(query); }); it('should build mutation with arguments', () => { - const baseSelection = new Selection({ - key: 'mutation', - type: SelectionType.Mutation, - id: 1, - }); - - const selectionA = new Selection({ - key: 'a', - prevSelection: baseSelection, - args: { - a: 1, - b: 1, - }, - argTypes: { - a: 'Int!', - b: 'String!', - }, + const baseSelection = Selection.createRoot('mutation'); + const selectionA = baseSelection.getChild('a', { alias: 'gqtyAlias_1', - id: 2, + parent: baseSelection, + input: { + values: { + a: 1, + b: 1, + }, + types: { + a: 'Int!', + b: 'String!', + }, + }, }); - const { query, variables } = buildQuery([selectionA], { - type: 'mutation', - }); + const [{ query, variables }] = buildQuery(new Set([selectionA])); expect(query).toMatchInlineSnapshot( - `"mutation($a1:Int!$b2:String!){gqtyAlias_1:a(a:$a1 b:$b2)}"` + `"mutation($v1:Int!$v2:String!){gqtyAlias_1:a(a:$v1 b:$v2)}"` ); expect(() => { parse(query); }).not.toThrow(); - expect(variables).toEqual({ a1: 1, b2: 1 }); + expect(variables).toEqual({ v1: 1, v2: 1 }); expect(officialStripIgnoredCharacters(query)).toBe(query); }); - it('should fails on mismatched selection type', () => { - const baseSelection = new Selection({ - key: 'mutation', - type: SelectionType.Query, - id: 0, - }); - - expect(() => { - buildQuery([baseSelection], { type: 'query' }); - }).toThrow('Expected root selection of type "query", found "mutation".'); - }); - it('should query with operation name', () => { - const baseSelection = new Selection({ - key: 'query', - type: SelectionType.Query, - id: 0, - }); + const baseSelection = Selection.createRoot('query'); + const selectionA = baseSelection.getChild('a'); - const selectionA = new Selection({ - key: 'a', - prevSelection: baseSelection, - id: 1, - operationName: 'TestQuery', - }); - - const { query } = buildQuery([selectionA], { - type: 'query', - }); + const [{ query }] = buildQuery(new Set([selectionA]), 'TestQuery'); expect(query).toMatchInlineSnapshot(`"query TestQuery{a}"`); - - expect(() => { - parse(query); - }).not.toThrow(); - + expect(() => parse(query)).not.toThrow(); expect(officialStripIgnoredCharacters(query)).toBe(query); }); }); diff --git a/packages/gqty/test/cache.test.ts b/packages/gqty/test/cache.test.ts index f4bcf41cd..4704af0fe 100644 --- a/packages/gqty/test/cache.test.ts +++ b/packages/gqty/test/cache.test.ts @@ -1,219 +1,125 @@ import { assertIsDefined } from 'test-utils'; - -import { createAccessorCache, createCache } from '../src/Cache'; -import { EventHandler } from '../src/Events'; -import { createNormalizationHandler } from '../src/Normalization'; +import { $meta, createSchemaAccessor } from '../src/Accessor'; +import { createObjectAccessor } from '../src/Accessor/resolve'; +import { Cache, CacheRoot } from '../src/Cache'; import { Selection } from '../src/Selection'; -import { get } from '../src/Utils'; -import { createTestClient } from './utils'; - -describe('accessorCache', () => { - test('getAccessor', () => { - const cache = createAccessorCache(); - - const selection = new Selection({ - key: 'a', - id: 0, - }); - - const obj = cache.getAccessor(selection, null, () => { - return { - a: 1, - }; - }); - - expect(obj).toEqual({ - a: 1, - }); - - const obj2 = cache.getAccessor(selection, null, () => { - throw Error("This shouldn't be called"); - }); - - expect(obj).toBe(obj2); - - const selectionFromCache = cache.getProxySelection(obj); - - expect(selectionFromCache).toBe(selection); - assertIsDefined(selection); - - expect(selection.key).toBe('a'); - expect(selection.cachePath).toEqual(['a']); - expect(selection.pathString).toBe('a'); - - const isProxyFromCache = cache.isProxy(obj); - - expect(isProxyFromCache).toBe(true); - - expect(cache.isProxy({})).toBe(false); - }); - - test('getArrayAccessor', () => { - const cache = createAccessorCache(); - - const selection = new Selection({ - key: 'a', - id: 0, - }); - - const arrayValue = [123]; - - const obj = cache.getArrayAccessor(selection, arrayValue, () => { - return { - a: 1, - }; - }); +describe('Cache#dataAccessors', () => { + const mockContext = { + schema: { + query: { + __typename: { __type: 'String!' }, + a: { __type: 'String!' }, + b: { __type: 'B!' }, + }, + B: { + c: { __type: 'String!' }, + }, + }, + scalars: { String: true }, + depthLimit: 15, + } as const; + + /** + * Before we figure out how to cache sub-selections for null values, caching + * accessors adds a lot of complixity with little performance gain. + * + * Skip this for now. + */ + it('should return the cached accessor', () => { + const cache = new Cache(); + const selection = Selection.createRoot('query').getChild('a'); + const cacheValue = { a: 1 }; + + const obj = cache.getAccessor(selection, () => + createObjectAccessor({ + cache: { + data: cacheValue, + expiresAt: Infinity, + swrBefore: 0, + }, + context: { ...mockContext, cache }, + selection, + type: { __type: 'query' }, + }) + ); - expect(obj).toEqual({ - a: 1, - }); + expect($meta(obj)).toBeDefined(); + expect($meta(obj)?.cache.data).toEqual({ a: 1 }); - const obj2 = cache.getArrayAccessor(selection, arrayValue, () => { + const obj2 = cache.getAccessor(selection, () => { throw Error("This shouldn't be called"); }); expect(obj).toBe(obj2); - - const selectionFromCache = cache.getProxySelection(obj); - - expect(selectionFromCache).toBe(selection); - assertIsDefined(selection); - expect(selection.key).toBe('a'); - expect(selection.cachePath).toEqual(['a']); - expect(selection.pathString).toBe('a'); - - const isProxyFromCache = cache.isProxy(obj); - - expect(isProxyFromCache).toBe(true); - - expect(cache.isProxy({})).toBe(false); + expect(selection.cacheKeys).toEqual(['query', 'a']); }); - test('getting selections history', () => { - const { - addSelectionToAccessorHistory, - getAccessor, - getSelectionSetHistory, - addAccessorChild, - } = createAccessorCache(); - - const rootAccessor = getAccessor( - new Selection({ - key: 'root', - id: 0, - }), - null, - () => { - return { - root: true, - }; - } - ); - - const selectionA = new Selection({ - key: 'a', - id: 1, - }); - - const accessorA = getAccessor(selectionA, null, () => { - return { - a: 1, - }; - }); - - addAccessorChild(rootAccessor, accessorA); - - const selectionB = new Selection({ - key: 'b', - id: 2, - }); - - const accessorB = getAccessor(selectionB, null, () => { - return { - b: 2, - }; + it('should make selections', () => { + const cache = new Cache(); + const schema = createSchemaAccessor<{ query: { b: { c: string } } }>({ + ...mockContext, + cache, + onSelect(selection) { + selections.push(selection); + }, }); + const selections: Selection[] = []; - addAccessorChild(accessorA, accessorB); - - addSelectionToAccessorHistory(accessorA, selectionA); - - const selections1 = getSelectionSetHistory(accessorA)!; - - expect(selections1).toBeTruthy(); - - expect(selections1).toStrictEqual(new Set([selectionA])); - - addSelectionToAccessorHistory(accessorB, selectionB); - - const selections2 = getSelectionSetHistory(accessorB)!; - - expect(selections2).toBeTruthy(); - - expect(selections2).toStrictEqual(new Set([selectionB])); - - const selections3 = getSelectionSetHistory(accessorA)!; + schema.query.b.c; - expect(selections3).toBeTruthy(); - - expect(selections3).toStrictEqual(new Set([selectionA, selectionB])); - - const selections4 = getSelectionSetHistory(rootAccessor)!; - - expect(selections4).toBeTruthy(); - - expect(selections4).toStrictEqual(new Set([selectionA, selectionB])); + expect(selections.length).toBe(1); + expect(selections[0].cacheKeys.join('.')).toBe('query.b.c'); }); }); -describe('dataCache', () => { - test('works', () => { - const cache = createCache(); - - const selectionBase = new Selection({ - key: 'query', - id: 0, - }); - - const selection = new Selection({ - key: 'a', - prevSelection: selectionBase, - id: 1, - }); +describe('Cache#data', () => { + const mockContext = { + schema: { + query: { + nullArray: { __type: '[String!]' }, + }, + }, + scalars: { String: true }, + depthLimit: 15, + } as const; - const dataEmpty = cache.getCacheFromSelection(selection); + it('should work with selections', () => { + const cache = new Cache(); + const selectionBase = Selection.createRoot('query'); + const selection = selectionBase.getChild('a'); + const dataEmpty = cache.get(selection.cacheKeys.join('.'))?.data; expect(dataEmpty).toBe(undefined); - cache.mergeCache( - { + cache.set({ + query: { a: 1, }, - 'query' - ); - - const data = cache.getCacheFromSelection(selection); + }); + const data = cache.get(selection.cacheKeys.join('.'))?.data; expect(data).toBe(1); }); - test('toJSON', async () => { - const { query, scheduler } = await createTestClient(); - - expect(JSON.stringify(query)).toBe('{}'); + it('should be JSON serializable', async () => { + const cache = new Cache({ query: { nullArray: [] } }); + const { query } = createSchemaAccessor({ ...mockContext, cache }); - expect(JSON.stringify(query.nullArray)).toBe('[]'); - - await scheduler.resolving?.promise; + expect(query).toMatchInlineSnapshot(` + { + "__typename": "Query", + } + `); + expect(query.nullArray).toMatchInlineSnapshot(`[]`); }); - test('merge works as it should with arrays', () => { - const { cache, mergeCache } = createCache(); + it('should merge on top-level keys', () => { + const cache = new Cache(); - function expectCacheToBe(v: typeof cache) { + function expectCacheToBe(v: CacheRoot) { try { expect(JSON.stringify(cache)).toBe(JSON.stringify(v)); } catch (err: any) { @@ -222,80 +128,55 @@ describe('dataCache', () => { } } - mergeCache( - { + cache.set({ + query: { other: 123, array1: [1, 2], - array2: [ - { - a: 1, - }, - ], + array2: [{ a: 1 }], }, - 'query' - ); + }); expectCacheToBe({ query: { other: 123, array1: [1, 2], - array2: [ - { - a: 1, - }, - ], + array2: [{ a: 1 }], }, }); - mergeCache( - { + cache.set({ + query: { array1: [3], }, - 'query' - ); + }); expectCacheToBe({ query: { other: 123, array1: [3], - array2: [ - { - a: 1, - }, - ], + array2: [{ a: 1 }], }, }); - mergeCache( - { - array2: [ - { - b: 2, - }, - ], + cache.set({ + query: { + array2: [{ b: 2 }], }, - 'query' - ); + }); expectCacheToBe({ query: { other: 123, array1: [3], - array2: [ - { - a: 1, - b: 2, - }, - ], + array2: [{ b: 2 }], }, }); - mergeCache( - { + cache.set({ + query: { array2: [], }, - 'query' - ); + }); expectCacheToBe({ query: { @@ -305,245 +186,352 @@ describe('dataCache', () => { }, }); - mergeCache( - { + cache.set({ + query: { array2: [ - { - c: 1, - }, - { - d: 1, - }, - { - e: 1, - }, + { __typename: 'c', c: 1 }, + { __typename: 'd', d: 1 }, + { __typename: 'e', e: 1 }, ], }, - 'query' - ); + }); expectCacheToBe({ query: { other: 123, array1: [3], array2: [ - { - c: 1, - }, - { - d: 1, - }, - { - e: 1, - }, + { __typename: 'c', c: 1 }, + { __typename: 'd', d: 1 }, + { __typename: 'e', e: 1 }, ], }, }); - mergeCache( - { + cache.set({ + query: { array1: null, }, - 'query' - ); + }); expectCacheToBe({ query: { other: 123, array1: null, array2: [ - { - c: 1, - }, - { - d: 1, - }, - { - e: 1, - }, + { __typename: 'c', c: 1 }, + { __typename: 'd', d: 1 }, + { __typename: 'e', e: 1 }, ], }, }); }); }); -describe('data normalization', () => { - test('should work', async () => { - const { cache, mergeCache, normalizedCache, getCacheFromSelection } = - createCache( - createNormalizationHandler( - true, - new EventHandler(), - { - mutation: {}, - query: {}, - subscription: {}, - a: { - __typename: { __type: 'String!' }, - id: { __type: 'Int!' }, - }, - }, - { - Int: true, - } - ) - ); +describe('Cache#normalization', () => { + it('should work', () => { + const cache = new Cache(undefined, { + maxAge: Infinity, + normalization: true, + }); - assertIsDefined(normalizedCache); + cache.set({ + query: { + a: { + __typename: 'A', + id: 1, + a: 1, + }, + }, + }); - function expectCacheToBe(v: typeof normalizedCache) { - try { - expect(JSON.stringify(cache)).toBe(JSON.stringify(v)); - } catch (err: any) { - Error.captureStackTrace(err, expectCacheToBe); - throw err; - } - } - function expectNormalizedCacheToBe(v: typeof normalizedCache) { - try { - expect(JSON.stringify(normalizedCache)).toBe(JSON.stringify(v)); - } catch (err: any) { - Error.captureStackTrace(err, expectNormalizedCacheToBe); - throw err; + expect(cache).toMatchInlineSnapshot(` + { + "normalized": { + "A:1": { + "__typename": "A", + "a": 1, + "id": 1, + }, + }, + "query": { + "a": { + "__ref": "A:1", + }, + }, } - } + `); - mergeCache( - { + // Should merge object on incoming superset. + cache.set({ + query: { a: { - __typename: 'a', + __typename: 'A', id: 1, - v: 1, + a: 1, + b: 2, }, }, - 'query' - ); - - expectNormalizedCacheToBe({ - a1: { - __typename: 'a', - id: 1, - v: 1, - }, }); - expectCacheToBe({ + expect(cache).toMatchInlineSnapshot(` + { + "normalized": { + "A:1": { + "__typename": "A", + "a": 1, + "b": 2, + "id": 1, + }, + }, + "query": { + "a": { + "__ref": "A:1", + }, + }, + } + `); + + // Should replace object when incoming fields mismatches. + cache.set({ query: { - a: { - __typename: 'a', + otherQuery: { + __typename: 'O', id: 1, - v: 1, + deep: { + __typename: 'A', + id: 1, + c: 3, + }, }, }, }); - mergeCache( + expect(cache).toMatchInlineSnapshot(` + { + "normalized": { + "A:1": { + "__typename": "A", + "c": 3, + "id": 1, + }, + "O:1": { + "__typename": "O", + "deep": { + "__ref": "A:1", + }, + "id": 1, + }, + }, + "query": { + "a": { + "__ref": "A:1", + }, + "otherQuery": { + "__ref": "O:1", + }, + }, + } + `); + + const selection = Selection.createRoot('query').getChild('a'); + + expect(cache.get(selection.cacheKeys.join('.'))?.data) + .toMatchInlineSnapshot(` { + "__typename": "A", + "c": 3, + "id": 1, + } + `); + }); +}); + +describe('Cache#subscribe', () => { + it('should notify direct subscribers', () => { + const cache = new Cache(); + const listener = jest.fn(); + const unsub = cache.subscribe(['query.a', 'query.b.a'], listener); + + cache.set({ query: { a: 1 } }); + cache.set({ query: { b: { a: 1 } } }); + + expect(listener).toHaveBeenCalledTimes(2); + + unsub(); + }); + + it('should notify normalized subscribers', () => { + const cache = new Cache(undefined, { + maxAge: Infinity, + normalization: true, + }); + const listener = jest.fn(); + const subs: Array<() => void> = []; + + cache.set({ + query: { a: { - __typename: 'a', + __typename: 'A', id: 1, - g: 2, + b: { __typename: 'B', id: 1 }, }, }, - 'query' - ); + }); + + // Referencing a normalized object + subs.push(cache.subscribe(['query.a.__typename'], listener)); - expectNormalizedCacheToBe({ - a1: { - __typename: 'a', - id: 1, - v: 1, - g: 2, + // Update normalized object from a different path + cache.set({ + query: { + b: { + __typename: 'B', + id: 1, + a: { __typename: 'A', id: 1, a: 1 }, + }, }, }); - expectCacheToBe({ + expect(listener).toHaveBeenCalledWith({ query: { - a: { - __typename: 'a', + b: { + __typename: 'B', id: 1, - v: 1, - g: 2, + a: { __typename: 'A', id: 1, a: 1 }, }, }, }); - mergeCache( - { - otherQuery: { - __typename: 'o', - deep: { - __typename: 'a', - id: 1, - n: 3, - }, + cache.set({ + query: { + c: { + a: { __typename: 'A', id: 1, a: 1, b: 2 }, }, }, - 'query' - ); + }); - expectNormalizedCacheToBe({ - a1: { - __typename: 'a', - id: 1, - v: 1, - g: 2, - n: 3, - }, + expect(listener).toHaveBeenCalledWith({ + query: { c: { a: { __typename: 'A', id: 1, a: 1, b: 2 } } }, }); - const querySelection = new Selection({ - key: 'query', - id: 0, + expect(listener).toHaveBeenCalledTimes(2); + + subs.forEach((unsub) => unsub()); + }); + + it('should work with arrays', () => { + const cache = new Cache({ + query: { + a: [1, 2, 3], + b: [ + { __typename: 'B', id: 1, a: 1 }, + { __typename: 'B', id: 2 }, + ], + }, }); - const aSelection = new Selection({ - key: 'a', - prevSelection: querySelection, - id: 1, + const listener = jest.fn(); + + cache.subscribe(['query.b.a'], listener); + cache.set({ + query: { + b: [{ __typename: 'B', id: 1, a: 2 }], + }, }); - const aData = getCacheFromSelection(aSelection); + expect(listener).toBeCalledTimes(1); + expect(cache).toMatchInlineSnapshot(` + { + "query": { + "a": [ + 1, + 2, + 3, + ], + "b": [ + { + "__typename": "B", + "a": 2, + "id": 1, + }, + ], + }, + } + `); + }); + + it('should work with normalized arrays', () => { + const cache = new Cache( + { + query: { + a: [1, 2, 3], + b: [ + { __typename: 'B', id: 1, b: 1 }, + { __typename: 'B', id: 2, b: 2 }, + { __typename: 'B', id: 3, b: 3 }, + ], + }, + }, + { normalization: true } + ); + const listener = jest.fn(); - expect(aData).toStrictEqual({ __typename: 'a', id: 1, v: 1, g: 2, n: 3 }); + cache.subscribe(['query.b.b'], listener); - expect(get(cache, 'query.a')).toStrictEqual({ - __typename: 'a', - id: 1, - v: 1, - g: 2, - n: 3, + cache.set({ + query: { + c: { __typename: 'B', id: 2, b: 4 }, + }, }); - expect(normalizedCache['a1']).toStrictEqual({ - __typename: 'a', - id: 1, - v: 1, - g: 2, - n: 3, + expect(listener).toBeCalledTimes(1); + expect(listener).toHaveBeenCalledWith({ + query: { + c: { __typename: 'B', id: 2, b: 4 }, + }, }); - expectCacheToBe({ - query: { - a: { - __typename: 'a', - id: 1, - v: 1, - g: 2, - n: 3, + expect(cache).toMatchInlineSnapshot(` + { + "normalized": { + "B:1": { + "__typename": "B", + "b": 1, + "id": 1, + }, + "B:2": { + "__typename": "B", + "b": 4, + "id": 2, + }, + "B:3": { + "__typename": "B", + "b": 3, + "id": 3, + }, }, - otherQuery: { - __typename: 'o', - deep: { - __typename: 'a', - id: 1, - n: 3, + "query": { + "a": [ + 1, + 2, + 3, + ], + "b": [ + { + "__ref": "B:1", + }, + { + "__ref": "B:2", + }, + { + "__ref": "B:3", + }, + ], + "c": { + "__ref": "B:2", }, }, - }, - }); + } + `); }); }); - -process.on('SIGTERM', () => { - console.log('CACHE TEST EXIT'); -}); diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index ad4463eee..4e41fad4d 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -1,27 +1,252 @@ -import '../src/Client'; +import { $meta } from 'gqty/Accessor'; +import { GQtyError, prepass } from '../src'; +import { fetchSelections } from '../src/Client/resolveSelections'; +import { updateCaches } from '../src/Client/updateCaches'; +import { Selection } from '../src/Selection'; +import { createTestClient } from './utils'; -import { waitForExpect } from 'test-utils'; +describe('core#resolve', () => { + describe('fetchPolicy', () => { + it('default', async () => { + const { + resolve, + schema: { query }, + } = await createTestClient(undefined, undefined, undefined, { + cacheOptions: { + maxAge: 50, + }, + }); -import { GQtyError, prepass, Selection } from '../src'; -import { createTestClient } from './utils'; + await expect( + resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + ).resolves.toBe(1); -describe('core', () => { - test('scheduler', async () => { - const { query } = await createTestClient(); + expect( + resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + ).toBe(1); - expect(typeof query).toBe('object'); + await new Promise((resolve) => setTimeout(resolve, 100)); + + let promise: Promise | undefined; + resolve(({ query }) => query.nFetchCalls, { + awaitsFetch: false, + fetchPolicy: 'default', + onFetch(p) { + promise = p; + }, + }); + expect(query.nFetchCalls).toBe(1); + await promise; + expect(query.nFetchCalls).toBe(2); + }); + + it('force-cache', async () => { + const { + resolve, + schema: { query }, + } = await createTestClient(undefined, undefined, undefined, { + cacheOptions: { + maxAge: 50, + staleWhileRevalidate: 0, + }, + }); + + await expect( + resolve( + ({ query }) => { + query.nFetchCalls; + return query.hello; + }, + { fetchPolicy: 'default' } + ) + ).resolves.toBe('hello world'); + expect(query.nFetchCalls).toBe(1); + + expect( + resolve( + ({ query }) => { + query.nFetchCalls; + return query.hello; + }, + { fetchPolicy: 'force-cache' } + ) + ).toBe('hello world'); + expect(query.nFetchCalls).toBe(1); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + expect(query.hello).toBe('hello world'); + await expect( + resolve( + ({ query }) => { + query.nFetchCalls; + return query.hello; + }, + { fetchPolicy: 'force-cache' } + ) + ).resolves.toBe('hello world'); + expect(query.nFetchCalls).toBe(2); + }); + + it('no-cache', async () => { + const { resolve } = await createTestClient( + undefined, + undefined, + undefined, + { + cacheOptions: { + maxAge: Infinity, + staleWhileRevalidate: 0, + }, + } + ); + + await expect( + resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + ).resolves.toBe(1); + + await expect( + resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'no-cache' }) + ).resolves.toBe(2); + + expect( + resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + ).toBe(2); + }); + + it('no-store', async () => { + const { + resolve, + schema: { query }, + } = await createTestClient(undefined, undefined, undefined, { + cacheOptions: { + maxAge: Infinity, + staleWhileRevalidate: 0, + }, + }); + + await expect( + resolve(({ query }) => query.hello, { fetchPolicy: 'no-store' }) + ).resolves.toBe('hello world'); + + expect(query.hello).toBeUndefined(); + }); - expect(query.hello).toBe(undefined); + /** + * When multiple tests are running, GC gets triggered more often and this + * randomly fails. Should work when run individually. + */ + xit('only-if-cached', async () => { + const { resolve } = await createTestClient( + undefined, + undefined, + undefined, + { + cacheOptions: { + maxAge: 0, + staleWhileRevalidate: 0, + }, + } + ); + + expect(() => + resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) + ).toThrowError(new TypeError('Failed to fetch')); + + await expect(resolve(({ query }) => query.hello)).resolves.toBe( + 'hello world' + ); + + expect( + resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) + ).toBe('hello world'); + }); + + it('cache-and-network', async () => { + const { + resolve, + schema: { query }, + } = await createTestClient(undefined, undefined, undefined, { + cacheOptions: { + maxAge: 50, + }, + }); + + await expect( + resolve(({ query }) => query.nFetchCalls, { + fetchPolicy: 'cache-and-network', + }) + ).resolves.toBe(1); + + await new Promise((resolve) => setTimeout(resolve, 100)); + + let promise: Promise | undefined; + resolve(({ query }) => query.nFetchCalls, { + awaitsFetch: false, + fetchPolicy: 'cache-and-network', + onFetch(p) { + promise = p; + }, + }); + expect(query.nFetchCalls).toBe(1); + await promise; + expect(query.nFetchCalls).toBe(2); + }); + }); + + it('subscriptions', async () => { + const { resolve } = await createTestClient(undefined, undefined, { + subscriptions: true, + }); + + const subPromise = resolve( + ({ subscription }) => subscription.newNotification + ); - waitForExpect( - () => { - expect(query.hello).toBe('hello world'); - }, - 100, - 10 + await new Promise((resolve) => setTimeout(resolve, 10)); + + await resolve(({ mutation }) => + mutation.sendNotification({ message: 'hello world' }) ); + + const data = await subPromise; + + expect(data).toEqual('hello world'); + }); + + it('error handling', async () => { + const { resolve } = await createTestClient(); + + try { + await resolve(({ query }) => { + query.throw; + query.throw2; + }); + } catch (error) { + expect(error).toEqual( + Object.assign( + Error('GraphQL Errors, please check .graphQLErrors property'), + { + errors: [ + { + message: 'expected error', + locations: [{ line: 1, column: 7 }], + path: ['throw'], + }, + { + message: 'expected error 2', + locations: [{ line: 1, column: 13 }], + path: ['throw2'], + }, + ], + } + ) + ); + } }); +}); +describe('compat', () => { test('resolved', async () => { const { query, resolved } = await createTestClient(); @@ -39,11 +264,7 @@ describe('core', () => { expect(typeof query).toBe('object'); - await resolved(() => { - return query.hello; - }).then((value) => { - expect(value).toBe('hello world'); - }); + await expect(resolved(() => query.hello)).resolves.toBe('hello world'); const onCacheData = jest .fn() @@ -52,17 +273,10 @@ describe('core', () => { return true; }); - await resolved( - () => { - return query.hello; - }, - { - refetch: true, - onCacheData, - } - ).then((value) => { - expect(value).toBe('hello world'); - }); + + await expect( + resolved(() => query.hello, { refetch: true, onCacheData }) + ).resolves.toBe('hello world'); expect(onCacheData).toBeCalledTimes(1); @@ -73,17 +287,10 @@ describe('core', () => { return false; }); - await resolved( - () => { - return query.hello; - }, - { - refetch: true, - onCacheData: onCacheData2, - } - ).then((value) => { - expect(value).toBe('hello world'); - }); + + await expect( + resolved(() => query.hello, { refetch: true, onCacheData: onCacheData2 }) + ).resolves.toBe('hello world'); expect(onCacheData2).toBeCalledTimes(1); }); @@ -92,7 +299,7 @@ describe('core', () => { const fetchHistory: string[] = []; const { query, resolved } = await createTestClient( undefined, - async (query) => { + async ({ query }) => { fetchHistory.push(query); return {}; } @@ -112,14 +319,7 @@ describe('core', () => { }); test('resolved with unions', async () => { - const fetchHistory: string[] = []; - const { query, resolved } = await createTestClient( - undefined, - async (query) => { - fetchHistory.push(query); - return {}; - } - ); + const { query, resolved, queries } = await createTestClient(); await Promise.all([ resolved(() => { @@ -127,23 +327,18 @@ describe('core', () => { }), ]); - expect(fetchHistory).toEqual( + expect(queries).toMatchObject( expect.arrayContaining([ - expect.stringContaining('...on A{id a}...on B{id b}'), + expect.objectContaining({ + query: expect.stringContaining('...on A{id a}...on B{id b}'), + }), ]) ); }); test('inlineResolved with operationName', async () => { - const fetchHistory: string[] = []; - const { query, mutation, inlineResolved } = await createTestClient( - undefined, - async (query) => { - fetchHistory.push(query); - await new Promise((resolve) => setTimeout(resolve, 5)); - return { data: { query: 'hello' } }; - } - ); + const { query, mutation, inlineResolved, queries } = + await createTestClient(); await Promise.all([ inlineResolved(() => query.human({ name: 'John' }).__typename, { @@ -158,154 +353,141 @@ describe('core', () => { }), ]); - expect(fetchHistory).toEqual( - expect.arrayContaining([ - 'mutation TestMutation($nameArg1:String!){humanMutation_70c5e_90943:humanMutation(nameArg:$nameArg1){__typename id}}', - 'query TestQueryA($name1:String){human_b8c92_7a4a6:human(name:$name1){__typename id}}', - 'query TestQueryB{hello}', - ]) - ); + expect(queries.map(({ query }) => query)).toMatchInlineSnapshot(` + [ + "query TestQueryA($v1:String){b434c:human(name:$v1){__typename}}", + "mutation TestMutation($v1:String!){ff8ff:humanMutation(nameArg:$v1){__typename}}", + "query TestQueryB{hello}", + ] + `); }); -}); - -describe('resolved cache options', () => { - test('refetch', async () => { - const { query, resolved } = await createTestClient(); - const resolveFn = () => { - const human = query.human({ - name: 'a', - }); - return { - name: human.name, - nFetchCalls: query.nFetchCalls, + describe('resolved cache options', () => { + test('refetch', async () => { + const { query, resolved } = await createTestClient( + undefined, + undefined, + undefined, + { cacheOptions: { maxAge: Infinity } } + ); + const resolveFn = () => { + const human = query.human({ + name: 'a', + }); + return { + name: human.name, + nFetchCalls: query.nFetchCalls, + }; }; - }; - - const data = await resolved(resolveFn); - - expect(data.name).toBe('a'); - expect(data.nFetchCalls).toBe(1); - - const cachedData = await resolved(resolveFn); - expect(cachedData.name).toBe('a'); - expect(cachedData.nFetchCalls).toBe(1); - - const refetchedData = await resolved(resolveFn, { - refetch: true, - }); - expect(refetchedData.name).toBe('a'); - expect(refetchedData.nFetchCalls).toBe(2); - }); + { + const data = await resolved(resolveFn); - test('noCache', async () => { - const { query, resolved } = await createTestClient(); + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(1); + } - const resolveFn = () => { - const human = query.human({ - name: 'a', - }); - return { - name: human.name, - nFetchCalls: query.nFetchCalls, - }; - }; + { + const data = await resolved(resolveFn); - const data = await resolved(resolveFn); + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(1); + } - expect(data.name).toBe('a'); - expect(data.nFetchCalls).toBe(1); + { + const data = await resolved(resolveFn, { refetch: true }); - const nonCachedData = await resolved(resolveFn, { - noCache: true, + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(2); + } }); - expect(nonCachedData.name).toBe('a'); - expect(nonCachedData.nFetchCalls).toBe(2); - const cachedData = await resolved(resolveFn); - - expect(cachedData.name).toBe('a'); - expect(cachedData.nFetchCalls).toBe(1); - }); -}); - -describe('resolved fetch options', () => { - test('fetch options are passed to query fetcher', async () => { - expect.assertions(2); - - const { resolved, query } = await createTestClient( - undefined, - (query, variables, fetchOptions) => { - expect({ query, variables, fetchOptions }).toStrictEqual({ - fetchOptions: { - mode: 'cors', - credentials: 'include', - }, - query: 'query{hello}', - variables: undefined, + test('noCache', async () => { + const { query, resolved } = await createTestClient( + undefined, + undefined, + undefined, + { cacheOptions: { maxAge: Infinity } } + ); + const resolveFn = () => { + const human = query.human({ + name: 'a', }); return { - data: { - hello: 'Hello World', - }, + name: human.name, + nFetchCalls: query.nFetchCalls, }; + }; + + { + const data = await resolved(resolveFn); + + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(1); } - ); - expect( - await resolved( - () => { - return query.hello; - }, - { - fetchOptions: { - mode: 'cors', - credentials: 'include', - }, - } - ) - ).toBe('Hello World'); - }); -}); + { + const data = await resolved(resolveFn, { noCache: true }); -describe('error handling', () => { - test('resolved single throws', async () => { - const { query, resolved } = await createTestClient(); + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(2); + } - await resolved( - () => { - query.throw; - }, { - retry: false, + const data = await resolved(resolveFn); + + expect(data.name).toBe('a'); + expect(data.nFetchCalls).toBe(1); } - ) - .then(() => { - throw Error("Shouldn't reach here"); - }) - .catch((err) => { - if (!(err instanceof Error)) throw Error('Incompatible error type'); - - expect(err).toEqual( - Object.assign(Error('expected error'), { - locations: [{ line: 1, column: 7 }], - path: ['throw'], - }) - ); - }); + }); }); - test('resolved multiple throws, with shorter error for production', async () => { - const { query, resolved } = await createTestClient(); + describe('resolved fetch options', () => { + test('fetch options are passed to query fetcher', async () => { + expect.assertions(2); + + const { resolved, query } = await createTestClient( + undefined, + ({ query, variables }, fetchOptions) => { + expect({ query, variables, fetchOptions }).toStrictEqual({ + fetchOptions: { + mode: 'cors', + credentials: 'include', + }, + query: 'query{hello}', + variables: undefined, + }); + return { + data: { + hello: 'Hello World', + }, + }; + } + ); - const prevProcessEnv = process.env.NODE_ENV; + expect( + await resolved( + () => { + return query.hello; + }, + { + fetchOptions: { + mode: 'cors', + credentials: 'include', + }, + } + ) + ).toBe('Hello World'); + }); + }); + + describe('error handling', () => { + test('resolved single throws', async () => { + const { query, resolved } = await createTestClient(); - try { await resolved( () => { query.throw; - query.throw2; }, { retry: false, @@ -318,9 +500,76 @@ describe('error handling', () => { if (!(err instanceof Error)) throw Error('Incompatible error type'); expect(err).toEqual( - Object.assign( - Error('GraphQL Errors, please check .graphQLErrors property'), - { + Object.assign(Error('expected error'), { + locations: [{ line: 1, column: 7 }], + path: ['throw'], + }) + ); + }); + }); + + test('resolved multiple throws, with shorter error for production', async () => { + const { query, resolved } = await createTestClient(); + + const prevProcessEnv = process.env.NODE_ENV; + + try { + await resolved( + () => { + query.throw; + query.throw2; + }, + { + retry: false, + } + ) + .then(() => { + throw Error("Shouldn't reach here"); + }) + .catch((err) => { + if (!(err instanceof Error)) throw Error('Incompatible error type'); + + expect(err).toEqual( + Object.assign( + Error('GraphQL Errors, please check .graphQLErrors property'), + { + errors: [ + { + message: 'expected error', + locations: [{ line: 1, column: 7 }], + path: ['throw'], + }, + { + message: 'expected error 2', + locations: [{ line: 1, column: 13 }], + path: ['throw2'], + }, + ], + } + ) + ); + }); + + process.env.NODE_ENV = 'production'; + + await resolved( + () => { + query.throw; + query.throw2; + }, + { + noCache: true, + retry: false, + } + ) + .then(() => { + throw Error("Shouldn't reach here"); + }) + .catch((err) => { + if (!(err instanceof Error)) throw Error('Incompatible error type'); + + expect(err).toEqual( + Object.assign(Error('GraphQL Errors'), { errors: [ { message: 'expected error', @@ -333,162 +582,98 @@ describe('error handling', () => { path: ['throw2'], }, ], - } - ) - ); - }); - - process.env.NODE_ENV = 'production'; - - await resolved( - () => { - query.throw; - query.throw2; - }, - { - noCache: true, - retry: false, - } - ) - .then(() => { - throw Error("Shouldn't reach here"); - }) - .catch((err) => { - if (!(err instanceof Error)) throw Error('Incompatible error type'); - - expect(err).toEqual( - Object.assign(Error('GraphQL Errors'), { - errors: [ - { - message: 'expected error', - locations: [{ line: 1, column: 7 }], - path: ['throw'], - }, - { - message: 'expected error 2', - locations: [{ line: 1, column: 13 }], - path: ['throw2'], - }, - ], - }) - ); - }); - } finally { - process.env.NODE_ENV = prevProcessEnv; - } - }); - - test('scheduler logs to console', async () => { - const { query } = await createTestClient(undefined, undefined, undefined, { - retry: false, + }) + ); + }); + } finally { + process.env.NODE_ENV = prevProcessEnv; + } }); - const logErrorSpy = jest - .spyOn(global.console, 'error') - .mockImplementation((message) => { - expect(message).toEqual( - Object.assign(Error('expected error'), { - locations: [{ line: 1, column: 7 }], - path: ['throw'], - }) - ); + test('network error', async () => { + const { query, resolved } = await createTestClient(undefined, () => { + throw Error('expected network error'); }); - try { - query.throw; - - await waitForExpect( - () => { - expect(logErrorSpy).toBeCalledTimes(1); - }, - 100, - 5 - ); - } finally { - logErrorSpy.mockRestore(); - } - }); + try { + await resolved(() => query.hello); - test('network error', async () => { - const { query, resolved } = await createTestClient(undefined, () => { - throw Error('expected network error'); + throw Error("shouldn't reach here"); + } catch (err: any) { + expect(err.message).toBe('expected network error'); + } }); - try { - await resolved(() => query.hello); + test('unexpected network error type', async () => { + const { query, resolved } = await createTestClient(undefined, () => { + throw 12345; + }); - throw Error("shouldn't reach here"); - } catch (err: any) { - expect(err.message).toBe('expected network error'); - } - }); + try { + await resolved(() => query.hello); - test('not expect network error type', async () => { - const { query, resolved } = await createTestClient(undefined, () => { - throw 12345; + throw Error("shouldn't reach here"); + } catch (err) { + expect(err).toStrictEqual(GQtyError.create(12345)); + } }); - - try { - await resolved(() => query.hello); - - throw Error("shouldn't reach here"); - } catch (err) { - expect(err).toStrictEqual(GQtyError.create(12345)); - } }); -}); -describe('mutation', () => { - test('mutation usage', async () => { - const { mutation, resolved } = await createTestClient(); + describe('mutation', () => { + test('mutation usage', async () => { + const { mutation, resolved } = await createTestClient(); - const data = await resolved(() => { - return mutation.sendNotification({ - message: 'hello world', + const data = await resolved(() => { + return mutation.sendNotification({ + message: 'hello world', + }); }); - }); - expect(data).toBe(true); + expect(data).toBe(true); + }); }); -}); -describe('custom query fetcher', () => { - test('empty data', async () => { - const { query, resolved } = await createTestClient( - undefined, - (_query, _variables) => { - return {}; - } - ); + describe('custom query fetcher', () => { + test('empty data', async () => { + const { query, resolved } = await createTestClient( + undefined, + (_query, _variables) => { + return {}; + } + ); - const data = await resolved(() => { - return query.hello; + const data = await resolved(() => { + return query.hello; + }); + expect(data).toBe(undefined); }); - expect(data).toBe(undefined); }); -}); -describe('buildAndFetchSelections', () => { - test('works with included cache', async () => { - const { buildAndFetchSelections, cache } = await createTestClient(); - - const QuerySelection = new Selection({ - key: 'query', - id: 0, - }); + describe('fetchSelections', () => { + test('works with included cache', async () => { + const { + schema: { query }, + } = await createTestClient(); - const HelloSelection = new Selection({ - key: 'hello', - prevSelection: QuerySelection, - id: 1, - }); + const cache = $meta(query)?.context.cache!; - await buildAndFetchSelections([HelloSelection], 'query'); + await fetchSelections( + new Set([Selection.createRoot('query').getChild('hello')]), + { + cache, + fetchOptions: { + fetcher: () => ({ data: { hello: 'hello world' } }), + }, + } + ).then((results) => { + updateCaches(results, [cache], { skipNotify: false }); + }); - expect(cache).toStrictEqual({ - query: { - hello: 'hello world', - }, + expect(cache.toJSON()).toMatchObject({ + query: { + hello: 'hello world', + }, + }); }); }); }); diff --git a/packages/gqty/test/events.test.ts b/packages/gqty/test/events.test.ts deleted file mode 100644 index f6f07b0c3..000000000 --- a/packages/gqty/test/events.test.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { GraphQLError, stripIgnoredCharacters } from 'graphql'; - -import { GQtyError, Selection, SelectionType } from '../src'; -import type { CacheChangeEventData, FetchEventData } from '../src/Events'; -import { createTestClient } from './utils'; - -describe('fetch events', () => { - test('successful query', async () => { - const { eventHandler, query, resolved, cache } = await createTestClient(); - - const onFetchData = jest - .fn() - .mockImplementation(async (dataPromise: Promise) => { - const { - executionResult, - cacheSnapshot, - query, - selections, - type, - variables, - error, - } = await dataPromise; - - expect(cache).toStrictEqual(cacheSnapshot); - - expect(stripIgnoredCharacters(query)).toBe('query{hello}'); - - expect(selections.length).toBe(1); - expect(selections[0].key).toBe('hello'); - expect(selections[0].type).toBe(SelectionType.Query); - expect(type).toBe('query'); - expect(variables).toBe(undefined); - expect(error).toBe(undefined); - - expect(executionResult?.data?.hello).toBe('hello world'); - }); - - const unsubscribe = eventHandler.onFetchSubscribe(onFetchData); - - try { - const dataPromise = resolved(() => { - return query.hello; - }); - expect(onFetchData).toBeCalledTimes(1); - - const data = await dataPromise; - - expect(data).toBe('hello world'); - } finally { - unsubscribe(); - } - }); - - test('error query', async () => { - const { eventHandler, query, resolved } = await createTestClient(); - - const onFetchData = jest - .fn() - .mockImplementation(async (dataPromise: Promise) => { - const { executionResult, error, query } = await dataPromise; - - expect(executionResult?.data).toBe(undefined); - - expect(error).toStrictEqual( - new GQtyError('expected error', { - graphQLErrors: [new GraphQLError('expected error')], - }) - ); - - expect(stripIgnoredCharacters(query)).toBe('query{throw}'); - }); - - const unsubscribe = eventHandler.onFetchSubscribe(onFetchData); - - try { - const dataPromise = resolved(() => { - return query.throw; - }); - expect(onFetchData).toBeCalledTimes(1); - - const data = await dataPromise.catch(() => {}); - - expect(data).toBe(undefined); - } finally { - unsubscribe(); - } - }); -}); - -describe('cache changes events', () => { - test('on cache change', async () => { - const { eventHandler } = await createTestClient(); - - const selectionA = new Selection({ - key: 'asd', - id: 0, - }); - const onCacheChangeFn = jest - .fn() - .mockImplementation(async ({ data, selection }: CacheChangeEventData) => { - expect(data).toBe(123); - expect(selection).toBe(selectionA); - }); - - const unsubscribe = eventHandler.onCacheChangeSubscribe(onCacheChangeFn); - - try { - eventHandler.sendCacheChange({ - selection: selectionA, - data: 123, - }); - expect(onCacheChangeFn).toBeCalledTimes(1); - } finally { - unsubscribe(); - } - }); -}); diff --git a/packages/gqty/test/helpers.test.ts b/packages/gqty/test/helpers.test.ts index faaa42576..ff007d045 100644 --- a/packages/gqty/test/helpers.test.ts +++ b/packages/gqty/test/helpers.test.ts @@ -6,10 +6,11 @@ import { prepass, selectFields, } from '../src'; +import { $meta } from '../src/Accessor'; import { createTestClient, expectConsoleWarn } from './utils'; describe('selectFields', () => { - test('recursive *, depth 1', async () => { + it('recursive *, depth 1', async () => { const { query, resolved } = await createTestClient(); const data = await resolved(() => { @@ -49,7 +50,7 @@ describe('selectFields', () => { `); }); - test('recursive *, depth 2', async () => { + it('recursive *, depth 2', async () => { const { query, resolved } = await createTestClient(); const data = await resolved(() => { @@ -86,7 +87,7 @@ describe('selectFields', () => { null, ], "father": null, - "id": "2", + "id": "4", "name": "default", "node": [ null, @@ -135,7 +136,7 @@ describe('selectFields', () => { null, ], "father": null, - "id": "2", + "id": "4", "name": "default", "node": [ null, @@ -160,7 +161,7 @@ describe('selectFields', () => { null, ], "father": null, - "id": "2", + "id": "4", "name": "default", "node": [ null, @@ -1119,27 +1120,21 @@ describe('selectFields', () => { describe('refetch function', () => { test('refetch works', async () => { - const { query, refetch, scheduler } = await createTestClient(); + const { query, refetch, resolved } = await createTestClient(); const a = query.hello; expect(a).toBe(undefined); - expect(scheduler.resolving).toBeTruthy(); - - await scheduler.resolving!.promise; + await resolved(() => query.hello); const a2 = query.hello; - expect(scheduler.resolving).toBe(null); - expect(a2).toBe('hello world'); - const a3Promise = refetch(() => query.hello); - - expect(scheduler.resolving).toBeTruthy(); + await expect(refetch(() => query.hello)).resolves.toBe('hello world'); - const a3 = await a3Promise; + const a3 = query.hello; expect(a3).toBe(a2); }); @@ -1177,7 +1172,12 @@ describe('refetch function', () => { }); test('refetch proxy selections', async () => { - const { query, resolved, refetch, cache } = await createTestClient(); + const { + query, + resolved, + refetch, + schema: cache, + } = await createTestClient(); const time1 = await resolved(() => query.time); @@ -1236,7 +1236,7 @@ describe('refetch function', () => { test('refetch proxy selections with invalid proxy', async () => { const spy = jest.spyOn(console, 'warn').mockImplementation((message) => { - expect(message).toBe('gqty: Invalid proxy to refetch!'); + expect(message).toBe('[gqty] Invalid proxy to refetch!'); }); const prevNODE_ENV = process.env.NODE_ENV; @@ -1264,25 +1264,27 @@ describe('refetch function', () => { describe('get fields', () => { test('getFields works', async () => { - const { query, scheduler, accessorCache } = await createTestClient(); + const { resolved, query } = await createTestClient( + undefined, + undefined, + undefined, + { cacheOptions: { normalization: false } } + ); - const humanProxy = getFields(query.human(), 'name'); + await resolved(() => { + const humanProxy = getFields(query.human(), 'name', 'id'); - expect(accessorCache.isProxy(humanProxy)).toBe(true); + expect($meta(humanProxy)).toBeDefined(); + }); - await scheduler.resolving!.promise; + const humanProxy = query.human(); expect(humanProxy.id).toBe('1'); - expect(humanProxy.name).toBe('default'); - const human2 = query.human({ - name: 'other', - }); - - getFields(human2); + await resolved(() => getFields(query.human({ name: 'other' }))); - await scheduler.resolving!.promise; + const human2 = query.human({ name: 'other' }); expect(JSON.stringify(human2)).toMatchInlineSnapshot( `"{"__typename":"Human","id":"2","name":"other"}"` @@ -1292,15 +1294,15 @@ describe('get fields', () => { }); test('getArrayFields works', async () => { - const { query, scheduler, accessorCache } = await createTestClient(); + const { resolved, query } = await createTestClient(); const dogsArrayProxy = getArrayFields(query.dogs, 'name'); - expect(accessorCache.isProxy(dogsArrayProxy)).toBe(true); - - await scheduler.resolving!.promise; + expect($meta(dogsArrayProxy)).toBeDefined(); - expect(query.dogs.map((v) => v.name).join(',')).toBe('a,b'); + await expect( + resolved(() => query.dogs.map((v) => v.name).join(',')) + ).resolves.toBe('a,b'); expect(getArrayFields(null)).toBe(null); @@ -1321,7 +1323,7 @@ describe('prefetch', () => { return query.time; }); - expect(resultPromise instanceof Promise).toBeTruthy(); + expect(resultPromise).toBeInstanceOf(Promise); const result = await resultPromise; expect(typeof result).toBe('string'); diff --git a/packages/gqty/test/interceptor.test.ts b/packages/gqty/test/interceptor.test.ts deleted file mode 100644 index 599dbfe85..000000000 --- a/packages/gqty/test/interceptor.test.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { createInterceptorManager, Interceptor } from '../src/Interceptor'; -import { Selection } from '../src/Selection'; - -describe('base interceptor', () => { - test('fetchSelections', async () => { - const interceptor = new Interceptor(); - - const selectionA = new Selection({ - key: 'a', - id: 0, - }); - - const interceptPromiseA = new Promise((resolve, reject) => { - const timeout = setTimeout( - reject, - 500, - Error("Intercept listener didn't work!") - ); - - interceptor.selectionAddListeners.add((selectionArg) => { - expect(selectionArg).toBe(selectionA); - clearTimeout(timeout); - resolve(); - }); - }); - - interceptor.addSelection(selectionA); - - await interceptPromiseA; - - expect(interceptor.fetchSelections.has(selectionA)).toBe(true); - - const selectionB = new Selection({ - key: 'b', - id: 1, - }); - - interceptor.listening = false; - - const interceptPromiseB = new Promise((resolve, reject) => { - const timeout = setTimeout(resolve, 500); - - interceptor.selectionAddListeners.add((_selectionArg) => { - clearTimeout(timeout); - reject(Error("It shouldn't have received the selection it!")); - }); - }); - - interceptor.addSelection(selectionB); - - await interceptPromiseB; - - expect(interceptor.fetchSelections.has(selectionB)).toBe(false); - - interceptor.removeSelections([selectionA]); - - expect(interceptor.fetchSelections.has(selectionA)).toBe(false); - }); - - test('selections cache events', async () => { - const interceptor = new Interceptor(); - - const selectionA = new Selection({ - key: 'a', - id: 0, - }); - - const interceptPromiseA = new Promise((resolve, reject) => { - const timeout = setTimeout( - reject, - 500, - Error("Intercept listener didn't work!") - ); - - interceptor.selectionCacheListeners.add((selectionArg) => { - expect(selectionArg).toBe(selectionA); - clearTimeout(timeout); - resolve(); - }); - }); - - interceptor.addSelectionCache(selectionA); - - await interceptPromiseA; - - expect(interceptor.fetchSelections.has(selectionA)).toBe(false); - - const selectionB = new Selection({ - key: 'b', - id: 1, - }); - - interceptor.listening = false; - - const interceptPromiseB = new Promise((resolve, reject) => { - const timeout = setTimeout(resolve, 500); - - interceptor.selectionCacheListeners.add((_selectionArg) => { - clearTimeout(timeout); - reject(Error("It shouldn't have received the selection it!")); - }); - }); - - interceptor.addSelectionCache(selectionB); - - await interceptPromiseB; - - expect(interceptor.fetchSelections.has(selectionB)).toBe(false); - - interceptor.removeSelections([selectionA]); - - expect(interceptor.fetchSelections.has(selectionA)).toBe(false); - }); -}); - -describe('interceptorManager', () => { - test('works', () => { - const manager = createInterceptorManager(); - - const tempInterceptor = manager.createInterceptor(); - - const selectionA = new Selection({ - key: 'a', - id: 0, - }); - - manager.addSelection(selectionA); - - expect(tempInterceptor.fetchSelections.has(selectionA)).toBe(true); - expect(manager.globalInterceptor.fetchSelections.has(selectionA)).toBe( - true - ); - - const selectionB = new Selection({ - key: 'b', - id: 1, - }); - - manager.removeInterceptor(tempInterceptor); - manager.addSelection(selectionB); - - expect(tempInterceptor.fetchSelections.has(selectionB)).toBe(false); - expect(manager.globalInterceptor.fetchSelections.has(selectionB)).toBe( - true - ); - - const selectionC = new Selection({ - key: 'c', - id: 0, - }); - - manager.addSelections([selectionC]); - - expect(manager.globalInterceptor.fetchSelections.has(selectionC)).toBe( - true - ); - - manager.removeSelections([selectionA, selectionB, selectionC]); - - expect(manager.globalInterceptor.fetchSelections.has(selectionA)).toBe( - false - ); - expect(manager.globalInterceptor.fetchSelections.has(selectionB)).toBe( - false - ); - expect(manager.globalInterceptor.fetchSelections.has(selectionC)).toBe( - false - ); - }); -}); diff --git a/packages/gqty/test/interfaces-unions.test.ts b/packages/gqty/test/interfaces-unions.test.ts index f92813bf8..93830b91d 100644 --- a/packages/gqty/test/interfaces-unions.test.ts +++ b/packages/gqty/test/interfaces-unions.test.ts @@ -1,10 +1,12 @@ -import { createTestClient, TestClient } from './utils'; +import { createTestClient } from './utils'; const testClientPromise = createTestClient(undefined, undefined, undefined, { - normalization: true, + cacheOptions: { + normalization: true, + }, }); -let testClient: TestClient; +let testClient: Awaited; beforeAll(async () => { testClient = await testClientPromise; }); @@ -123,10 +125,10 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($type1:NodeType!){node_6c4a1_78028:node(type:$type1){__typename id ...on A{id a}...on B{id b}}}", + "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename id ...on A{a}...on B{b}}}", "result": { "data": { - "node_6c4a1_78028": { + "b55fc": { "__typename": "A", "a": 1, "id": "1", @@ -134,7 +136,7 @@ describe('interfaces and unions', () => { }, }, "variables": { - "type1": "A", + "v1": "A", }, }, ] @@ -148,7 +150,12 @@ describe('interfaces and unions', () => { }); test('deep', async () => { - const { resolved, query, queries } = await createTestClient(); + const { resolved, query, queries } = await createTestClient( + undefined, + undefined, + undefined, + { cacheOptions: { normalization: false } } + ); const nodeResult = await resolved(() => { const nodeA = query.node({ @@ -181,10 +188,10 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($type1:NodeType!){node_6c4a1_78028:node(type:$type1){__typename id ...on A{id a node{__typename id ...on A{id node{__typename id ...on C{id node{__typename id ...on A{id}}}}}}}...on B{id b}}}", + "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename id ...on A{a node{__typename id ...on A{id node{__typename id ...on C{node{__typename id ...on A{id}}}}}}}...on B{b}}}", "result": { "data": { - "node_6c4a1_78028": { + "b55fc": { "__typename": "A", "a": 1, "id": "1", @@ -200,7 +207,7 @@ describe('interfaces and unions', () => { }, }, "variables": { - "type1": "A", + "v1": "A", }, }, ] diff --git a/packages/gqty/test/persistence.test.ts b/packages/gqty/test/persistence.test.ts index e4ed614ee..937799952 100644 --- a/packages/gqty/test/persistence.test.ts +++ b/packages/gqty/test/persistence.test.ts @@ -1,11 +1,117 @@ -import { createTestClient, sleep } from './utils'; +import { Cache } from '../src/Cache'; +import { defaultNormalizationHandler } from '../src/Cache/normalization'; +import { + exportCacheSnapshot, + importCacheSnapshot, +} from '../src/Cache/persistence'; +import { createTestClient, expectConsoleWarn, sleep } from './utils'; + +describe('Cache#persistence', () => { + it('should restore circular normalied snapshot', () => { + const cache = importCacheSnapshot( + { + normalized: { + 'A:1': { __typename: 'A', id: '1', b: { __ref: 'B:1' } }, + 'B:1': { __typename: 'B', id: '1', a: { __ref: 'A:1' } }, + }, + query: { + a: { __ref: 'A:1' }, + b: { c: 1 }, + }, + }, + defaultNormalizationHandler + ); + + expect(cache).toMatchInlineSnapshot(` + { + "normalizedObjects": { + "A:1": { + "__typename": "A", + "b": { + "__typename": "B", + "a": [Circular], + "id": "1", + }, + "id": "1", + }, + "B:1": { + "__typename": "B", + "a": { + "__typename": "A", + "b": [Circular], + "id": "1", + }, + "id": "1", + }, + }, + "query": { + "a": { + "__typename": "A", + "b": { + "__typename": "B", + "a": [Circular], + "id": "1", + }, + "id": "1", + }, + "b": { + "c": 1, + }, + }, + } + `); + + const snapshot = exportCacheSnapshot(cache, defaultNormalizationHandler); + + expect(snapshot).toMatchInlineSnapshot(` + { + "normalized": { + "A:1": { + "__typename": "A", + "b": { + "__ref": "B:1", + }, + "id": "1", + }, + "B:1": { + "__typename": "B", + "a": { + "__ref": "A:1", + }, + "id": "1", + }, + }, + "query": { + "a": { + "__ref": "A:1", + }, + "b": { + "c": 1, + }, + }, + } + `); + }); + + it('should persist data snapshots', () => { + const snapshot = { query: { __typename: 'a', id: 1 } }; + + const normie = new Cache(snapshot, { normalization: true }); + expect(JSON.stringify(normie)).toMatchInlineSnapshot( + `"{"query":{"__ref":"a:1"},"normalized":{"a:1":{"__typename":"a","id":1}}}"` + ); + + const hippie = new Cache(snapshot); + expect(JSON.stringify(hippie)).toMatchInlineSnapshot( + `"{"query":{"__typename":"a","id":1}}"` + ); + }); +}); test('basic functionality', async () => { const client1 = await createTestClient(); - expect(client1.backupPersistence()).toMatchInlineSnapshot( - `"{"cache":{},"selections":[[],"v1"]}"` - ); + expect(client1.persist()).toStrictEqual({}); await client1.resolved( () => @@ -14,29 +120,16 @@ test('basic functionality', async () => { }).name ); - const dataBackup1 = client1.backupPersistence(); + const dataBackup1 = client1.persist(); - expect(dataBackup1).toMatchInlineSnapshot( - `"{"cache":{"query":{"human_b8c92_a6118":{"__typename":"Human","id":"1","name":"asd"}}},"selections":[[],"v1"]}"` + expect(JSON.stringify(dataBackup1)).toMatchInlineSnapshot( + `"{"query":{"b306d":{"__ref":"Human:1"}},"normalized":{"Human:1":{"__typename":"Human","id":"1","name":"asd"}}}"` ); const client2 = await createTestClient(); - expect(client2.restorePersistence(dataBackup1)).toBe(true); - - expect(client2.cache).toMatchInlineSnapshot(` - { - "query": { - "human_b8c92_a6118": { - "__typename": "Human", - "id": "1", - "name": "asd", - }, - }, - } - `); - - expect(client2.backupPersistence()).toBe(dataBackup1); + expect(client2.restore(dataBackup1)).toBe(true); + expect(client2.persist()).toStrictEqual(dataBackup1); expect( client1.query.human({ @@ -63,7 +156,7 @@ test('basic functionality', async () => { ).toBe('1'); await client2 - .restorePersistence(async () => { + .restoreAsync(async () => { await sleep(200); throw Error(); }) @@ -72,7 +165,7 @@ test('basic functionality', async () => { }); await client2 - .restorePersistence(async () => { + .restoreAsync(async () => { await sleep(200); return dataBackup1; }) @@ -84,9 +177,31 @@ test('basic functionality', async () => { test('version check', async () => { const client1 = await createTestClient(); - const emptyPersistenceV1 = client1.backupPersistence('v1'); - expect(emptyPersistenceV1).toMatchInlineSnapshot( - `"{"version":"v1","cache":{},"selections":[[],"v1"]}"` + expectConsoleWarn((n, message) => { + switch (n) { + case 1: + expect(message).toMatchInlineSnapshot( + `"[GQty] Cache version mismatch, ignored."` + ); + break; + case 2: + expect(message).toMatchInlineSnapshot( + `"[GQty] Cache version mismatch, ignored."` + ); + break; + case 3: + expect(message).toMatchInlineSnapshot( + `"[GQty] Cache version mismatch, ignored."` + ); + break; + default: + throw Error('Unexpected warn: ' + message); + } + }); + + const emptyPersistenceV1 = client1.persist('v1'); + expect(JSON.stringify(emptyPersistenceV1)).toMatchInlineSnapshot( + `"{"version":"v1"}"` ); await client1.resolved( @@ -102,41 +217,39 @@ test('version check', async () => { }).name ).toBe('asd'); - const cacheBackupv1 = client1.backupPersistence('v1'); + const cacheBackupv1 = client1.persist('v1'); - expect(cacheBackupv1).toMatchInlineSnapshot( - `"{"version":"v1","cache":{"query":{"human_b8c92_a6118":{"__typename":"Human","id":"1","name":"asd"}}},"selections":[[],"v1"]}"` + expect(JSON.stringify(cacheBackupv1)).toMatchInlineSnapshot( + `"{"query":{"b306d":{"__ref":"Human:1"}},"normalized":{"Human:1":{"__typename":"Human","id":"1","name":"asd"}},"version":"v1"}"` ); const client2 = await createTestClient(); - const emptyPersistenceV2 = client2.backupPersistence('v2'); + const emptyPersistenceV2 = client2.persist('v2'); - expect(emptyPersistenceV2).toMatchInlineSnapshot( - `"{"version":"v2","cache":{},"selections":[[],"v1"]}"` + expect(JSON.stringify(emptyPersistenceV2)).toMatchInlineSnapshot( + `"{"version":"v2"}"` ); - expect(client2.restorePersistence(cacheBackupv1, 'v2')).toBe(false); + expect(client2.restore(cacheBackupv1, 'v2')).toBe(false); - expect(client2.backupPersistence('v2')).toBe(emptyPersistenceV2); + expect(client2.persist('v2')).toStrictEqual(emptyPersistenceV2); - const wrongBackupVersion = client2.backupPersistence(123 as any); + const wrongBackupVersion = client2.persist(123 as any); - expect(wrongBackupVersion).toMatchInlineSnapshot( - `"{"version":123,"cache":{},"selections":[[],"v1"]}"` + expect(JSON.stringify(wrongBackupVersion)).toMatchInlineSnapshot( + `"{"version":123}"` ); - expect(client2.restorePersistence(wrongBackupVersion, 123 as any)).toBe( - false - ); + expect(client2.restore(wrongBackupVersion, 123 as any)).toBe(false); - expect(client2.restorePersistence(emptyPersistenceV2)).toBe(false); + expect(client2.restore(emptyPersistenceV2)).toBe(false); - expect(client2.restorePersistence('[]')).toBe(false); + expect(client2.restore('[]' as any)).toBe(false); - expect(client2.backupPersistence('v2')).toBe(emptyPersistenceV2); + expect(client2.persist('v2')).toStrictEqual(emptyPersistenceV2); - expect(client2.restorePersistence(emptyPersistenceV2, 'v2')).toBe(true); + expect(client2.restore(emptyPersistenceV2, 'v2')).toBe(true); - expect(client2.backupPersistence('v2')).toBe(emptyPersistenceV2); + expect(client2.persist('v2')).toStrictEqual(emptyPersistenceV2); }); diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 53252ca47..6eb5f4665 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -1,14 +1,20 @@ import { selectFields } from '../src'; +import { assignSelections, setCache } from '../src/Accessor'; import { createTestClient } from './utils'; -test('ok', () => { +it('ok', () => { expect(1).toBe(1); }); -describe.skip('playground', () => { +describe('playground', () => { test('cache manipulation', async () => { - const { query, scheduler, resolved, setCache, cache } = - await createTestClient(); + const { + query, + resolved, + schema: cache, + } = await createTestClient(undefined, undefined, undefined, { + cacheOptions: { normalization: false }, + }); await resolved(() => query.human().sons.map((v) => selectFields(v))); @@ -21,83 +27,67 @@ describe.skip('playground', () => { }); expect(humanA.name).toBe('asd'); - expect(scheduler.resolving).toBe(null); - setCache( - query.human, - { name: 'zxc' }, - { - name: 'tyu', - } - ); + setCache(query.human({ name: 'zxc' }), { + name: 'tyu', + }); const humanB = query.human({ name: 'zxc', }); - expect(scheduler.resolving).toBe(null); - expect(humanB.name).toBe('tyu'); - expect(scheduler.resolving).toBe(null); - query.human().sons = []; const xd = (query.hello = 'XDXD'); expect(xd).toBe('XDXD'); - expect(scheduler.resolving).toBe(null); - const hello = query.hello; expect(hello).toBe('XDXD'); expect(query.human().sons).toEqual([]); - expect(scheduler.resolving).toBe(null); - - expect(cache).toStrictEqual({ - query: { - hello: 'XDXD', - human0: { - sons: [], - }, - human1: { - name: 'asd', - }, - human2: { - name: 'tyu', - }, - }, - }); + expect(JSON.stringify(cache)).toMatchInlineSnapshot( + `"{"query":{"human":{"sons":[]},"b306d":{"name":"asd"},"b4dd1":{"name":"tyu"},"hello":"XDXD"}}"` + ); setCache(query, { hello: 'ppp', }); - expect(cache).toStrictEqual({ - query: { - hello: 'ppp', - }, - }); + expect(JSON.stringify(query)).toMatchInlineSnapshot(`"{"hello":"ppp"}"`); }); test('assignSelections', async () => { - const { assignSelections, query, scheduler, cache, mutate, setCache } = - await createTestClient(); + const { query, schema: cache, resolve, mutate } = await createTestClient(); + + await resolve(({ query }) => query.human({ name: 'asd' }).name); const human = query.human({ name: 'asd', }); - human.name; - - await scheduler.resolving!.promise; - expect(human.name).toBe('asd'); - expect(cache).toStrictEqual({ query: { human0: { name: 'asd' } } }); + expect(cache).toMatchInlineSnapshot(` + { + "normalized": { + "Human:1": { + "__typename": "Human", + "id": "1", + "name": "asd", + }, + }, + "query": { + "b306d": { + "__ref": "Human:1", + }, + }, + } + `); const humanMutation = await mutate((mutation) => { const humanMutation = mutation.humanMutation({ @@ -109,10 +99,27 @@ describe.skip('playground', () => { setCache(human, humanMutation); - expect(cache).toStrictEqual({ - query: { human0: { name: 'zxc' } }, - mutation: { humanMutation0: { name: 'zxc' } }, - }); + expect(cache).toMatchInlineSnapshot(` + { + "mutation": { + "c9ed9": { + "__ref": "Human:2", + }, + }, + "normalized": { + "Human:2": { + "__typename": "Human", + "id": "2", + "name": "zxc", + }, + }, + "query": { + "b306d": { + "name": "zxc", + }, + }, + } + `); expect(human.name).toBe('zxc'); expect(humanMutation.name).toBe('zxc'); diff --git a/packages/gqty/test/scheduler.test.ts b/packages/gqty/test/scheduler.test.ts deleted file mode 100644 index 8cb84829d..000000000 --- a/packages/gqty/test/scheduler.test.ts +++ /dev/null @@ -1,300 +0,0 @@ -import { waitForExpect } from 'test-utils'; - -import { GQtyError } from '../src'; -import { createInterceptorManager } from '../src/Interceptor'; -import { createScheduler } from '../src/Scheduler'; -import { Selection } from '../src/Selection'; -import { createDeferredPromise } from '../src/Utils'; -import { createTestClient } from './utils'; - -test('scheduler works with globalInterceptor', async () => { - const interceptorManager = createInterceptorManager(); - - const resolveAllSelections = jest.fn(() => { - return new Promise((resolve) => setTimeout(resolve, 500)); - }); - - createScheduler(interceptorManager, resolveAllSelections, 10); - - const selection = new Selection({ - key: 'a', - id: 0, - }); - - interceptorManager.addSelection(selection); - - expect( - interceptorManager.globalInterceptor.fetchSelections.has(selection) - ).toBe(true); - - await waitForExpect( - () => { - expect(resolveAllSelections).toBeCalledTimes(1); - }, - 15, - 1 - ); - - interceptorManager.addSelection( - new Selection({ - key: 'b', - id: 1, - }) - ); - - await waitForExpect( - () => { - expect(resolveAllSelections).toBeCalledTimes(2); - }, - 15, - 1 - ); -}); - -test('scheduler resolve subscriptions', async () => { - const interceptorManager = createInterceptorManager(); - - const fetchedSelections = new Set(); - - let fetchCalls = 0; - - const ExpectedError = Error('expected'); - - const resolveAllSelections = jest.fn(async () => { - fetchCalls += 1; - - if (fetchCalls >= 3) throw ExpectedError; - - interceptorManager.globalInterceptor.fetchSelections.forEach((s) => - fetchedSelections.add(s) - ); - interceptorManager.globalInterceptor.removeSelections( - interceptorManager.globalInterceptor.fetchSelections - ); - }); - - const scheduler = createScheduler( - interceptorManager, - resolveAllSelections, - 10 - ); - - let subscriptionCalls = 0; - const subscribePromise = new Promise<() => void>((resolve, reject) => { - const unsubscribe = scheduler.subscribeResolve((promise) => { - subscriptionCalls += 1; - promise.then(() => { - resolve(unsubscribe); - }, reject); - }); - }); - expect(subscriptionCalls).toBe(0); - expect(scheduler.resolving).toBe(null); - - const selectionA = new Selection({ - key: 'a', - id: 0, - }); - interceptorManager.globalInterceptor.addSelection(selectionA); - expect(scheduler.resolving).toBeTruthy(); - - waitForExpect(() => { - expect(subscriptionCalls).toBe(1); - }, 5); - expect(fetchCalls).toBe(0); - - const unsubscribe = await subscribePromise; - - expect(scheduler.resolving).toBe(null); - - expect(fetchCalls).toBe(1); - - expect(fetchedSelections.has(selectionA)).toBeTruthy(); - - unsubscribe(); - - const selectionB = new Selection({ - key: 'b', - id: 1, - }); - interceptorManager.globalInterceptor.addSelection(selectionB); - - expect(subscriptionCalls).toBe(1); - - expect(fetchCalls).toBe(1); - expect(scheduler.resolving).toBeTruthy(); - await scheduler.resolving!.promise; - - expect(fetchCalls).toBe(2); - - expect(fetchedSelections.has(selectionB)).toBeTruthy(); - - const selectionC = new Selection({ - key: 'c', - id: 2, - }); - const selectionD = new Selection({ - key: 'd', - id: 3, - }); - - const spy = jest.spyOn(console, 'error').mockImplementationOnce((err) => { - expect(err).toBe(ExpectedError); - }); - - try { - interceptorManager.globalInterceptor.addSelection(selectionC); - interceptorManager.globalInterceptor.addSelection(selectionD); - - expect(scheduler.resolving).toBeTruthy(); - - const result = await scheduler.resolving!.promise; - - expect(result?.error).toBe(ExpectedError); - - expect(spy).toBeCalledTimes(1); - } finally { - spy.mockRestore(); - } -}); - -describe('retry', () => { - test('works on third try', async () => { - const { - query, - scheduler: { errors: schedulerErrors }, - } = await createTestClient(); - - const readyPromise = createDeferredPromise(); - let callNumber = 0; - - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); - const unsubscribe = schedulerErrors.subscribeErrors((data) => { - callNumber++; - - try { - switch (callNumber) { - case 1: { - expect('newError' in data).toBeTruthy(); - if ('newError' in data) { - expect(data.newError.message).toBe('try again, throwTry=1'); - } - break; - } - case 2: { - expect('retryPromise' in data).toBeTruthy(); - if ('retryPromise' in data) { - data.retryPromise - .then(({ error }) => { - expect(error instanceof GQtyError).toBeTruthy(); - if (error) { - expect(error.message).toBe('try again, throwTry=2'); - } - }) - .catch(readyPromise.reject); - } - break; - } - case 3: { - expect('newError' in data).toBeTruthy(); - if ('newError' in data) { - expect(data.newError.message).toBe('try again, throwTry=2'); - } - break; - } - case 4: { - expect('retryPromise' in data).toBeTruthy(); - if ('retryPromise' in data) { - data.retryPromise - .then(({ data }) => { - callNumber++; - expect(data).toEqual({ throwUntilThirdTry: true }); - readyPromise.resolve(); - }) - .catch(readyPromise.reject); - } - break; - } - case 5: { - expect('selectionsCleaned' in data).toBeTruthy(); - if ('selectionsCleaned' in data) { - expect(data.selectionsCleaned.length).toBe(1); - expect(data.selectionsCleaned[0].pathString).toBe( - 'query.throwUntilThirdTry' - ); - } - break; - } - default: - throw Error("shouldn't reach"); - } - } catch (err) { - readyPromise.reject(err); - } - }); - try { - const firstTry = query.throwUntilThirdTry; - - expect(firstTry).toBe(undefined); - - await readyPromise.promise; - expect(callNumber).toBe(6); - } finally { - consoleErrorSpy.mockRestore(); - unsubscribe(); - } - }); - - test('errors always', async () => { - const { - query, - scheduler: { errors: schedulerErrors }, - } = await createTestClient(undefined, undefined, undefined, { - retry: { - maxRetries: 3, - retryDelay: 50, - }, - }); - - const readyPromise = createDeferredPromise(); - - let callNumber = 0; - - const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(); - const unsubscribe = schedulerErrors.subscribeErrors((data) => { - const currentCallNumber = ++callNumber; - - if (callNumber % 2 === 0) { - expect('retryPromise' in data).toBeTruthy(); - if ('retryPromise' in data) { - data.retryPromise - .then(({ error }) => { - if (currentCallNumber === 6 && callNumber === 7) - readyPromise.resolve(); - - expect(error instanceof GQtyError).toBeTruthy(); - if (error) { - expect(error.message).toBe('expected error'); - } - }) - .catch(readyPromise.reject); - } - } else { - expect('newError' in data).toBeTruthy(); - if ('newError' in data) { - expect(data.newError.message).toBe('expected error'); - } - } - }); - try { - query.throw; - - await readyPromise.promise; - - expect(callNumber).toBe(7); - } finally { - unsubscribe(); - consoleErrorSpy.mockRestore(); - } - }, 10000); -}); diff --git a/packages/gqty/test/selection.test.ts b/packages/gqty/test/selection.test.ts index cb935e885..74a126dad 100644 --- a/packages/gqty/test/selection.test.ts +++ b/packages/gqty/test/selection.test.ts @@ -1,121 +1,96 @@ -import { SelectionType } from '../src/Selection/selection'; -import { - createSelectionManager, - separateSelectionTypes, -} from '../src/Selection/SelectionManager'; +import { buildQuery } from 'gqty/QueryBuilder'; +import { Selection } from '../src/Selection'; describe('selection creation', () => { - const manager = createSelectionManager(); - test('selection with manager and separating types', () => { - const selectionA = manager.getSelection({ - key: 'a', - type: SelectionType.Mutation, - }); + const mutationRoot = Selection.createRoot('mutation'); + const selectionA = mutationRoot.getChild('a'); - expect(selectionA.key).toBe('a'), expect(selectionA.alias).toBe(undefined); - expect(selectionA.type).toBe(SelectionType.Mutation); + expect(selectionA.key).toBe('a'); + expect(selectionA.alias).toBe(undefined); + expect(selectionA.root.key).toBe('mutation'); - expect(selectionA.args).toBe(undefined); - expect(selectionA.argTypes).toBe(undefined); - expect(selectionA.noIndexSelections).toEqual([selectionA]); + expect(selectionA.input?.values).toBe(undefined); + expect(selectionA.input?.types).toBe(undefined); + expect(selectionA.ancestry).toEqual([mutationRoot, selectionA]); - expect(selectionA.cachePath).toEqual(['a']); - expect(selectionA.pathString).toBe('a'); + expect(selectionA.cacheKeys).toEqual(['mutation', 'a']); - const selectionB = manager.getSelection({ - key: 'b', - prevSelection: selectionA, - }); + const selectionB = selectionA.getChild('b'); expect(selectionB.key).toBe('b'); - expect(selectionB.type).toBe(SelectionType.Mutation); + expect(selectionB.root.key).toBe('mutation'); - expect(selectionB.noIndexSelections).toEqual([selectionA, selectionB]); - expect(selectionB.cachePath).toEqual(['a', 'b']); - expect(selectionB.pathString).toBe('a.b'); + expect(selectionB.ancestry).toEqual([mutationRoot, selectionA, selectionB]); + expect(selectionB.cacheKeys).toEqual(['mutation', 'a', 'b']); - const selectionC = manager.getSelection({ - key: 0, - prevSelection: selectionB, - }); + const selectionC = selectionB.getChild(0); - expect(selectionC.noIndexSelections).toEqual(selectionB.noIndexSelections); + expect(selectionC.cacheKeys).toEqual(selectionB.cacheKeys); - const selectionD = manager.getSelection({ - key: 'd', - prevSelection: selectionC, - args: { - a: 1, - }, - argTypes: { - a: 'Int!', + const selectionD = selectionC.getChild('d', { + input: { + types: { a: 'Int!' }, + values: { a: 1 }, }, }); - expect(selectionD.cachePath).toEqual(['a', 'b', 0, 'd_3153c_9f89c']); - expect(selectionD.pathString).toBe('a.b.0.d_3153c_9f89c'); - expect(selectionD.alias).toBe('d_3153c_9f89c'); + expect(selectionD.ancestry.map((s) => s.alias ?? s.key)).toEqual([ + 'mutation', + 'a', + 'b', + 0, + 'b424a', + ]); + expect(selectionD.alias).toBe('b424a'); - const repeatSelectionD = manager.getSelection({ - key: 'd', - prevSelection: selectionC, - args: { - a: 1, - }, - argTypes: { - a: 'Int!', + const repeatSelectionD = selectionC.getChild('d', { + input: { + types: { a: 'Int!' }, + values: { a: 1 }, }, }); - expect(repeatSelectionD.cachePath).toEqual(['a', 'b', 0, 'd_3153c_9f89c']); - expect(repeatSelectionD.pathString).toBe('a.b.0.d_3153c_9f89c'); - expect(repeatSelectionD.alias).toBe('d_3153c_9f89c'); + expect(repeatSelectionD.ancestry.map((s) => s.alias ?? s.key)).toEqual([ + 'mutation', + 'a', + 'b', + 0, + 'b424a', + ]); + expect(repeatSelectionD.alias).toBe('b424a'); - const selectionE = manager.getSelection({ - key: 'e', - prevSelection: selectionD, - }); + const selectionE = selectionD.getChild('e'); - expect(selectionE.cachePath).toEqual(['a', 'b', 0, 'd_3153c_9f89c', 'e']); - expect(selectionE.pathString).toBe('a.b.0.d_3153c_9f89c.e'); + expect(selectionE.ancestry.map((s) => s.alias ?? s.key)).toEqual([ + 'mutation', + 'a', + 'b', + 0, + 'b424a', + 'e', + ]); - const selectionF = manager.getSelection({ - key: 'f', - }); + const selectionF = Selection.createRoot('f'); - const selectionG = manager.getSelection({ - key: 'g', - type: SelectionType.Subscription, - }); + const selectionG = Selection.createRoot('subscription').getChild('g'); - expect(selectionF.cachePath).toEqual(['f']); - expect(selectionF.pathString).toBe('f'); + expect(selectionF.cacheKeys).toEqual(['f']); expect( - separateSelectionTypes([ - selectionA, - selectionB, - selectionC, - selectionD, - selectionE, - selectionD, - repeatSelectionD, - selectionF, - selectionG, - ]) - ).toEqual([ - [ - selectionA, - selectionB, - selectionC, - selectionD, - selectionE, - selectionD, - repeatSelectionD, - ], - [selectionF], - [selectionG], - ]); + buildQuery( + new Set([ + selectionA, + selectionB, + selectionC, + selectionD, + selectionE, + selectionD, + repeatSelectionD, + selectionF, + selectionG, + ]) + ).length + ).toEqual(3); }); }); diff --git a/packages/gqty/test/ssr.test.tsx b/packages/gqty/test/ssr.test.tsx index 777495715..a131e98b5 100644 --- a/packages/gqty/test/ssr.test.tsx +++ b/packages/gqty/test/ssr.test.tsx @@ -1,14 +1,13 @@ import React from 'react'; import { renderToString } from 'react-dom/server'; -import semver from 'semver'; import { waitForExpect } from 'test-utils'; - +import { $meta } from '../src/Accessor'; +import { GQtyError } from '../src/Error'; import { createTestClient } from './utils'; describe('server side rendering', () => { test('expected usage works', async () => { - const { hydrateCache, prepareRender, query, setCache, scheduler } = - await createTestClient(); + const { hydrateCache, prepareRender, query } = await createTestClient(); const TestComponent = () => { return ( @@ -23,15 +22,12 @@ describe('server side rendering', () => { renderToString(); }); - expect(scheduler.resolving).toBe(null); - const time0 = query.time; - expect(scheduler.resolving).toBe(null); expect(time0).toBeTruthy(); - // We simulate the difference in server-client resetting the cache - setCache(query, null); + // We simulate the difference in server-client by resetting the cache + $meta(query)!.cache.data = {}; hydrateCache({ cacheSnapshot, @@ -51,8 +47,6 @@ describe('server side rendering', () => { expect(page).toContain(time1); - expect(scheduler.resolving).toBe(null); - await waitForExpect( () => { expect(query.time).not.toBe(time1); @@ -108,35 +102,19 @@ describe('server side rendering', () => { test('invalid cache snapshot', async () => { const { hydrateCache } = await createTestClient(); - const errorSpy = jest - .spyOn(console, 'error') - .mockImplementation((message) => { - expect(message).toEqual( - SyntaxError( - semver.gt(process.version, '19.0.0') - ? `Unexpected token 'i', "invalid" is not valid JSON` - : `Unexpected token i in JSON at position 0` - ) - ); - }); - - hydrateCache({ - cacheSnapshot: 'invalid', - }); - - expect(errorSpy).toBeCalledTimes(1); - - errorSpy.mockRestore(); + expect(() => hydrateCache({ cacheSnapshot: 'invalid' })).toThrow( + new GQtyError('Unrecognized snapshot format.') + ); }); test('empty cache snapshot', async () => { - const { hydrateCache, cache } = await createTestClient(); + const { hydrateCache, schema: cache } = await createTestClient(); const cacheSnapshot1 = JSON.stringify(cache); - hydrateCache({ - cacheSnapshot: JSON.stringify({}), - }); + expect(() => hydrateCache({ cacheSnapshot: JSON.stringify({}) })).toThrow( + new GQtyError('Unrecognized snapshot format.') + ); const cacheSnapshot2 = JSON.stringify(cache); @@ -148,6 +126,6 @@ describe('server side rendering', () => { const { cacheSnapshot } = await prepareRender(() => {}); - expect(cacheSnapshot).toBe(JSON.stringify({})); + expect(cacheSnapshot).toStrictEqual([{}]); }); }); diff --git a/packages/gqty/test/subscriptions.test.ts b/packages/gqty/test/subscriptions.test.ts index bdad6742f..758172817 100644 --- a/packages/gqty/test/subscriptions.test.ts +++ b/packages/gqty/test/subscriptions.test.ts @@ -1,47 +1,129 @@ -import { waitForExpect } from 'test-utils'; import { createDeferredPromise } from '../src/Utils'; import { createTestClient } from './utils'; -test('subscriptions with scheduler', async () => { - const { subscription, mutation, scheduler } = await createTestClient( - undefined, - undefined, - { +describe('core#resolve', () => { + it('should receive subscription data', async () => { + const { resolve } = await createTestClient(undefined, undefined, { subscriptions: true, - } - ); + }); + + const [data] = await Promise.all([ + (async () => { + return resolve(({ subscription }) => { + subscription.newNotification; + }); + })(), + (async () => { + await new Promise((r) => setTimeout(r, 1000)); + await resolve(({ mutation }) => + mutation.sendNotification({ + message: 'THIS_IS_A_MESSAGE', + }) + ); + })(), + ]); + + expect(data).toMatchInlineSnapshot(` + { + "subscription": { + "newNotification": "THIS_IS_A_MESSAGE", + }, + } + `); + }); +}); - subscription.newNotification; +describe('core#subscribe', () => { + it('should receive query changes', async () => { + const { subscribe, resolve } = await createTestClient( + undefined, + undefined, + { subscriptions: true } + ); + const receivedData: any[] = []; - await scheduler.resolving!.promise; + let refetched = false; - mutation.sendNotification({ - message: 'THIS_IS_A_MESSAGE', + for await (const data of subscribe(({ query }) => query.nFetchCalls)) { + receivedData.push(data); + + if (!refetched) { + refetched = true; + await resolve(({ query }) => query.nFetchCalls, { + fetchPolicy: 'no-cache', + }); + } else { + break; + } + } + + expect(receivedData).toStrictEqual([1, 2]); }); - await scheduler.resolving!.promise; + it('should work with mutations and subscriptions', async () => { + const { subscribe, resolve } = await createTestClient( + undefined, + undefined, + { subscriptions: true } + ); + const receivedData: any[] = []; - await waitForExpect(() => { - expect(subscription.newNotification).toBe('THIS_IS_A_MESSAGE'); - }, 1000); -}); + await Promise.all([ + (async () => { + for await (const data of subscribe( + ({ subscription }) => subscription.newNotification + )) { + receivedData.push(data); + if (receivedData.length === 2) return; + } + })(), + (async () => { + await new Promise((r) => setTimeout(r, 100)); + await resolve( + ({ mutation }) => mutation.sendNotification({ message: 'aaa' }), + { fetchPolicy: 'no-cache' } + ); + await resolve( + ({ mutation }) => mutation.sendNotification({ message: 'bbb' }), + { fetchPolicy: 'no-cache' } + ); + })(), + ]); -test('subscriptions with resolved', async () => { - const { resolved, subscription, mutate, subscriptionsClient } = - await createTestClient(undefined, undefined, { + expect(receivedData).toMatchObject(['aaa', 'bbb']); + }); + + it('should be abortable mid-flight', async () => { + const { subscribe } = await createTestClient(undefined, undefined, { subscriptions: true, }); + const aborter = new AbortController(); - const unsubscribePromise = createDeferredPromise<() => Promise>(); + setTimeout(() => aborter.abort(), 100); - const dataPromise = createDeferredPromise(); + for await (const _ of subscribe( + ({ subscription }) => subscription.newNotification, + { signal: aborter.signal } + )) { + // no-op + } + }, 500); +}); - try { - await resolved( - () => { - return subscription.newNotification; - }, - { +describe('legacy subscriptions', () => { + test('subscriptions with resolved', async () => { + const { resolved, subscription, mutate } = await createTestClient( + undefined, + undefined, + { subscriptions: true } + ); + + const unsubscribePromise = createDeferredPromise<() => Promise>(); + const dataPromise = createDeferredPromise(); + let unsubscribe: (() => Promise) | undefined; + + try { + await resolved(() => subscription.newNotification, { onSubscription(event) { unsubscribePromise.resolve(event.unsubscribe); @@ -50,131 +132,140 @@ test('subscriptions with resolved', async () => { if (event.data) dataPromise.resolve(event.data); break; } - case 'with-errors': + case 'with-errors': { console.error(event.error); unsubscribePromise.reject(event.error); dataPromise.reject(event.error); throw event.error; + } } }, - } - ); + }); - await unsubscribePromise.promise; + await unsubscribePromise.promise; - await mutate( - (mutation) => { - return mutation.sendNotification({ - message: 'OK', - }); - }, - { - onComplete(data) { - expect(data).toBe(true); + await new Promise((r) => setTimeout(r, 10)); + + await mutate( + (mutation) => { + return mutation.sendNotification({ + message: 'OK', + }); }, - } - ); + { + onComplete(data) { + expect(data).toBe(true); + }, + } + ); - await dataPromise.promise.then((data) => expect(data).toBe('OK')); - } finally { - await Promise.allSettled([ - unsubscribePromise.promise.then((v) => v()), - subscriptionsClient?.close(), - ]); - } -}, 5000); + await dataPromise.promise.then((data) => expect(data).toBe('OK')); + } finally { + await Promise.allSettled([ + unsubscribePromise.promise.then((v) => v()), + unsubscribe?.(), + ]); + } + }, 5000); -test('multiple subscriptions with resolved', async () => { - const { resolved, subscription, mutate, subscriptionsClient } = - await createTestClient(undefined, undefined, { - subscriptions: true, - }); + test('multiple subscriptions with resolved', async () => { + const { resolved, subscription, mutate } = await createTestClient( + undefined, + undefined, + { subscriptions: true } + ); - const unsubscribePromise = createDeferredPromise<() => Promise>(); + const unsubscribePromise = createDeferredPromise(); - const dataPromise = createDeferredPromise<[string, string]>(); - let data1Done = false; - const data2Promise = createDeferredPromise<[string, string]>(); + const dataPromise = createDeferredPromise<[string, string]>(); + let data1Done = false; + const data2Promise = createDeferredPromise<[string, string]>(); - try { - await resolved( - () => { - return { - newHumanName: subscription.newHuman.name, - newDogName: subscription.newDog.name, - }; - }, - { - onSubscription(event) { - unsubscribePromise.resolve(event.unsubscribe); + const unsubscribers = new Set<() => Promise>(); - switch (event.type) { - case 'data': { - if (data1Done) { - data2Promise.resolve([ - event.data.newHumanName, - event.data.newDogName, - ]); - } else { - data1Done = true; - dataPromise.resolve([ - event.data.newHumanName, - event.data.newDogName, - ]); + try { + await resolved( + () => { + return { + newHumanName: subscription.newHuman.name, + newDogName: subscription.newDog.name, + }; + }, + { + onSubscription(event) { + unsubscribers.add(event.unsubscribe); + + switch (event.type) { + case 'start': { + unsubscribePromise.resolve(); + break; } + case 'data': { + if (data1Done) { + data2Promise.resolve([ + event.data.newHumanName, + event.data.newDogName, + ]); + } else { + data1Done = true; + dataPromise.resolve([ + event.data.newHumanName, + event.data.newDogName, + ]); + } - break; + break; + } + case 'with-errors': + console.error(event.error); + unsubscribePromise.reject(event.error); + dataPromise.reject(event.error); + data2Promise.reject(event.error); + throw event.error; } - case 'with-errors': - console.error(event.error); - unsubscribePromise.reject(event.error); - dataPromise.reject(event.error); - data2Promise.reject(event.error); - throw event.error; - } - }, - } - ); + }, + } + ); - await unsubscribePromise.promise; + await unsubscribePromise.promise; - await mutate( - (mutation) => { - return mutation.humanMutation({ - nameArg: 'new_human', - }).name; - }, - { - onComplete(data) { - expect(data).toBe('new_human'); + await new Promise((r) => setTimeout(r, 10)); + + await mutate( + (mutation) => { + return mutation.humanMutation({ + nameArg: 'new_human', + }).name; }, - } - ); + { + onComplete(data) { + expect(data).toBe('new_human'); + }, + } + ); - await dataPromise.promise.then((data) => - expect(data).toStrictEqual(['new_human', undefined]) - ); + await dataPromise.promise.then((data) => + expect(data).toStrictEqual(['new_human', undefined]) + ); - await mutate( - (mutation) => { - return mutation.createDog({ - name: 'new_dog', - }).name; - }, - { - onComplete(data) { - expect(data).toBe('new_dog'); + await mutate( + (mutation) => { + return mutation.createDog({ + name: 'new_dog', + }).name; }, - } - ); + { + onComplete(data) { + expect(data).toBe('new_dog'); + }, + } + ); - await data2Promise.promise.then((data) => - expect(data).toStrictEqual(['new_human', 'new_dog']) - ); - } finally { - await Promise.allSettled([ - unsubscribePromise.promise.then((v) => v()), - subscriptionsClient!.close(), - ]); - } -}, 5000); + await data2Promise.promise.then((data) => + expect(data).toStrictEqual(['new_human', 'new_dog']) + ); + } finally { + unsubscribers.forEach((v) => v()); + } + }, 5000); +}); diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index 9ae3cbdab..1c51668fc 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -1,40 +1,17 @@ +import { createClient as createWsClient } from 'graphql-ws'; import { createTestApp, gql, TestApp } from 'test-utils'; - +import type { PartialDeep } from 'type-fest'; +import { WebSocket } from 'ws'; +import { gqtyConfigPromise } from '../../cli/src/config'; import { generate } from '../../cli/src/generate'; -import { createSubscriptionsClient } from '../../subscriptions/src/index'; -import { - ClientOptions, - createClient, - DeepPartial, - QueryFetcher, - Schema, - SchemaUnionsKey, - SubscriptionsClient, - GQtyClient, -} from '../src'; +import { QueryFetcher, Schema, SchemaUnionsKey } from '../src'; +import { ClientOptions, createClient as createGQtyClient } from '../src/Client'; import { deepAssign } from '../src/Utils'; -import { gqtyConfigPromise } from '../../cli/src/config'; - afterAll(async () => { await gqtyConfigPromise; }); -type ObjectTypesNames = 'Human' | 'Query' | 'Mutation' | 'Subscription'; - -type ObjectTypes = { - Human: Human; - Query: { - __typename: 'Query'; - }; - Mutation: { - __typename: 'Mutation'; - }; - Subscription: { - __typename: 'Subscription'; - }; -}; - export type Maybe = T | null; export type Human = { __typename: 'Human'; @@ -149,7 +126,7 @@ export interface TestClientConfig { subscriptions?: boolean; } -export type TestClient = GQtyClient & { +export type TestClient = ReturnType & { client: TestApp; queries: { query: string; @@ -158,11 +135,11 @@ export type TestClient = GQtyClient & { }; export const createTestClient = async ( - addedToGeneratedSchema?: DeepPartial, + addedToGeneratedSchema?: PartialDeep, queryFetcher?: QueryFetcher, config?: TestClientConfig, - clientConfig: Partial> = {} -): Promise => { + clientConfig: Partial = {} +) => { let dogId = 0; const dogs: { name: string; id: number }[] = [ { @@ -552,7 +529,7 @@ export const createTestClient = async ( ); if (queryFetcher == null) { - queryFetcher = async (query, variables) => { + queryFetcher = async ({ query, variables }) => { const index = queries.push({ query, @@ -569,29 +546,32 @@ export const createTestClient = async ( }; } - let subscriptionsClient: SubscriptionsClient | undefined; - - subscriptionsClient = config?.subscriptions - ? createSubscriptionsClient({ - wsEndpoint: client.endpoint.replace('http:', 'ws:'), - reconnect: false, + const subscriptionsClient = config?.subscriptions + ? createWsClient({ + url: client.endpoint.replace('http:', 'ws:'), + retryAttempts: 0, + webSocketImpl: WebSocket, + lazy: true, }) : undefined; subscriptionsClient && TeardownPromises.push( LazyPromise(() => { - subscriptionsClient!.close(); + subscriptionsClient.terminate(); }) ); const testClient = Object.assign( - createClient({ - schema: deepAssign(generatedSchema, [addedToGeneratedSchema]) as Schema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + createGQtyClient({ ...clientConfig, + schema: deepAssign(generatedSchema, [addedToGeneratedSchema]) as Schema, + fetchOptions: { + ...clientConfig.fetchOptions, + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, + scalars: scalarsEnumsHash, }), { client, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 00ac5c6c3..b2ca31ab2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -812,9 +812,24 @@ importers: packages/gqty: dependencies: - '@gqty/utils': - specifier: workspace:^1.0.0 - version: link:../utils/dist + flatted: + specifier: ^3.2.7 + version: 3.2.7 + just-has: + specifier: ^2.3.0 + version: 2.3.0 + just-memoize: + specifier: ^2.2.0 + version: 2.2.0 + just-safe-get: + specifier: ^4.2.0 + version: 4.2.0 + just-safe-set: + specifier: ^4.2.1 + version: 4.2.1 + object-hash: + specifier: ^3.0.0 + version: 3.0.0 devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -825,6 +840,9 @@ importers: '@types/node': specifier: ^18.15.5 version: 18.15.5 + '@types/object-hash': + specifier: ^3.0.2 + version: 3.0.2 '@types/react': specifier: ^17.0.53 version: 17.0.53 @@ -852,12 +870,12 @@ importers: graphql: specifier: ^16.6.0 version: 16.6.0 + graphql-ws: + specifier: ^5.11.3 + version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) - just-memoize: - specifier: ^2.2.0 - version: 2.2.0 mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -885,6 +903,9 @@ importers: tsc-watch: specifier: ^6.0.0 version: 6.0.0(typescript@4.9.5) + type-fest: + specifier: ^3.6.1 + version: 3.6.1 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -1440,7 +1461,7 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -2196,7 +2217,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) transitivePeerDependencies: @@ -6713,6 +6734,10 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true + /@types/object-hash@3.0.2: + resolution: {integrity: sha512-tfyXl1JPCf2hzIDK29gO7qGqJjThKBzg/Cn3bA68R9NmWdOx+f7k5mm4to/n43BHspCwcoUC6FU4NpUoK/h9bQ==} + dev: true + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false @@ -7398,7 +7423,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.0 + '@babel/compat-data': 7.21.4 '@babel/core': 7.21.0 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) semver: 6.3.0 @@ -10207,6 +10232,9 @@ packages: pkg-dir: 4.2.0 dev: true + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flow-parser@0.185.2: resolution: {integrity: sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==} engines: {node: '>=0.4.0'} @@ -10621,7 +10649,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: '*' dependencies: graphql: 16.6.0 @@ -12147,7 +12175,7 @@ packages: '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) '@babel/preset-env': 7.21.4(@babel/core@7.21.0) '@babel/preset-flow': 7.21.4(@babel/core@7.21.0) '@babel/preset-typescript': 7.21.4(@babel/core@7.21.0) @@ -12249,9 +12277,17 @@ packages: graceful-fs: 4.2.10 dev: false + /just-has@2.3.0: + resolution: {integrity: sha512-JzxCot/ETqLDullSSC5OtT/PLWiqgRNO5z33gVit6BoCXe/6BHut33o9ZunG5jQSqeY4EyzFnl8Wqc7S8Ci/wQ==} + /just-memoize@2.2.0: resolution: {integrity: sha512-zriv+MY+61RXT0QsrO1ZJtL5umouqqSWmCGBkp2wJm35kniunBAA4qhUKx8Lvg/QcwrF9xuw9E6PkevKFf4boQ==} - dev: true + + /just-safe-get@4.2.0: + resolution: {integrity: sha512-+tS4Bvgr/FnmYxOGbwziJ8I2BFk+cP1gQHm6rm7zo61w1SbxBwWGEq/Ryy9Gb6bvnloPq6pz7Bmm4a0rjTNlXA==} + + /just-safe-set@4.2.1: + resolution: {integrity: sha512-La5CP41Ycv52+E4g7w1sRV8XXk7Sp8a/TwWQAYQKn6RsQz1FD4Z/rDRRmqV3wJznS1MDF3YxK7BCudX1J8FxLg==} /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} @@ -12946,25 +12982,25 @@ packages: '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.0) '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.0) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.0) '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.0) '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.0) @@ -13008,7 +13044,7 @@ packages: resolution: {integrity: sha512-l4VZKzdqafipriETYR6lsrwtavCF1+CMhCOY9XbyWeTrpGSNgJQgdeJpttzEZTHQQTLR0csQo0nD1ef3zEP6IQ==} dependencies: '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 invariant: 2.2.4 metro-symbolicate: 0.73.9 nullthrows: 1.1.1 @@ -13079,7 +13115,7 @@ packages: '@babel/parser': 7.21.2 '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 absolute-path: 0.0.0 accepts: 1.3.8 async: 3.2.4 @@ -13980,6 +14016,10 @@ packages: engines: {node: '>= 6'} dev: false + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true @@ -17884,5 +17924,11 @@ packages: optional: true dependencies: '@gqty/utils': link:packages/utils/dist + flatted: 3.2.7 graphql: 17.0.0-alpha.2 + just-has: 2.3.0 + just-memoize: 2.2.0 + just-safe-get: 4.2.0 + just-safe-set: 4.2.1 + object-hash: 3.0.0 dev: true diff --git a/tsconfig.json b/tsconfig.json index fe54c7682..b417ee33a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,8 +22,6 @@ "gqty/*": ["packages/gqty/src/*"], "@gqty/cli": ["packages/cli/src/index.ts"], "@gqty/cli/*": ["packages/cli/src/*"], - "@gqty/utils/sha1": ["packages/utils/lib/sha1.ts"], - "@gqty/utils/mergeWith": ["packages/utils/lib/mergeWith.ts"], "test-utils": ["internal/test-utils/src/index.ts"] }, "importsNotUsedAsValues": "error" From 551fbd75625824c2de5837f53d7ba5282e1125c2 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 5 Mar 2023 00:55:06 +0800 Subject: [PATCH 006/122] feat(package/subscriptions): drop it for graphql-ws --- packages/subscriptions/.browserslistrc | 1 - packages/subscriptions/CHANGELOG.md | 129 ----- packages/subscriptions/LICENSE | 24 - packages/subscriptions/README.md | 3 - packages/subscriptions/jest.config.js | 1 - packages/subscriptions/package.json | 63 --- packages/subscriptions/src/index.ts | 185 ------- .../subscriptions/src/subscription/client.ts | 462 ------------------ .../src/subscription/protocol.ts | 13 - packages/subscriptions/src/utils.ts | 26 - packages/subscriptions/test/index.test.ts | 5 - packages/subscriptions/test/tsconfig.json | 15 - packages/subscriptions/tsconfig.json | 3 - 13 files changed, 930 deletions(-) delete mode 100644 packages/subscriptions/.browserslistrc delete mode 100644 packages/subscriptions/CHANGELOG.md delete mode 100644 packages/subscriptions/LICENSE delete mode 100644 packages/subscriptions/README.md delete mode 100644 packages/subscriptions/jest.config.js delete mode 100644 packages/subscriptions/package.json delete mode 100644 packages/subscriptions/src/index.ts delete mode 100644 packages/subscriptions/src/subscription/client.ts delete mode 100644 packages/subscriptions/src/subscription/protocol.ts delete mode 100644 packages/subscriptions/src/utils.ts delete mode 100644 packages/subscriptions/test/index.test.ts delete mode 100644 packages/subscriptions/test/tsconfig.json delete mode 100644 packages/subscriptions/tsconfig.json diff --git a/packages/subscriptions/.browserslistrc b/packages/subscriptions/.browserslistrc deleted file mode 100644 index c863becca..000000000 --- a/packages/subscriptions/.browserslistrc +++ /dev/null @@ -1 +0,0 @@ -node 10 \ No newline at end of file diff --git a/packages/subscriptions/CHANGELOG.md b/packages/subscriptions/CHANGELOG.md deleted file mode 100644 index 608d9c673..000000000 --- a/packages/subscriptions/CHANGELOG.md +++ /dev/null @@ -1,129 +0,0 @@ -# @gqty/subscriptions - -## 2.0.1 - -### Patch Changes - -- f6277a4: Don't force unsubscribe in cleanup functions - -## 2.0.0 - -### Patch Changes - -- Updated dependencies [3586c45] -- Updated dependencies [3586c45] - - gqty@2.0.0 - -## 1.0.2 - -### Patch Changes - -- 1fc2672: add "sideEffects: false" for improved tree-shaking -- Updated dependencies [1fc2672] - - gqty@1.1.2 - -## 1.0.1 - -### Patch Changes - -- 3784c2b: release -- Updated dependencies [3784c2b] - - gqty@1.0.1 - -## 1.0.12 - -### Patch Changes - -- 3f08372: publish fork -- Updated dependencies [3f08372] - - gqty@2.0.15 - -## 1.0.11 - -### Patch Changes - -- af6a437: - Rename `gqtyConfig` to `GQtyConfig` (so it's consistent with the new logo) - - Rename `gqtyError` to `GQtyError` - - Remove `endpoint` option from the configuration, and instead always defaults to introspection one - - It's confusing why theres two of them, and the user can change it later by modifying the file anyway -- Updated dependencies [4a3d5ef] -- Updated dependencies [af6a437] - - gqty@2.0.13 - -## 1.0.10 - -### Patch Changes - -- Updated dependencies [65c4d32] - - gqty@2.0.10 - -## 1.0.9 - -### Patch Changes - -- Updated dependencies [6a9269f] - - gqty@2.0.9 - -## 1.0.8 - -### Patch Changes - -- Updated dependencies [c74442e] -- Updated dependencies [d78f2ab] -- Updated dependencies [0ffaa9d] - - gqty@2.0.8 - -## 1.0.7 - -### Patch Changes - -- Updated dependencies [ff66195] -- Updated dependencies [63fd3ea] -- Updated dependencies [40d2101] - - gqty@2.0.7 - -## 1.0.6 - -### Patch Changes - -- 173e11d: add subscriptions to events -- Updated dependencies [173e11d] -- Updated dependencies [c613410] - - gqty@2.0.6 - -## 1.0.5 - -### Patch Changes - -- Updated dependencies [6fef085] - - gqty@2.0.5 - -## 1.0.4 - -### Patch Changes - -- Updated dependencies [2bf4ce2] - - gqty@2.0.4 - -## 1.0.3 - -### Patch Changes - -- 27f9ece: set "graphql" as optional peerDependency -- Updated dependencies [27f9ece] - - gqty@2.0.3 - -## 1.0.2 - -### Patch Changes - -- Updated dependencies [c06ef80] - - gqty@2.0.2 - -## 1.0.1 - -### Patch Changes - -- a57cab4: official beta v2 publish -- Updated dependencies [a57cab4] - - gqty@2.0.1 diff --git a/packages/subscriptions/LICENSE b/packages/subscriptions/LICENSE deleted file mode 100644 index 559a108a4..000000000 --- a/packages/subscriptions/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -# The MIT License (MIT) - -Copyright © 2021 GQty - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the “Software”), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/subscriptions/README.md b/packages/subscriptions/README.md deleted file mode 100644 index c2c19027d..000000000 --- a/packages/subscriptions/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @gqty/subscription - -## Visit [https://gqty.dev/docs/client/subscriptions](https://gqty.dev/docs/client/subscriptions) diff --git a/packages/subscriptions/jest.config.js b/packages/subscriptions/jest.config.js deleted file mode 100644 index 6e155aacb..000000000 --- a/packages/subscriptions/jest.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('test-utils/jest.config.js').default; diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json deleted file mode 100644 index 8b5bbe758..000000000 --- a/packages/subscriptions/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@gqty/subscriptions", - "version": "2.0.1", - "homepage": "https://gqty.dev", - "repository": { - "type": "git", - "url": "https://github.com/gqty-dev/gqty.git" - }, - "author": "PabloSzx ", - "sideEffects": false, - "exports": { - ".": { - "require": "./dist/index.js", - "import": "./dist/index.mjs" - }, - "./*": { - "require": "./dist/*.js", - "import": "./dist/*.mjs" - } - }, - "main": "dist/index.js", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist", - "src" - ], - "scripts": { - "build": "bob-esbuild build", - "dev": "bob-esbuild watch", - "prepare": "bob-esbuild build", - "postpublish": "gh-release", - "start": "bob-esbuild watch", - "test": "jest" - }, - "dependencies": { - "isomorphic-ws": "^5.0.0", - "ws": "^8.13.0" - }, - "devDependencies": { - "@types/node": "^18.15.5", - "@types/ws": "^8.5.4", - "bob-esbuild-cli": "^4.0.0", - "esbuild": "^0.17.12", - "gqty": "workspace:^2.3.0", - "graphql": "^16.6.0", - "test-utils": "workspace:^0.1.0", - "tslib": "^2.5.0", - "typescript": "^4.9.5" - }, - "peerDependencies": { - "gqty": "workspace:^2.0.0", - "graphql": "*" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - } - }, - "publishConfig": { - "directory": "dist" - } -} diff --git a/packages/subscriptions/src/index.ts b/packages/subscriptions/src/index.ts deleted file mode 100644 index c2b7cfcc8..000000000 --- a/packages/subscriptions/src/index.ts +++ /dev/null @@ -1,185 +0,0 @@ -import { - GQtyError, - Selection, - SubscribeEvents, - SubscriptionsClient, -} from 'gqty'; - -import { - Client, - ClientOptions, - OperationCallback, -} from './subscription/client'; - -export interface SubscriptionsClientOptions extends ClientOptions { - wsEndpoint: string | (() => string | Promise); -} - -export type PossiblePromise = Promise | T; - -type SubContext = { - selections: Selection[]; - query: string; - variables: Record | undefined; - operationId: string; -}; - -export function createSubscriptionsClient({ - wsEndpoint, - ...opts -}: SubscriptionsClientOptions): SubscriptionsClient { - const urlPromise = Promise.resolve( - typeof wsEndpoint === 'string' ? wsEndpoint : wsEndpoint() - ); - - let wsClientValue: Client | undefined; - - const wsClientPromise: Promise = new Promise((resolve, reject) => { - urlPromise - .then((url) => { - const client = new Client(url, { - ...opts, - }); - wsClientValue = client; - resolve(client); - }) - .catch(reject); - }); - - const SubscriptionsSelections: Map> = new Map(); - - const eventsReference = new WeakMap< - ((ctx: SubContext) => SubscribeEvents) | SubscribeEvents, - OperationCallback - >(); - - return { - subscribe({ query, variables, events, cacheKey, selections }) { - let operationId: string = 'NO_ID'; - const ctx: SubContext = { - query, - variables, - operationId, - selections, - }; - if (wsClientValue) { - return execSubscribe(wsClientValue); - } else { - return wsClientPromise.then((wsSubClient) => - execSubscribe(wsSubClient) - ); - } - - function execSubscribe( - wsSubClient: Client - ): ReturnType { - let callback: OperationCallback | undefined; - - if (!(callback = eventsReference.get(events))) { - const { onData, onError, onComplete, onStart } = - typeof events === 'function' ? events(ctx) : events; - - callback = function ({ payload, operationId }) { - ctx.operationId = operationId; - switch (payload) { - case 'start': - onStart?.(); - break; - case 'complete': - SubscriptionsSelections.delete(operationId); - onComplete?.(); - break; - default: - const { data, errors } = payload; - if (errors?.length) { - onError({ - data, - error: GQtyError.fromGraphQLErrors(errors), - }); - } else if (data) { - onData(data); - } - } - }; - eventsReference.set(events, callback); - } - - const operationIdPromise = wsSubClient.createSubscription( - query, - variables, - callback, - cacheKey - ); - - if (operationIdPromise instanceof Promise) { - return operationIdPromise.then((id) => { - ctx.operationId = operationId = id; - return returnSub(id); - }); - } else { - ctx.operationId = operationId = operationIdPromise; - return returnSub(operationId); - } - - function returnSub(operationId: string) { - const unsubscribe = async () => { - await wsSubClient.unsubscribe(operationId); - SubscriptionsSelections.delete(operationId); - }; - SubscriptionsSelections.set(operationId, new Set(selections)); - - return { - unsubscribe, - operationId, - }; - } - } - }, - async unsubscribe(selections) { - const wsClient = wsClientValue || (await wsClientPromise); - - let promises: Promise[] = []; - const operationIds: string[] = []; - - checkOperations: for (const [ - operationId, - operationSelections, - ] of SubscriptionsSelections.entries()) { - for (const selection of selections) { - if (operationSelections.has(selection)) { - operationIds.push(operationId); - promises.push(wsClient.unsubscribe(operationId)); - SubscriptionsSelections.delete(operationId); - continue checkOperations; - } - } - } - - if (promises.length) await Promise.all(promises); - - return operationIds; - }, - async close() { - const wsClient = wsClientValue || (await wsClientPromise); - - wsClient.close(); - }, - setConnectionParams(connectionParams, restartClient) { - if (wsClientValue) { - wsClientValue.connectionInitPayload = connectionParams; - if (restartClient && wsClientValue.socket) { - wsClientValue.close(true); - } - } else { - wsClientPromise - .then((wsClient) => { - wsClient.connectionInitPayload = connectionParams; - if (restartClient && wsClient.socket) { - wsClient.close(true); - } - }) - .catch(console.error); - } - }, - }; -} diff --git a/packages/subscriptions/src/subscription/client.ts b/packages/subscriptions/src/subscription/client.ts deleted file mode 100644 index 72df0e33a..000000000 --- a/packages/subscriptions/src/subscription/client.ts +++ /dev/null @@ -1,462 +0,0 @@ -// Based on https://github.com/mercurius-js/mercurius/blob/master/lib/subscription-client.js - -import type { GraphQLError } from 'graphql'; -import WebSocket from 'isomorphic-ws'; - -import { createDeferredPromise, DeferredPromise, GQLResponse } from '../utils'; -import { - GQL_COMPLETE, - GQL_CONNECTION_ACK, - GQL_CONNECTION_ERROR, - GQL_CONNECTION_INIT, - GQL_CONNECTION_KEEP_ALIVE, - GQL_DATA, - GQL_ERROR, - GQL_START, - GQL_STOP, - GRAPHQL_WS, -} from './protocol'; - -export type OperationHandlerPayload = GQLResponse | 'start' | 'complete'; - -export interface OperationCallbackArg { - operationId: string; - payload: OperationHandlerPayload; -} - -export type OperationCallback = (arg: OperationCallbackArg) => void; - -export interface Operation { - started: boolean; - options: { - query: string; - variables?: Record; - }; - callbacks: Set; - handler: (data: OperationHandlerPayload) => void; - extensions?: { type: string; payload: unknown }[]; -} - -export interface ClientOptions { - /** - * Should the websocket connection try to reconnect - * - * @default true - */ - reconnect?: boolean; - /** - * Amount of reconnection attempts - * - * @default Infinity - */ - maxReconnectAttempts?: number; - connectionCallback?: () => void; - failedConnectionCallback?: (payload: unknown) => Promise; - failedReconnectCallback?: () => void; - connectionInitPayload?: - | (() => Promise> | Record) - | Record; - - headers?: Record; - /** - * Controls when should the connection be established. - * - * `false`: Establish a connection immediately. - * - * `true`: Establish a connection on first subscribe and close on last unsubscribe. - * - * @default true - */ - lazy?: boolean; -} - -export class Client { - subscriptionQueryMap: Record; - - socket: WebSocket | null; - headers; - uri; - operationId; - ready; - operations: Map; - operationsCount: Record; - tryReconnect; - maxReconnectAttempts; - reconnectAttempts; - connectionCallback; - failedConnectionCallback; - failedReconnectCallback; - connectionInitPayload; - closedByUser?: boolean; - reconnecting?: boolean; - reconnectTimeoutId?: ReturnType; - lazy; - - connectedPromise: DeferredPromise; - socketReady: DeferredPromise | undefined; - - constructor( - uri: string, - { - headers = {}, - reconnect = true, - maxReconnectAttempts = Infinity, - connectionCallback, - failedConnectionCallback, - failedReconnectCallback, - connectionInitPayload = {}, - lazy = true, - }: ClientOptions - ) { - this.uri = uri; - this.socket = null; - this.operationId = 0; - this.ready = false; - this.operations = new Map(); - this.operationsCount = {}; - this.lazy = lazy; - - this.subscriptionQueryMap = {}; - - this.headers = headers; - this.tryReconnect = reconnect; - this.maxReconnectAttempts = maxReconnectAttempts; - this.reconnectAttempts = 0; - this.connectionCallback = connectionCallback; - this.failedConnectionCallback = failedConnectionCallback; - this.failedReconnectCallback = failedReconnectCallback; - this.connectionInitPayload = connectionInitPayload; - - if (!lazy) this.connect(); - - this.connectedPromise = createDeferredPromise(); - } - - connect() { - if (this.socket !== null) return; - - this.socket = new WebSocket(this.uri, [GRAPHQL_WS], { - headers: this.headers, - }); - const readyPromise = (this.socketReady = createDeferredPromise()); - - this.socket.onopen = async () => { - if (this.socket && this.socket.readyState === WebSocket.OPEN) { - try { - const payload = - typeof this.connectionInitPayload === 'function' - ? await this.connectionInitPayload() - : this.connectionInitPayload; - this.sendMessage(null, GQL_CONNECTION_INIT, payload); - readyPromise.resolve(true); - } catch (err) { - this.close(this.tryReconnect, false); - readyPromise.resolve(false); - } - } else { - readyPromise.resolve(false); - } - }; - - this.socket.onclose = () => { - if (!this.closedByUser) { - this.close(this.tryReconnect, false); - } - readyPromise.resolve(false); - }; - - this.socket.onerror = () => {}; - - this.socket.onmessage = async ({ data }) => { - await this.handleMessage(data.toString('utf-8')); - }; - } - - close(tryReconnect = false, closedByUser = true) { - this.closedByUser = closedByUser; - this.ready = false; - this.connectedPromise.resolve(Error('Socket closed!')); - - if (this.socket !== null) { - if (closedByUser) { - this.unsubscribeAll(); - } - - this.socket.close(); - this.socket = null; - this.reconnecting = false; - - if (tryReconnect) { - this.connectedPromise = createDeferredPromise(); - - for (const operationId of this.operations.keys()) { - const operation = this.operations.get(operationId); - - if (operation) { - this.operations.set(operationId, { - ...operation, - started: false, - }); - } - } - - this.reconnect(); - } - } - } - - getReconnectDelay() { - const delayMs = 100 * Math.pow(2, this.reconnectAttempts); - - return Math.min(delayMs, 10000); - } - - reconnect() { - if ( - this.reconnecting || - this.reconnectAttempts > this.maxReconnectAttempts - ) { - return this.failedReconnectCallback && this.failedReconnectCallback(); - } - - this.reconnectAttempts++; - this.reconnecting = true; - - const delay = this.getReconnectDelay(); - - this.reconnectTimeoutId = setTimeout(() => { - this.connect(); - }, delay); - } - - async unsubscribe(operationId: string, forceUnsubscribe = false) { - let count = this.operationsCount[operationId]; - count--; - - if (count === 0 || forceUnsubscribe) { - this.operationsCount[operationId] = 0; - - this.operations.delete(operationId); - - await this.sendMessage(operationId, GQL_STOP, null); - - if (this.lazy) { - const self = this; - - setTimeout(() => { - if (self.operations.size === 0 && this.socket) { - self.close(); - } - }, 2000); - } - } else { - this.operationsCount[operationId] = count; - } - } - - unsubscribeAll() { - for (const operationId of this.operations.keys()) { - this.unsubscribe(operationId, true).catch(console.error); - } - } - - sendMessage( - operationId: number | string | null, - type: string, - payload: unknown = {}, - extensions?: unknown - ) { - return new Promise(async (resolve, reject) => { - try { - if (this.socketReady) { - const isOk = await this.socketReady.promise; - - if (!isOk) return resolve(); - } - - if (!this.socket) return resolve(); - - this.socket.send( - JSON.stringify({ - id: operationId, - type, - payload, - extensions, - }), - (err) => { - if (err) console.error(err); - - resolve(); - } - ); - setTimeout(resolve, 200); - } catch (err) { - reject(err); - } - }); - } - - async handleMessage(message: string) { - let data; - let operationId; - let operation; - - try { - data = JSON.parse(message); - operationId = data.id; - } catch (e) { - throw new Error( - `Invalid message received: "${message}" Message must be JSON parsable.` - ); - } - - if (operationId) { - operation = this.operations.get(operationId); - } - - switch (data.type) { - case GQL_CONNECTION_ACK: - this.reconnecting = false; - this.ready = true; - this.reconnectAttempts = 0; - this.connectedPromise.resolve(); - - for (const operationId of this.operations.keys()) { - this.startOperation(operationId).catch(console.error); - } - - if (this.connectionCallback) { - this.connectionCallback(); - } - - break; - case GQL_DATA: - if (operation) operation.handler(data.payload); - break; - case GQL_ERROR: - if (operation) { - operation.handler({ - data: null, - errors: [{ message: data.payload } as GraphQLError], - }); - this.operations.delete(operationId); - } - break; - case GQL_COMPLETE: - if (operation) { - operation.handler('complete'); - this.operations.delete(operationId); - } - break; - case GQL_CONNECTION_ERROR: - this.close(this.tryReconnect, false); - if (this.failedConnectionCallback) { - await this.failedConnectionCallback(data.payload); - } - break; - case GQL_CONNECTION_KEEP_ALIVE: - break; - default: - throw new Error(`Invalid message type: "${data.type}"`); - } - } - - async startOperation(operationId: string) { - try { - await this.connectedPromise.promise; - - const operation = this.operations.get(operationId); - if (!operation) throw Error('Operation not found, ' + operationId); - - const { started, options, extensions } = operation; - - if (!started) { - if (!this.ready) return; - - this.operations.set(operationId, { - ...operation, - started: true, - }); - await this.sendMessage(operationId, GQL_START, options, extensions); - } - } finally { - } - } - - createSubscription( - query: string, - variables: Record | undefined, - publish: OperationCallback, - subscriptionString?: string - ): Promise | string { - if (!this.socket) this.connect(); - - subscriptionString ||= JSON.stringify({ - query, - variables, - }); - - let operationId = this.subscriptionQueryMap[subscriptionString]; - - let startPromise: Promise | undefined; - - try { - let existingOperation: Operation | undefined; - if ( - operationId && - (existingOperation = this.operations.get(operationId)) - ) { - existingOperation.callbacks.add(publish); - this.operationsCount[operationId] = - this.operationsCount[operationId] + 1; - return operationId; - } - - operationId = String(++this.operationId); - - const callbacks = new Set([publish]); - - function handler(payload: OperationHandlerPayload) { - const event: OperationCallbackArg = { - operationId, - payload, - }; - for (const cb of callbacks) { - try { - cb(event); - } catch (err) { - console.error(err); - } - } - } - - const operation: Operation = { - started: false, - options: { query, variables }, - handler, - callbacks, - }; - - this.operations.set(operationId, operation); - - startPromise = this.startOperation(operationId); - this.operationsCount[operationId] = 1; - - this.subscriptionQueryMap[subscriptionString] = operationId; - - return startPromise.then(() => operationId); - } finally { - function start() { - setTimeout(() => { - publish({ - operationId, - payload: 'start', - }); - }, 0); - } - - if (startPromise) startPromise.then(start); - else start(); - } - } -} diff --git a/packages/subscriptions/src/subscription/protocol.ts b/packages/subscriptions/src/subscription/protocol.ts deleted file mode 100644 index 7a7b3d0a2..000000000 --- a/packages/subscriptions/src/subscription/protocol.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const GQL_CONNECTION_INIT = 'connection_init'; // Client -> Server -export const GQL_CONNECTION_ACK = 'connection_ack'; // Server -> Client -export const GQL_CONNECTION_ERROR = 'connection_error'; // Server -> Client -export const GQL_CONNECTION_KEEP_ALIVE = 'ka'; // Server -> Client - -export const GQL_CONNECTION_TERMINATE = 'connection_terminate'; // Client -> Server -export const GQL_START = 'start'; // Client -> Server -export const GQL_DATA = 'data'; // Server -> Client -export const GQL_ERROR = 'error'; // Server -> Client -export const GQL_COMPLETE = 'complete'; // Server -> Client -export const GQL_STOP = 'stop'; // Client -> Server - -export const GRAPHQL_WS = 'graphql-ws'; diff --git a/packages/subscriptions/src/utils.ts b/packages/subscriptions/src/utils.ts deleted file mode 100644 index 3614b7e11..000000000 --- a/packages/subscriptions/src/utils.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { GraphQLError } from 'graphql'; - -export interface DeferredPromise { - promise: Promise; - resolve: (value: T) => void; - reject: (reason: unknown) => void; -} - -export function createDeferredPromise(): DeferredPromise { - let resolve: (value: T) => void = undefined as any; - let reject: (reason: unknown) => void = undefined as any; - const promise = new Promise((resolveFn: any, rejectFn) => { - resolve = resolveFn; - reject = rejectFn; - }); - - return { - promise, - resolve, - reject, - }; -} - -export type GQLResponse< - T extends Record = Record -> = { data: T | null; errors?: GraphQLError[] }; diff --git a/packages/subscriptions/test/index.test.ts b/packages/subscriptions/test/index.test.ts deleted file mode 100644 index d3e51d9d2..000000000 --- a/packages/subscriptions/test/index.test.ts +++ /dev/null @@ -1,5 +0,0 @@ -test('works', () => { - expect(1).toBe(1); -}); - -export {}; diff --git a/packages/subscriptions/test/tsconfig.json b/packages/subscriptions/test/tsconfig.json deleted file mode 100644 index ac7849a7a..000000000 --- a/packages/subscriptions/test/tsconfig.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "jsx": "react", - "baseUrl": ".", - "paths": { - "gqty": ["../../gqty/src/index.ts"], - "gqty/*": ["../../gqty/src/*"] - } - }, - "include": ["**/*.ts", "**/*.tsx"] -} diff --git a/packages/subscriptions/tsconfig.json b/packages/subscriptions/tsconfig.json deleted file mode 100644 index 4082f16a5..000000000 --- a/packages/subscriptions/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json" -} From 81c10c7b1bc5c420c458d7b4e97c951b53e7b816 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 5 Mar 2023 00:55:28 +0800 Subject: [PATCH 007/122] feat(packages/utils): drop unused package --- packages/utils/CHANGELOG.md | 11 --------- packages/utils/build.ts | 11 --------- packages/utils/lib/mergeWith.ts | 1 - packages/utils/lib/sha1.ts | 1 - packages/utils/package.json | 34 -------------------------- packages/utils/src/mergeWith.ts | 43 --------------------------------- packages/utils/src/sha1.ts | 36 --------------------------- 7 files changed, 137 deletions(-) delete mode 100644 packages/utils/CHANGELOG.md delete mode 100644 packages/utils/build.ts delete mode 100644 packages/utils/lib/mergeWith.ts delete mode 100644 packages/utils/lib/sha1.ts delete mode 100644 packages/utils/package.json delete mode 100644 packages/utils/src/mergeWith.ts delete mode 100644 packages/utils/src/sha1.ts diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md deleted file mode 100644 index 6b7c6124e..000000000 --- a/packages/utils/CHANGELOG.md +++ /dev/null @@ -1,11 +0,0 @@ -# @gqty/utils - -## 1.0.0 - -### Major Changes - -- 59d38ad: New gqty/utils package with bundled version of "sha1" package - -### Minor Changes - -- 6ecd2b0: New "@gqty/utils/mergeWith" with bundled lodash mergedWith function diff --git a/packages/utils/build.ts b/packages/utils/build.ts deleted file mode 100644 index f2bfcbc56..000000000 --- a/packages/utils/build.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { buildTsc } from 'bob-esbuild'; -import { writePackageJson } from 'bob-esbuild/config/packageJson'; -import pkg from './package.json'; - -await buildTsc(); - -await writePackageJson({ - packageJson: pkg, - distDir: 'dist', - skipValidate: true, -}); diff --git a/packages/utils/lib/mergeWith.ts b/packages/utils/lib/mergeWith.ts deleted file mode 100644 index 07221d159..000000000 --- a/packages/utils/lib/mergeWith.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as mergeWith } from 'lodash-es/mergeWith.js'; diff --git a/packages/utils/lib/sha1.ts b/packages/utils/lib/sha1.ts deleted file mode 100644 index c6142faf5..000000000 --- a/packages/utils/lib/sha1.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as sha1 } from 'sha1'; diff --git a/packages/utils/package.json b/packages/utils/package.json deleted file mode 100644 index e19009465..000000000 --- a/packages/utils/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "@gqty/utils", - "version": "1.0.0", - "exports": { - "./*": { - "types": "./dist/*.d.ts", - "require": "./dist/*.js", - "import": "./dist/*.mjs" - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "concurrently pnpm:build:sha1 pnpm:build:merge pnpm:build:ts", - "build:merge": "concurrently pnpm:build:merge:*", - "build:merge:cjs": "esbuild --bundle --format=cjs --target=es2020 --platform=node --minify-syntax --minify-identifiers --outfile=dist/mergeWith.js lib/mergeWith.ts", - "build:merge:esm": "esbuild --bundle --format=esm --target=es2020 --platform=node --minify-syntax --minify-identifiers --outfile=dist/mergeWith.mjs lib/mergeWith.ts", - "build:sha1": "concurrently pnpm:build:sha1:*", - "build:sha1:cjs": "esbuild --bundle --format=cjs --target=es2020 --platform=node --minify-syntax --minify-identifiers --outfile=dist/sha1.js lib/sha1.ts", - "build:sha1:esm": "esbuild --bundle --format=esm --target=es2020 --platform=node --minify-syntax --minify-identifiers --outfile=dist/sha1.mjs lib/sha1.ts", - "build:ts": "bob-tsm build.ts", - "prepare": "pnpm build" - }, - "devDependencies": { - "@types/lodash-es": "^4.17.7", - "@types/sha1": "1.1.3", - "lodash-es": "^4.17.21", - "sha1": "1.1.1" - }, - "publishConfig": { - "directory": "dist" - } -} diff --git a/packages/utils/src/mergeWith.ts b/packages/utils/src/mergeWith.ts deleted file mode 100644 index dc193ffbb..000000000 --- a/packages/utils/src/mergeWith.ts +++ /dev/null @@ -1,43 +0,0 @@ -type MergeWithCustomizer = { - bivariantHack( - value: any, - srcValue: any, - key: string, - object: any, - source: any - ): any; -}['bivariantHack']; - -export declare function mergeWith( - object: TObject, - source: TSource, - customizer: MergeWithCustomizer -): TObject & TSource; -export declare function mergeWith( - object: TObject, - source1: TSource1, - source2: TSource2, - customizer: MergeWithCustomizer -): TObject & TSource1 & TSource2; -export declare function mergeWith( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - customizer: MergeWithCustomizer -): TObject & TSource1 & TSource2 & TSource3; -export declare function mergeWith< - TObject, - TSource1, - TSource2, - TSource3, - TSource4 ->( - object: TObject, - source1: TSource1, - source2: TSource2, - source3: TSource3, - source4: TSource4, - customizer: MergeWithCustomizer -): TObject & TSource1 & TSource2 & TSource3 & TSource4; -export declare function mergeWith(object: any, ...otherArgs: any[]): any; diff --git a/packages/utils/src/sha1.ts b/packages/utils/src/sha1.ts deleted file mode 100644 index 47ba5c874..000000000 --- a/packages/utils/src/sha1.ts +++ /dev/null @@ -1,36 +0,0 @@ -// Type definitions for sha1 1.1 -// Project: https://github.com/pvorb/node-sha1 -// Definitions by: Bill Sourour -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -/** - * js function for hashing messages with SHA1 - * - * @param message - a string or buffer to hash - * @param options - an options object - * @returns the resultant SHA1 hash of the given message - */ -export declare function sha1( - message: string | Buffer, - options?: Sha1AsStringOptions -): string; -export declare function sha1( - message: string | Buffer, - options?: Sha1AsBytesOptions -): Uint8Array; -export declare function sha1( - message: string | Buffer, - options?: Sha1Options -): string | Uint8Array; - -interface Sha1AsStringOptions { - asBytes?: false | undefined; - asString?: boolean | undefined; -} - -interface Sha1AsBytesOptions { - asBytes: true; - asString?: false | undefined; -} - -type Sha1Options = Sha1AsStringOptions | Sha1AsBytesOptions; From 659918a588828d36ee45063ce35ad95017a6b271 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 6 Mar 2023 14:21:29 +0800 Subject: [PATCH 008/122] fix(packages/logger): scoped query shim --- examples/react/package.json | 1 - packages/gqty/src/Client/compat/client.ts | 31 ++- .../gqty/src/Client/compat/inlineResolved.ts | 7 +- packages/gqty/src/Client/compat/prefetch.ts | 2 + .../gqty/src/Client/compat/prepareRender.ts | 2 + packages/gqty/src/Client/compat/resolved.ts | 163 ++++++++----- packages/gqty/src/Client/compat/track.ts | 2 + .../Client/{createContext.ts => context.ts} | 2 +- packages/gqty/src/Client/debugger.ts | 35 +++ packages/gqty/src/Client/index.ts | 17 +- packages/gqty/src/Client/resolveSelections.ts | 217 ++++++++++++------ .../{createResolvers.ts => resolvers.ts} | 13 +- packages/gqty/src/Client/updateCaches.ts | 5 +- packages/gqty/src/QueryBuilder/index.ts | 2 +- packages/logger/src/index.ts | 75 +++--- packages/logger/test/index.test.ts | 10 +- pnpm-lock.yaml | 88 +------ 17 files changed, 398 insertions(+), 274 deletions(-) rename packages/gqty/src/Client/{createContext.ts => context.ts} (97%) create mode 100644 packages/gqty/src/Client/debugger.ts rename packages/gqty/src/Client/{createResolvers.ts => resolvers.ts} (96%) diff --git a/examples/react/package.json b/examples/react/package.json index aa92b6fa9..f7479573a 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -17,7 +17,6 @@ "@gqty/cli": "workspace:^3.3.0", "@gqty/logger": "workspace:^2.0.2", "@gqty/react": "workspace:^2.1.1", - "@gqty/subscriptions": "workspace:^2.0.1", "@graphql-ez/fastify": "^0.12.0", "@graphql-ez/plugin-altair": "^0.11.0", "@graphql-ez/plugin-codegen": "^0.8.0", diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index 99903a231..0ab2234d3 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -2,7 +2,8 @@ import type { BaseGeneratedSchema, FetchOptions, SchemaContext } from '../..'; import type { Cache } from '../../Cache'; import type { ScalarsEnumsHash, Schema } from '../../Schema'; import type { Selection } from '../../Selection'; -import type { createResolvers } from '../createResolvers'; +import type { createDebugger } from '../debugger'; +import type { createResolvers } from '../resolvers'; import { createLegacyHydrateCache, LegacyHydrateCache } from './hydrateCache'; import { createLegacyInlineResolved, @@ -21,14 +22,15 @@ import { createLegacyTrack, LegacyTrack } from './track'; // TODO: Add deprecation warning let deprecationWarningMessage: string | undefined = !process.env.NODE_ENV || process.env.NODE_ENV === 'development' - ? '[GQty] global query, mutation and subscription is deprecated, please see ' + - 'the migration guide for scoped query.' + ? '[GQty] global query, mutation and subscription is deprecated, use ' + + '`schema` instead.' : undefined; export type CreateLegacyClientOptions = { accessor: TSchema; cache: Cache; context: SchemaContext; + debugger: ReturnType; fetchOptions: FetchOptions; resolve: ReturnType>['resolve']; scalars: ScalarsEnumsHash; @@ -155,9 +157,26 @@ export const createLegacyClient = ( prepareRender: createLegacyPrepareRender(methodOptions), hydrateCache: createLegacyHydrateCache(methodOptions), - query: options.accessor.query, - mutation: options.accessor.mutation, - subscription: options.accessor.subscription, + get query() { + deprecationWarningMessage && console.warn(deprecationWarningMessage); + deprecationWarningMessage = undefined; + + return options.accessor.query; + }, + + get mutation() { + deprecationWarningMessage && console.warn(deprecationWarningMessage); + deprecationWarningMessage = undefined; + + return options.accessor.mutation; + }, + + get subscription() { + deprecationWarningMessage && console.warn(deprecationWarningMessage); + deprecationWarningMessage = undefined; + + return options.accessor.subscription; + }, subscribeLegacySelections: methodOptions.subscribeLegacySelections, }; diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index c6a2979a7..92b829883 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -33,6 +33,7 @@ export const createLegacyInlineResolved = < TSchema extends BaseGeneratedSchema = BaseGeneratedSchema >({ cache, + debugger: debug, fetchOptions: { fetchPolicy, ...fetchOptions }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyInlineResolved => { @@ -77,7 +78,11 @@ export const createLegacyInlineResolved = < onCacheData?.(data); } - return fetchSelections(selections, { fetchOptions, operationName }) + return fetchSelections(selections, { + debugger: debug, + fetchOptions, + operationName, + }) .then((results) => updateCaches(results, [cache])) .then(() => fn()) .finally(() => { diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts index af08cc5d4..2cf2fabc7 100644 --- a/packages/gqty/src/Client/compat/prefetch.ts +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -14,6 +14,7 @@ export const createLegacyPrefetch = < >({ accessor, cache, + debugger: debug, fetchOptions: { fetcher, retryPolicy, subscriber, ...fetchOptions }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyPrefetch => { @@ -35,6 +36,7 @@ export const createLegacyPrefetch = < } return fetchSelections(selections, { + debugger: debug, fetchOptions: { fetcher, retryPolicy, ...fetchOptions }, operationName, }).then( diff --git a/packages/gqty/src/Client/compat/prepareRender.ts b/packages/gqty/src/Client/compat/prepareRender.ts index 79bd5089f..2b95954bf 100644 --- a/packages/gqty/src/Client/compat/prepareRender.ts +++ b/packages/gqty/src/Client/compat/prepareRender.ts @@ -71,6 +71,7 @@ export const isLegacyCacheSnapshot = ( export const createLegacyPrepareRender = ({ cache, + debugger: debug, fetchOptions, subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyPrepareRender => { @@ -89,6 +90,7 @@ export const createLegacyPrepareRender = ({ const results = await fetchSelections(selections, { cache, + debugger: debug, fetchOptions, }); diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index eb0923687..ac20099a5 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -1,4 +1,6 @@ +import type { QueryPayload } from 'gqty/Schema'; import type { GraphQLError } from 'graphql'; +import { MessageType } from 'graphql-ws'; import type { BaseGeneratedSchema } from '..'; import { Cache } from '../../Cache'; import { GQtyError, RetryOptions } from '../../Error'; @@ -8,6 +10,7 @@ import { FetchResult, fetchSelections, isCloseEvent, + QueryExtensions, } from '../resolveSelections'; import { updateCaches } from '../updateCaches'; import type { CreateLegacyMethodOptions } from './client'; @@ -107,6 +110,7 @@ export const createLegacyResolved = < >({ cache, context, + debugger: debug, fetchOptions: { fetcher, subscriber, retryPolicy }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyResolved => { @@ -170,75 +174,122 @@ export const createLegacyResolved = < onNoCacheFound?.(); } + // Subscriptions + buildQuery( + new Set( + [...selections].filter(({ root: { key } }) => key === 'subscription') + ), + operationName + ).map( + ({ + query, + variables, + operationName, + extensions: { type, hash } = {}, + }) => { + if (!type) throw new GQtyError(`Invalid query type: ${type}`); + if (!hash) throw new GQtyError(`Expected query hash: ${hash}`); + + const payload: QueryPayload = { + query, + variables, + operationName, + extensions: { type, hash }, + }; + + let subscriptionId: string | undefined; + subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.Subscribe: { + if (message.payload.extensions?.hash !== hash) break; + + subscriptionId = message.id; + + debug?.dispatch({ + cache, + label: `[id=${subscriptionId}] [create]`, + request: payload, + selections, + }); + + break; + } + } + }); + + const _unsubscribe = subscriber?.subscribe( + { query, variables, operationName }, + { + next(result) { + result.extensions = payload.extensions; + + if (result.data != null) { + updateCaches([result as FetchResult], [resolutionCache]); + } + + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [data]` + : undefined, + request: payload, + result: result as FetchResult, + selections, + }); + + onSubscription?.({ + type: 'data', + data: dataFn() ?? (result as TData), + unsubscribe, + }); + }, + error(error: Error | readonly GraphQLError[] | CloseEvent) { + if (isCloseEvent(error)) { + unsubscribe(); + return this.complete(); + } + + onSubscription?.({ + type: 'with-errors', + error: Array.isArray(error) + ? GQtyError.fromGraphQLErrors(error) + : new GQtyError(`Subscription error`, { otherError: error }), + unsubscribe, + }); + }, + complete() { + onSubscription?.({ + type: 'complete', + unsubscribe, + }); + }, + } + ); + + const unsubscribe = async () => _unsubscribe?.(); + + onSubscription?.({ + type: 'start', + unsubscribe, + }); + } + ); + // Queries and mutations await fetchSelections( new Set( [...selections].filter(({ root: { key } }) => key !== 'subscription') ), { + debugger: debug, fetchOptions: { fetcher, retryPolicy: retry, ...fetchOptions }, operationName, } ).then( - (results) => { - updateCaches(results, [resolutionCache]); - }, + (results) => updateCaches(results, [resolutionCache]), (error) => Promise.reject(GQtyError.create(error, () => {})) ); - // Subscriptions - buildQuery( - new Set( - [...selections].filter(({ root: { key } }) => key === 'subscription') - ), - operationName - ).map(({ query, variables, operationName }) => { - const _unsubscribe = subscriber?.subscribe( - { query, variables, operationName }, - { - next(result) { - if (result.data != null) { - result.extensions = { type: 'subscription' }; - updateCaches([result as FetchResult], [resolutionCache]); - } - - onSubscription?.({ - type: 'data', - data: dataFn() ?? (result as TData), - unsubscribe, - }); - }, - error(error: Error | readonly GraphQLError[] | CloseEvent) { - if (isCloseEvent(error)) { - unsubscribe(); - return this.complete(); - } - - onSubscription?.({ - type: 'with-errors', - error: Array.isArray(error) - ? GQtyError.fromGraphQLErrors(error) - : new GQtyError(`Subscription error`, { otherError: error }), - unsubscribe, - }); - }, - complete() { - onSubscription?.({ - type: 'complete', - unsubscribe, - }); - }, - } - ); - - const unsubscribe = async () => _unsubscribe?.(); - - onSubscription?.({ - type: 'start', - unsubscribe, - }); - }); - return dataFn(); }; }; diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index a9774aec0..b8d083868 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -38,6 +38,7 @@ export const createLegacyTrack = < >({ cache, context, + debugger: debug, fetchOptions: { fetchPolicy, ...fetchOptions }, subscribeLegacySelections, }: CreateLegacyMethodOptions) => { @@ -103,6 +104,7 @@ export const createLegacyTrack = < } }, { + debugger: debug, fetchOptions: { fetchPolicy: refetch ? 'no-cache' : fetchPolicy, ...fetchOptions, diff --git a/packages/gqty/src/Client/createContext.ts b/packages/gqty/src/Client/context.ts similarity index 97% rename from packages/gqty/src/Client/createContext.ts rename to packages/gqty/src/Client/context.ts index 1a587d51c..e2f52458f 100644 --- a/packages/gqty/src/Client/createContext.ts +++ b/packages/gqty/src/Client/context.ts @@ -1,7 +1,7 @@ import { Cache, CacheDataContainer, CacheGetOptions } from '../Cache'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; -import type { ResolveOptions } from './createResolvers'; +import type { ResolveOptions } from './resolvers'; export type ResolveContext = SchemaContext<{ notifyCacheUpdate: boolean; diff --git a/packages/gqty/src/Client/debugger.ts b/packages/gqty/src/Client/debugger.ts new file mode 100644 index 000000000..61baf0729 --- /dev/null +++ b/packages/gqty/src/Client/debugger.ts @@ -0,0 +1,35 @@ +import type { Cache } from '../Cache'; +import type { QueryPayload } from '../Schema'; +import type { Selection } from '../Selection'; +import type { FetchResult, QueryExtensions } from './resolveSelections'; + +export type DebugEvent = { + cache?: Cache; // cacheSnapshot + label?: string; // label + request: QueryPayload; // query, variables, operationName, type + result?: FetchResult; // executionResult, error(s) + selections: Set; // selections +}; + +export type DebugEventListener = (event: DebugEvent) => void; + +export type Debugger = { + dispatch: (event: DebugEvent) => void; + + /** Returns an unsubscribe function */ + subscribe: (listener: DebugEventListener) => () => void; +}; + +export const createDebugger = () => { + const subs = new Set(); + + return { + dispatch: (event: DebugEvent) => { + subs.forEach((sub) => sub(event)); + }, + subscribe: (listener: DebugEventListener) => { + subs.add(listener); + return () => subs.delete(listener); + }, + }; +}; diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 3677cb280..88de388d2 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -14,10 +14,12 @@ import type { Schema, } from '../Schema'; import { createLegacyClient, LegacyClient } from './compat/client'; -import { createContext } from './createContext'; -import { createResolvers, ResolveFn, SubscribeFn } from './createResolvers'; +import { createContext } from './context'; +import { createDebugger } from './debugger'; +import { createResolvers, ResolveFn, SubscribeFn } from './resolvers'; -export type { ResolveContext, SchemaContext } from './createContext'; +export type { ResolveContext, SchemaContext } from './context'; +export type { DebugEvent } from './debugger'; /** A generated schema type in it's most basic form */ export type BaseGeneratedSchema = { @@ -124,6 +126,9 @@ export type Client = Persistors & { subscribe: SubscribeFn; schema: TSchema; + + /** Subscribe to debug events, useful for logging. */ + subscribeDebugEvents: ReturnType['subscribe']; }; export const createClient = ({ @@ -159,10 +164,13 @@ export const createClient = ({ staleWhileRevalidate, }); + const debug = createDebugger(); + const { resolve, subscribe } = createResolvers({ scalars, schema, cache: clientCache, + debugger: debug, fetchOptions: { fetcher, fetchPolicy, @@ -192,10 +200,13 @@ export const createClient = ({ ...createPersistors(clientCache), + subscribeDebugEvents: debug.subscribe, + ...createLegacyClient({ accessor, cache: clientCache, context: clientContext, + debugger: debug, fetchOptions: { fetcher, fetchPolicy, diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 9fbe66e76..30a2624ad 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -1,5 +1,5 @@ import type { ExecutionResult } from 'graphql'; -import type { SubscribePayload } from 'graphql-ws'; +import { MessageType, SubscribePayload } from 'graphql-ws'; import { CloseEvent, WebSocket } from 'ws'; import type { FetchOptions } from '.'; import type { Cache } from '../Cache'; @@ -8,22 +8,31 @@ import { doRetry, GQtyError } from '../Error'; import { buildQuery } from '../QueryBuilder'; import type { QueryPayload } from '../Schema'; import type { Selection } from '../Selection'; +import type { Debugger } from './debugger'; export type FetchSelectionsOptions = { + cache?: Cache; + debugger?: Debugger; fetchOptions: FetchOptions; operationName?: string; - cache?: Cache; }; +export type QueryExtensions = { type: string; hash: string }; + export type FetchResult< TData extends Record = Record -> = ExecutionResult; +> = ExecutionResult; export const fetchSelections = < TData extends Record = Record >( selections: Set, - { cache, fetchOptions, operationName }: FetchSelectionsOptions + { + cache, + debugger: debug, + fetchOptions, + operationName, + }: FetchSelectionsOptions ): Promise[]> => Promise.all( buildQuery(selections, operationName).map( @@ -41,7 +50,11 @@ export const fetchSelections = < throw new GQtyError(`Expected query hash.`); } - const payload = { query, variables, operationName }; + const payload: QueryPayload = { + query, + variables, + operationName, + }; // Dedupe const result = await dedupePromise( @@ -52,13 +65,20 @@ export const fetchSelections = < : () => doFetch(payload, fetchOptions) ); + debug?.dispatch({ + cache, + request: { query, variables, operationName }, + result, + selections, + }); + return { ...result, extensions: { type, hash } }; } ) ); export type SubscriptionCallback> = ( - result: FetchResult | Record + result: FetchResult ) => void; export type Unsubscribe = () => void; @@ -74,89 +94,146 @@ export const subscribeSelections = < fn: SubscriptionCallback, { cache, + debugger: debug, fetchOptions: { subscriber, ...fetchOptions }, operationName, }: FetchSelectionsOptions ): Unsubscribe => { const unsubscribers = new Set<() => void>(); - Promise.all( - buildQuery(selections, operationName).map( - ({ + buildQuery(selections, operationName).map( + ({ query, variables, operationName, extensions: { type, hash } = {} }) => { + if (!type) { + throw new GQtyError(`Invalid query type: ${type}`); + } + + if (!hash) { + throw new GQtyError(`Expected query hash.`); + } + + if (type === 'subscription' && !subscriber) { + throw new GQtyError(`Missing subscriber for subscriptions.`); + } + + const queryPayload: QueryPayload = { query, variables, operationName, - extensions: { type, hash } = {}, - }) => { - if (!type) { - throw new GQtyError(`Invalid query type: ${type}`); - } + extensions: { type, hash }, + }; - if (!hash) { - throw new GQtyError(`Expected query hash.`); - } + let subscriptionId: string | undefined; + { + const unsubscribeEvents = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.Subscribe: { + if (message.payload.extensions?.hash !== hash) return; - const queryPayload = { query, variables, operationName }; + subscriptionId = message.id; - const next = ({ data, errors, extensions }: ExecutionResult) => { - if (data === undefined) return; + debug?.dispatch({ + cache, + label: `[id=${subscriptionId}] [create]`, + request: queryPayload, + selections, + }); - fn({ data, errors, extensions: { ...extensions, type, hash } }); - }; - - const error = (error: unknown) => { - if (error == null) { - throw new GQtyError(`Subscription sink closed without an error.`); + unsubscribeEvents?.(); + break; + } } + }); + } - fn({ errors: [error as any] }); - }; + const next = ({ data, errors, extensions }: ExecutionResult) => { + if (data === undefined) return; - // Dedupe - return dedupePromise( - type === 'subscription' ? undefined : cache, - hash, - type === 'subscription' - ? () => - new Promise((complete) => { - const unsubscribe = subscriber?.subscribe( - queryPayload, - { - next, - error(err) { - if (isCloseEvent(err)) { - this.complete(); - } else if (Array.isArray(err)) { - error(GQtyError.fromGraphQLErrors(err)); - } else { - error(err); - } - }, - complete, + debug?.dispatch({ + cache, + label: subscriptionId ? `[id=${subscriptionId}] [data]` : undefined, + request: queryPayload, + result: { data, errors, extensions }, + selections, + }); + + fn({ + data, + errors, + extensions: { + ...extensions, + ...queryPayload.extensions!, + }, + }); + }; + + const error = (error: unknown) => { + if (error == null) { + throw new GQtyError(`Subscription sink closed without an error.`); + } + + debug?.dispatch({ + cache, + label: subscriptionId ? `[id=${subscriptionId}] [error]` : undefined, + request: queryPayload, + selections, + }); + + fn({ + errors: [error as any], + extensions: queryPayload.extensions, + }); + }; + + // Dedupe + return dedupePromise( + type === 'subscription' ? undefined : cache, + hash, + type === 'subscription' + ? () => + new Promise((complete) => { + const unsubscribe = subscriber!.subscribe(queryPayload, { + next, + error(err) { + if (Array.isArray(err)) { + error(GQtyError.fromGraphQLErrors(err)); + } else if (!isCloseEvent(err)) { + error(err); } - ); - if (unsubscribe) { - unsubscribers.add(unsubscribe); - } - }) - : () => - new Promise((complete) => { - const aborter = new AbortController(); - - doFetch(queryPayload, { - ...fetchOptions, - signal: aborter.signal, - }) - .then(next, error) - .finally(complete); - - unsubscribers.add(() => aborter.abort()); + this.complete(); + }, + complete() { + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [unsubscribe]` + : undefined, + request: queryPayload, + selections, + }); + + complete(); + }, + }); + + unsubscribers.add(unsubscribe); + }) + : () => + new Promise((complete) => { + const aborter = new AbortController(); + + doFetch(queryPayload, { + ...fetchOptions, + signal: aborter.signal, }) - ); - } - ) - ).finally(() => fn({})); + .then(next, error) + .finally(complete); + + unsubscribers.add(() => aborter.abort()); + }) + ); + } + ); return () => { unsubscribers.forEach((fn) => fn()); diff --git a/packages/gqty/src/Client/createResolvers.ts b/packages/gqty/src/Client/resolvers.ts similarity index 96% rename from packages/gqty/src/Client/createResolvers.ts rename to packages/gqty/src/Client/resolvers.ts index 70474464c..2ad08824d 100644 --- a/packages/gqty/src/Client/createResolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -5,12 +5,14 @@ import { GQtyError } from '../Error'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; import { pick } from '../Utils/pick'; -import { createContext, ResolveContext } from './createContext'; +import { createContext, ResolveContext } from './context'; +import type { Debugger } from './debugger'; import { fetchSelections, subscribeSelections } from './resolveSelections'; import { updateCaches } from './updateCaches'; export type CreateResolvedOptions = { cache: Cache; + debugger?: Debugger; depthLimit: number; fetchOptions: FetchOptions; scalars: ScalarsEnumsHash; @@ -99,6 +101,7 @@ export type SubscribeFn = < export const createResolvers = ({ cache: clientCache, + debugger: debug, depthLimit, fetchOptions, fetchOptions: { fetchPolicy: defaultFetchPolicy = 'default' }, @@ -143,8 +146,9 @@ export const createResolvers = ({ throw new TypeError('Failed to fetch'); } const fetchPromises = fetchSelections(selections, { - operationName, + debugger: debug, fetchOptions, + operationName, }) .then((results) => { updateCaches( @@ -235,7 +239,7 @@ export const createResolvers = ({ const unsubscribeSelections = subscribeSelections( selections, - ({ errors, data, extensions }) => { + ({ data, errors, extensions }) => { if (errors) { const error = errors.length > 1 @@ -256,7 +260,7 @@ export const createResolvers = ({ } } else if (data !== undefined) { updateCaches( - [{ data, extensions }], + [{ data, errors, extensions }], fetchPolicy !== 'no-store' && context.cache !== clientCache ? [context.cache, clientCache] : [context.cache], @@ -268,6 +272,7 @@ export const createResolvers = ({ } }, { + debugger: debug, fetchOptions, operationName, } diff --git a/packages/gqty/src/Client/updateCaches.ts b/packages/gqty/src/Client/updateCaches.ts index 799611153..ef3c10afe 100644 --- a/packages/gqty/src/Client/updateCaches.ts +++ b/packages/gqty/src/Client/updateCaches.ts @@ -10,7 +10,10 @@ export const updateCaches = >( ) => { const errorSet = new Set(); - for (const { data, errors, extensions } of results) { + for (const response of results) { + if (response === undefined) return; + + const { data, errors, extensions } = response; const type = `${extensions?.type}`; if (data !== undefined) { diff --git a/packages/gqty/src/QueryBuilder/index.ts b/packages/gqty/src/QueryBuilder/index.ts index baac52d25..f0796a65a 100644 --- a/packages/gqty/src/QueryBuilder/index.ts +++ b/packages/gqty/src/QueryBuilder/index.ts @@ -140,7 +140,7 @@ export const buildQuery = ( operationName, extensions: { type: rootKey, - hash: hash(query), // For query dedupe and cache keys + hash: hash({ query, variables }), // For query dedupe and cache keys }, }; }); diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index f52d93222..52e53a83a 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,11 +1,9 @@ +import { DebugEvent, GQtyClient, GQtyError } from 'gqty'; import parserJSON from 'prettier/parser-babel.js'; import parserGraphQL from 'prettier/parser-graphql.js'; import prettier from 'prettier/standalone.js'; import { serializeError } from './serializeError'; -import type { GQtyClient } from 'gqty'; -import type { FetchEventData } from 'gqty/Events'; - function parseGraphQL(query: string) { return prettier.format(query, { parser: 'graphql', @@ -63,7 +61,7 @@ export function createLogger( options.stringifyJSON ??= false; const stringifyJSONIfEnabled = (v: T) => { - if (options.stringifyJSON) { + if (options.stringifyJSON && v) { return prettier.format(JSON.stringify(v), { parser: 'json', plugins: [parserJSON], @@ -72,24 +70,25 @@ export function createLogger( return v; }; - const eventHandler = client.eventHandler; - let idMapper = 0; const QueryIdMapper: Record = {}; - async function onFetch(dataPromise: Promise) { + async function onFetch({ + cache, + label, + request: { query, variables, operationName, extensions }, + result, + result: { errors = [] } = {}, + selections, + }: DebugEvent) { const startTime = Date.now(); - const { - query, - variables, - error, - selections, - executionResult, - cacheSnapshot, - type, - label, - } = await dataPromise; + const error = + errors.length > 1 + ? GQtyError.fromGraphQLErrors(errors) + : errors.length === 1 + ? errors[0] + : undefined; const queryId = (QueryIdMapper[query] ||= ++idMapper); @@ -98,11 +97,14 @@ export function createLogger( console.groupCollapsed( ...format( ['GraphQL ', 'color: gray'], - [type + ' ', `color: ${error ? 'red' : '#03A9F4'}; font-weight: bold`], + [ + extensions?.type + (operationName ? ` (${operationName})` : ' '), + `color: ${error ? 'red' : '#03A9F4'}; font-weight: bold`, + ], ['ID ' + queryId + ' ', 'color: green'], ...(label ? [[label + ' ', 'color: green']] : []), [`(${fetchTime}ms)`, 'color: gray'], - [` ${selections.length} selections`, 'color: gray'], + [` ${selections.size} selections`, 'color: gray'], error && [ 'FAILED', @@ -136,38 +138,33 @@ export function createLogger( if (error) { console.error(...format(['Error', headerStyles]), serializeError(error)); - } else if (executionResult) { + } else if (result) { console.log( ...format(['Result', headerStyles]), - stringifyJSONIfEnabled(executionResult) + stringifyJSONIfEnabled(result) ); } if (options.showSelections) { console.groupCollapsed(...format(['Selections', headerStyles])); - selections.forEach( - ({ id, cachePath, key, pathString, alias, argTypes, args, unions }) => { - console.log( - stringifyJSONIfEnabled({ - id, - cachePath, - key, - pathString, - alias, - argTypes, - args, - unions, - }) - ); - } - ); + selections.forEach(({ key, cacheKeys, alias, input, isUnion }) => { + console.log( + stringifyJSONIfEnabled({ + key, + cacheKeys: cacheKeys.join('.'), + alias, + input, + isUnion, + }) + ); + }); console.groupEnd(); } if (options.showCache) { console.log( ...format(['Cache snapshot', headerStyles]), - stringifyJSONIfEnabled(cacheSnapshot) + stringifyJSONIfEnabled(cache?.toJSON()) ); console.groupEnd(); } @@ -177,7 +174,7 @@ export function createLogger( * Start logging, it returns the "stop" function */ function start() { - const unsubscribe = eventHandler.onFetchSubscribe(onFetch); + const unsubscribe = client.subscribeDebugEvents(onFetch); return unsubscribe; } diff --git a/packages/logger/test/index.test.ts b/packages/logger/test/index.test.ts index a14f81086..33b7a3949 100644 --- a/packages/logger/test/index.test.ts +++ b/packages/logger/test/index.test.ts @@ -46,12 +46,14 @@ describe('logger', () => { }, subscription: {}, }, - scalarsEnumsHash: { + scalars: { String: true, Boolean: true, }, - queryFetcher: (query, variables) => - testAppPromise.then((v) => v.query(query, { variables })), + fetchOptions: { + fetcher: ({ query, variables }) => + testAppPromise.then((v) => v.query(query, { variables })), + }, }); test('default options', async () => { @@ -165,7 +167,7 @@ describe('logger', () => { } }); - test('stringified JSON', async () => { + fit('stringified JSON', async () => { const logger = createLogger(gqtyClient, { stringifyJSON: true, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2ca31ab2..a2a5138de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -294,9 +294,6 @@ importers: '@gqty/react': specifier: workspace:^2.1.1 version: link:../../packages/react/dist - '@gqty/subscriptions': - specifier: workspace:^2.0.1 - version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) @@ -1038,60 +1035,6 @@ importers: version: 4.9.5 publishDirectory: dist - packages/subscriptions: - dependencies: - isomorphic-ws: - specifier: ^5.0.0 - version: 5.0.0(ws@8.13.0) - ws: - specifier: ^8.13.0 - version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - devDependencies: - '@types/node': - specifier: ^18.15.5 - version: 18.15.5 - '@types/ws': - specifier: ^8.5.4 - version: 8.5.4 - bob-esbuild-cli: - specifier: ^4.0.0 - version: 4.0.0(bob-esbuild@4.0.3) - esbuild: - specifier: ^0.17.12 - version: 0.17.12 - gqty: - specifier: workspace:^2.3.0 - version: link:../gqty/dist - graphql: - specifier: ^16.6.0 - version: 16.6.0 - test-utils: - specifier: workspace:^0.1.0 - version: link:../../internal/test-utils - tslib: - specifier: ^2.5.0 - version: 2.5.0 - typescript: - specifier: ^4.9.5 - version: 4.9.5 - publishDirectory: dist - - packages/utils: - devDependencies: - '@types/lodash-es': - specifier: ^4.17.7 - version: 4.17.7 - '@types/sha1': - specifier: 1.1.3 - version: 1.1.3 - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - sha1: - specifier: 1.1.1 - version: 1.1.1 - publishDirectory: dist - packages: /@adobe/css-tools@4.0.1: @@ -6790,12 +6733,6 @@ packages: '@types/mime': 3.0.1 '@types/node': 18.15.5 - /@types/sha1@1.1.3: - resolution: {integrity: sha512-bXfx/6xrPu1l6pLItGRMPX00lhnJavpj2qiQeLHflXvL2Ix97aC8FTF2/pQoqukRzcCwKyN3csZvOLzamIoaSA==} - dependencies: - '@types/node': 18.15.5 - dev: true - /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -8072,10 +8009,6 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /charenc@0.0.2: - resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - dev: true - /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -8601,10 +8534,6 @@ packages: - encoding dev: false - /crypt@0.0.2: - resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - dev: true - /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} @@ -10649,7 +10578,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '*' + graphql: '>=0.11 <=16' dependencies: graphql: 16.6.0 @@ -11581,14 +11510,6 @@ packages: dependencies: ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /isomorphic-ws@5.0.0(ws@8.13.0): - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} - peerDependencies: - ws: '*' - dependencies: - ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - dev: false - /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -15892,13 +15813,6 @@ packages: /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /sha1@1.1.1: - resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} - dependencies: - charenc: 0.0.2 - crypt: 0.0.2 - dev: true - /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} From 2fbb5ff9e4d5ffcf2c664594e1ff1ba7792f411f Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 7 Mar 2023 01:20:26 +0800 Subject: [PATCH 009/122] feat: refactor resolvers for react --- packages/gqty/src/Cache/query.ts | 9 +- packages/gqty/src/Client/compat/client.ts | 36 +- .../gqty/src/Client/compat/hydrateCache.ts | 2 - .../gqty/src/Client/compat/inlineResolved.ts | 36 +- packages/gqty/src/Client/compat/mutate.ts | 12 +- packages/gqty/src/Client/compat/prefetch.ts | 48 +-- packages/gqty/src/Client/compat/resolved.ts | 43 +- packages/gqty/src/Client/compat/track.ts | 98 ++--- packages/gqty/src/Client/context.ts | 25 +- packages/gqty/src/Client/index.ts | 69 ++-- packages/gqty/src/Client/resolveSelections.ts | 97 ++++- packages/gqty/src/Client/resolvers.ts | 370 ++++++++++-------- packages/gqty/src/Client/updateCaches.ts | 10 +- packages/gqty/test/client.test.ts | 22 +- packages/logger/src/index.ts | 11 +- packages/logger/test/index.test.ts | 2 +- 16 files changed, 453 insertions(+), 437 deletions(-) diff --git a/packages/gqty/src/Cache/query.ts b/packages/gqty/src/Cache/query.ts index 1ab78a335..5f8117e61 100644 --- a/packages/gqty/src/Cache/query.ts +++ b/packages/gqty/src/Cache/query.ts @@ -6,7 +6,7 @@ const nullObjectKey = {}; const deduplicationCache = new WeakMap< Cache | typeof nullObjectKey, - Map> + Map> >([[nullObjectKey, new Map()]]); /** @@ -48,7 +48,8 @@ export const dedupePromise = < }; /** Retrieve active promises associated provided cache, useful for SSR. */ -export const getActivePromises = (cache?: Cache) => - deduplicationCache.get(cache ?? nullObjectKey)?.values(); +export const getActivePromises = (cache?: Cache) => [ + ...(deduplicationCache.get(cache ?? nullObjectKey)?.values() ?? []), +]; -// TODO: test this file +// TODO: Test concurrent fetch and subscriptions diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index 0ab2234d3..7dd549407 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -3,7 +3,7 @@ import type { Cache } from '../../Cache'; import type { ScalarsEnumsHash, Schema } from '../../Schema'; import type { Selection } from '../../Selection'; import type { createDebugger } from '../debugger'; -import type { createResolvers } from '../resolvers'; +import type { Resolvers } from '../resolvers'; import { createLegacyHydrateCache, LegacyHydrateCache } from './hydrateCache'; import { createLegacyInlineResolved, @@ -19,7 +19,6 @@ import { createRefetch, LegacyRefetch } from './refetch'; import { createLegacyResolved, LegacyResolved } from './resolved'; import { createLegacyTrack, LegacyTrack } from './track'; -// TODO: Add deprecation warning let deprecationWarningMessage: string | undefined = !process.env.NODE_ENV || process.env.NODE_ENV === 'development' ? '[GQty] global query, mutation and subscription is deprecated, use ' + @@ -32,10 +31,9 @@ export type CreateLegacyClientOptions = { context: SchemaContext; debugger: ReturnType; fetchOptions: FetchOptions; - resolve: ReturnType>['resolve']; + resolvers: Resolvers; scalars: ScalarsEnumsHash; schema: Readonly; - subscribe: ReturnType>['subscribe']; __depthLimit?: number; }; @@ -140,37 +138,22 @@ export const createLegacyClient = ( }, }; - // refetch needs this + // `refetch` needs `inlineResolved` const inlineResolved = createLegacyInlineResolved(methodOptions); return { - resolved: createLegacyResolved(methodOptions), - inlineResolved, - mutate: createLegacyMutate(methodOptions), - track: createLegacyTrack(methodOptions), - prefetch: createLegacyPrefetch(methodOptions), - refetch: createRefetch({ - ...methodOptions, - selectionHistory, - inlineResolved, - }), - prepareRender: createLegacyPrepareRender(methodOptions), - hydrateCache: createLegacyHydrateCache(methodOptions), - get query() { deprecationWarningMessage && console.warn(deprecationWarningMessage); deprecationWarningMessage = undefined; return options.accessor.query; }, - get mutation() { deprecationWarningMessage && console.warn(deprecationWarningMessage); deprecationWarningMessage = undefined; return options.accessor.mutation; }, - get subscription() { deprecationWarningMessage && console.warn(deprecationWarningMessage); deprecationWarningMessage = undefined; @@ -178,6 +161,19 @@ export const createLegacyClient = ( return options.accessor.subscription; }, + resolved: createLegacyResolved(methodOptions), + inlineResolved, + mutate: createLegacyMutate(methodOptions), + track: createLegacyTrack(methodOptions), + prefetch: createLegacyPrefetch(methodOptions), + refetch: createRefetch({ + ...methodOptions, + selectionHistory, + inlineResolved, + }), + prepareRender: createLegacyPrepareRender(methodOptions), + hydrateCache: createLegacyHydrateCache(methodOptions), + subscribeLegacySelections: methodOptions.subscribeLegacySelections, }; }; diff --git a/packages/gqty/src/Client/compat/hydrateCache.ts b/packages/gqty/src/Client/compat/hydrateCache.ts index 015d37236..1f01d3143 100644 --- a/packages/gqty/src/Client/compat/hydrateCache.ts +++ b/packages/gqty/src/Client/compat/hydrateCache.ts @@ -63,8 +63,6 @@ export const createLegacyHydrateCache = shouldRefetch === true ? 0 : shouldRefetch ); } - - // TODO: shouldRefetch: number; Skip networks for X ms to prevent unnecessary no-cache/no-store renders. }; // TODO: New SSR should always trust the cache during hydration, never refetch diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index 92b829883..7a03f46b2 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -1,7 +1,4 @@ import type { BaseGeneratedSchema } from '../..'; -import type { Selection } from '../../Selection'; -import { fetchSelections } from '../resolveSelections'; -import { updateCaches } from '../updateCaches'; import type { CreateLegacyMethodOptions } from './client'; import { convertSelection, LegacySelection } from './selection'; @@ -32,9 +29,7 @@ export interface LegacyInlineResolveOptions { export const createLegacyInlineResolved = < TSchema extends BaseGeneratedSchema = BaseGeneratedSchema >({ - cache, - debugger: debug, - fetchOptions: { fetchPolicy, ...fetchOptions }, + resolvers: { createResolver }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyInlineResolved => { return ( @@ -47,17 +42,17 @@ export const createLegacyInlineResolved = < operationName, } = {} ) => { - let hasCacheHit = false; - let shouldFetch = refetch; - const selections = new Set(); + const { context, selections, resolve } = createResolver({ + fetchPolicy: refetch ? 'no-cache' : 'default', + operationName, + }); const unsubscribe = subscribeSelections((selection, cache) => { - shouldFetch ||= cache?.data === undefined; - hasCacheHit ||= cache?.data !== undefined; - - selections.add(selection); + context.onSelect?.(selection, cache); onSelection?.(convertSelection(selection)); }); + context.shouldFetch ||= refetch; + const data = fn(); unsubscribe(); @@ -70,23 +65,14 @@ export const createLegacyInlineResolved = < return data; } - if (!shouldFetch) { + if (!context.shouldFetch) { return data; } - if (hasCacheHit && !refetch) { + if (context.hasCacheHit && !refetch) { onCacheData?.(data); } - return fetchSelections(selections, { - debugger: debug, - fetchOptions, - operationName, - }) - .then((results) => updateCaches(results, [cache])) - .then(() => fn()) - .finally(() => { - selections.clear(); - }); + return resolve().then(() => fn()); }; }; diff --git a/packages/gqty/src/Client/compat/mutate.ts b/packages/gqty/src/Client/compat/mutate.ts index 7d0b2df11..c65a95d01 100644 --- a/packages/gqty/src/Client/compat/mutate.ts +++ b/packages/gqty/src/Client/compat/mutate.ts @@ -22,11 +22,12 @@ export interface LegacyMutate { ): Promise; } -export const createLegacyMutate = ({ - accessor, - resolve, -}: CreateLegacyMethodOptions): LegacyMutate => { - return async (fn, { onComplete, onError } = {}) => { +export const createLegacyMutate = + ({ + accessor, + resolvers: { resolve }, + }: CreateLegacyMethodOptions): LegacyMutate => + async (fn, { onComplete, onError } = {}) => { try { const data = (await resolve(({ mutation }) => fn(mutation), { fetchPolicy: 'no-cache', @@ -51,4 +52,3 @@ export const createLegacyMutate = ({ throw e; } }; -}; diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts index 2cf2fabc7..33ccf5a3e 100644 --- a/packages/gqty/src/Client/compat/prefetch.ts +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -1,51 +1,29 @@ import type { BaseGeneratedSchema } from '../..'; -import { GQtyError } from '../../Error'; -import type { Selection } from '../../Selection'; -import { fetchSelections } from '../resolveSelections'; -import { updateCaches } from '../updateCaches'; import type { CreateLegacyMethodOptions } from './client'; export type LegacyPrefetch = { (fn: (query: TSchema['query']) => TData): TData | Promise; }; -export const createLegacyPrefetch = < - TSchema extends BaseGeneratedSchema = BaseGeneratedSchema ->({ - accessor, - cache, - debugger: debug, - fetchOptions: { fetcher, retryPolicy, subscriber, ...fetchOptions }, - subscribeLegacySelections: subscribeSelections, -}: CreateLegacyMethodOptions): LegacyPrefetch => { - return (fn, { operationName }: { operationName?: string } = {}) => { - let shouldFetch = false; - const selections = new Set(); - const unsubscribe = subscribeSelections((selection, cache) => { - shouldFetch ||= cache?.data === undefined; - - selections.add(selection); +export const createLegacyPrefetch = + ({ + resolvers: { createResolver }, + subscribeLegacySelections, + }: CreateLegacyMethodOptions): LegacyPrefetch => + (fn, { operationName }: { operationName?: string } = {}) => { + const { accessor, context, resolve } = createResolver({ + operationName, + }); + const unsubscribe = subscribeLegacySelections((selection, cache) => { + context.onSelect?.(selection, cache); }); - const data = fn(accessor.query); unsubscribe(); - if (!shouldFetch) { + if (!context.shouldFetch) { return data; } - return fetchSelections(selections, { - debugger: debug, - fetchOptions: { fetcher, retryPolicy, ...fetchOptions }, - operationName, - }).then( - (results) => { - updateCaches(results, [cache]); - - return fn(accessor.query); - }, - (error) => Promise.reject(GQtyError.create(error, () => {})) - ); + return resolve().then(() => fn(accessor.query)); }; -}; diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index ac20099a5..b787b16ce 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -2,10 +2,8 @@ import type { QueryPayload } from 'gqty/Schema'; import type { GraphQLError } from 'graphql'; import { MessageType } from 'graphql-ws'; import type { BaseGeneratedSchema } from '..'; -import { Cache } from '../../Cache'; import { GQtyError, RetryOptions } from '../../Error'; import { buildQuery } from '../../QueryBuilder'; -import type { Selection } from '../../Selection'; import { FetchResult, fetchSelections, @@ -109,9 +107,10 @@ export const createLegacyResolved = < TSchema extends BaseGeneratedSchema = BaseGeneratedSchema >({ cache, - context, + context: globalContext, debugger: debug, fetchOptions: { fetcher, subscriber, retryPolicy }, + resolvers: { createResolver }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyResolved => { return async ( @@ -130,27 +129,31 @@ export const createLegacyResolved = < retry = retryPolicy, }: LegacyResolveOptions = {} ) => { - let hasCacheHit = false; - let shouldFetch = refetch || noCache; - const selections = new Set(); - const resolutionCache = noCache ? new Cache() : cache; + const { context, selections } = createResolver({ + fetchPolicy: noCache ? 'no-store' : refetch ? 'no-cache' : 'default', + operationName, + }); + const unsubscribe = subscribeSelections((selection, cache) => { + context.onSelect?.(selection, cache); + onSelection?.(convertSelection(selection)); + }); + const resolutionCache = refetch ? cache : context.cache; + const targetCaches = noCache + ? [context.cache] + : refetch + ? [context.cache, cache] + : [cache]; const dataFn = () => { - context.cache = resolutionCache; + globalContext.cache = resolutionCache; try { return fn(); } finally { - context.cache = cache; + globalContext.cache = cache; } }; - const unsubscribe = subscribeSelections((selection, cache) => { - shouldFetch ||= cache?.data === undefined; - hasCacheHit ||= cache?.data !== undefined; - - selections.add(selection); - onSelection?.(convertSelection(selection)); - }); + context.shouldFetch ||= noCache || refetch; const data = dataFn(); @@ -164,11 +167,11 @@ export const createLegacyResolved = < return data; } - if (!shouldFetch) { + if (!context.shouldFetch) { return data; } - if (hasCacheHit) { + if (context.hasCacheHit) { onCacheData?.(data); } else { onNoCacheFound?.(); @@ -224,7 +227,7 @@ export const createLegacyResolved = < result.extensions = payload.extensions; if (result.data != null) { - updateCaches([result as FetchResult], [resolutionCache]); + updateCaches([result as FetchResult], targetCaches); } debug?.dispatch({ @@ -286,7 +289,7 @@ export const createLegacyResolved = < operationName, } ).then( - (results) => updateCaches(results, [resolutionCache]), + (results) => updateCaches(results, targetCaches), (error) => Promise.reject(GQtyError.create(error, () => {})) ); diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index b8d083868..744398062 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -1,10 +1,6 @@ -import { GraphQLError } from 'graphql'; import type { BaseGeneratedSchema } from '..'; -import { Cache } from '../../Cache'; import { GQtyError } from '../../Error'; import type { Selection } from '../../Selection'; -import { subscribeSelections } from '../resolveSelections'; -import { updateCaches } from '../updateCaches'; import type { CreateLegacyMethodOptions } from './client'; export type LegacyTrackCallType = 'initial' | 'cache_change'; @@ -37,90 +33,56 @@ export const createLegacyTrack = < TSchema extends BaseGeneratedSchema = BaseGeneratedSchema >({ cache, - context, - debugger: debug, - fetchOptions: { fetchPolicy, ...fetchOptions }, + context: globalContext, + resolvers: { createSubscriber }, subscribeLegacySelections, }: CreateLegacyMethodOptions) => { const track: LegacyTrack = ( fn, { onError, operationName, refetch = false } = {} ) => { - const selections = new Set(); - const resolutionCache = refetch ? new Cache() : cache; + const { context, selections, subscribe } = createSubscriber({ + fetchPolicy: refetch ? 'no-cache' : 'default', + operationName, + }); + const resolutionCache = refetch ? context.cache : cache; const dataFn = (info: LegacyTrackCallInfo) => { - context.cache = resolutionCache; - - const data = fn(info); + globalContext.cache = resolutionCache; - context.cache = cache; - - return data; + try { + return fn(info); + } finally { + globalContext.cache = cache; + } }; - - const unsubscribe = subscribeLegacySelections((selection) => { - selections.add(selection); + const unsubscribe = subscribeLegacySelections((selection, cache) => { + context.onSelect?.(selection, cache); }); - const data = { current: dataFn({ type: 'initial' }) }; unsubscribe(); - const unsubscribeCache = context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - () => { - data.current = fn({ type: 'cache_change' }); - } - ); - - const unsubscribeSelections = subscribeSelections( - selections, - ({ errors, data, extensions }) => { - if (errors) { - const error = errors.every((error) => error instanceof GraphQLError) - ? GQtyError.fromGraphQLErrors(errors) - : errors[0] instanceof GQtyError - ? errors[0] - : new GQtyError('Subscription thrown an unknown error.', { - otherError: errors[0], + const stop = subscribe({ + onError(error) { + const theError = + error instanceof GQtyError + ? error + : new GQtyError('Unknown subscription error', { + otherError: error, }); - if (onError) { - onError(error); - } else { - throw error; - } - } else if (data !== undefined) { - updateCaches( - [{ data, extensions }], - fetchPolicy !== 'no-store' && context.cache !== cache - ? [context.cache, cache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } - ); + if (onError) { + onError(theError); } else { - // Fetches responded, subscriptions closed, but cache subscription is - // still active. + throw theError; } }, - { - debugger: debug, - fetchOptions: { - fetchPolicy: refetch ? 'no-cache' : fetchPolicy, - ...fetchOptions, - }, - operationName, - } - ); - - return { - data, - selections, - stop: () => { - unsubscribeCache(); - unsubscribeSelections(); + onNext() { + data.current = dataFn({ type: 'cache_change' }); }, - }; + }); + + return { data, selections, stop }; }; return track; diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index e2f52458f..a71065281 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -3,31 +3,29 @@ import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; import type { ResolveOptions } from './resolvers'; -export type ResolveContext = SchemaContext<{ - notifyCacheUpdate: boolean; - shouldFetch: boolean; -}>; - export type SchemaContext< T extends Record = Record > = T & { cache: Cache; readonly cacheOptions?: CacheGetOptions; + readonly depthLimit: number; readonly scalars: ScalarsEnumsHash; /** Root schema for type lookups */ readonly schema: Readonly; /** Custom key fields for each object type. */ readonly typeKeys?: Record; - readonly depthLimit: number; - - onSelect?: (selection: Selection, cache?: CacheDataContainer) => void; + onSelect: (selection: Selection, cache?: CacheDataContainer) => void; + notifyCacheUpdate: boolean; + shouldFetch: boolean; + hasCacheHit: boolean; + hasCacheMiss: boolean; }; export type CreateContextOptions = { cache: Cache; depthLimit: number; fetchPolicy: ResolveOptions['fetchPolicy']; - onSelect?: NonNullable; + onSelect?: NonNullable; scalars: ScalarsEnumsHash; schema: Readonly; typeKeys?: Record; @@ -41,7 +39,7 @@ export const createContext = ({ scalars, schema, typeKeys, -}: CreateContextOptions): ResolveContext => ({ +}: CreateContextOptions): SchemaContext => ({ cache: fetchPolicy === 'no-cache' || fetchPolicy === 'no-store' ? new Cache() @@ -55,12 +53,17 @@ export const createContext = ({ scalars, schema, depthLimit, + hasCacheHit: false, + hasCacheMiss: false, + shouldFetch: false, + notifyCacheUpdate: fetchPolicy !== 'default', onSelect(selection, cacheNode) { const now = Date.now(); const { data, expiresAt: age = Infinity } = cacheNode ?? {}; // Suggest a fetch on a stale or missing cache. this.shouldFetch ||= data === undefined || age < now; + this.hasCacheHit ||= data !== undefined; // Missing cache always notify on cache updates. // The only case we skip this is when fetching for SWR on 'default'. @@ -68,7 +71,5 @@ export const createContext = ({ onSelect?.(selection, cacheNode); }, - notifyCacheUpdate: fetchPolicy !== 'default', - shouldFetch: false, typeKeys, }); diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 88de388d2..8c16c79d3 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -14,12 +14,14 @@ import type { Schema, } from '../Schema'; import { createLegacyClient, LegacyClient } from './compat/client'; -import { createContext } from './context'; +import { createContext, CreateContextOptions } from './context'; import { createDebugger } from './debugger'; -import { createResolvers, ResolveFn, SubscribeFn } from './resolvers'; +import { createResolvers, Resolvers } from './resolvers'; -export type { ResolveContext, SchemaContext } from './context'; +export { $meta } from '../Accessor'; +export type { SchemaContext } from './context'; export type { DebugEvent } from './debugger'; +export { fetchSelections, subscribeSelections } from './resolveSelections'; /** A generated schema type in it's most basic form */ export type BaseGeneratedSchema = { @@ -96,40 +98,14 @@ export type ClientOptions = { __depthLimit?: number; }; -export type Client = Persistors & { - /** - * Query, mutation and subscription in a promise. - * - * Selections to queries and mutations are fetched with - * `fetchOptions.fetcher`, the result is resolved with the cache updated - * according to the current fetch policy - * - * Subscriptions are disconnected upon delivery of the first data message, - * the cache is updated and the data is resolved, essentially behaving like - * a promise. - */ - resolve: ResolveFn; - - /** - * Query, mutation and subscription in an async generator. - * - * Subscription data continuously update the cache, while queries and - * mutations are fetched once and then listen to future cache changes - * from the same selections. - * - * This function subscribes to *cache changes*, termination of underlying - * subscription (WebSocket/EventSource) does not stop this generator. - * - * Calling `.return()` does not terminate pending promise. Use the `signal` - * option to exist the generator without waiting for the next update. - */ - subscribe: SubscribeFn; +export type Client = Persistors & + Resolvers & { + /** Global cache accessors. */ + schema: TSchema; - schema: TSchema; - - /** Subscribe to debug events, useful for logging. */ - subscribeDebugEvents: ReturnType['subscribe']; -}; + /** Subscribe to debug events, useful for logging. */ + subscribeDebugEvents: ReturnType['subscribe']; + }; export const createClient = ({ cacheOptions: { @@ -164,9 +140,10 @@ export const createClient = ({ staleWhileRevalidate, }); + // TODO: Defer creation until `@gqty/logger` is used. const debug = createDebugger(); - const { resolve, subscribe } = createResolvers({ + const resolvers = createResolvers({ scalars, schema, cache: clientCache, @@ -181,26 +158,25 @@ export const createClient = ({ depthLimit: __depthLimit, }); - /** For cache accessors outside of resolver scopes. */ - const clientContext = createContext({ + const defaultContextOptions: CreateContextOptions = { cache: clientCache, depthLimit: __depthLimit, fetchPolicy, scalars, schema, typeKeys: normalizationOptions?.schemaKeys, - }); + }; + + /** Global scope for accessing the cache via `schema` property. */ + const clientContext = createContext(defaultContextOptions); const accessor = createSchemaAccessor(clientContext); return { - resolve, - subscribe, + ...resolvers, schema: accessor, - - ...createPersistors(clientCache), - subscribeDebugEvents: debug.subscribe, + ...createPersistors(clientCache), ...createLegacyClient({ accessor, @@ -214,10 +190,9 @@ export const createClient = ({ subscriber, ...fetchOptions, }, - resolve, scalars, schema, - subscribe, + resolvers, __depthLimit, }), }; diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 30a2624ad..d7947a6b8 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -21,7 +21,7 @@ export type QueryExtensions = { type: string; hash: string }; export type FetchResult< TData extends Record = Record -> = ExecutionResult; +> = Omit, 'errors'> & { error?: Error | GQtyError }; export const fetchSelections = < TData extends Record = Record @@ -50,29 +50,42 @@ export const fetchSelections = < throw new GQtyError(`Expected query hash.`); } - const payload: QueryPayload = { + const queryPayload: QueryPayload = { query, variables, operationName, + extensions: { type, hash }, }; // Dedupe - const result = await dedupePromise( + const { data, errors, extensions } = await dedupePromise( cache, hash, type === 'subscription' - ? () => doSubscribeOnce(payload, fetchOptions) - : () => doFetch(payload, fetchOptions) + ? () => doSubscribeOnce(queryPayload, fetchOptions) + : () => doFetch(queryPayload, fetchOptions) ); + const error = errors?.length + ? GQtyError.fromGraphQLErrors(errors) + : undefined; + debug?.dispatch({ cache, request: { query, variables, operationName }, - result, + result: { + data, + error, + extensions: { ...extensions, ...queryPayload.extensions }, + }, selections, }); - return { ...result, extensions: { type, hash } }; + return { + data, + error, + extensions: { ...extensions, ...queryPayload.extensions }, + }; } ) ); @@ -83,6 +96,18 @@ export type SubscriptionCallback> = ( export type Unsubscribe = () => void; +/** + * Reference count when there are more than one listeners, unsubscription + * happens when all listeners are unsubscribed. + */ +const subsRef = new WeakMap< + Promise, + { + dispose: () => void; + count: number; + } +>(); + export const subscribeSelections = < TData extends Record = Record >( @@ -148,25 +173,30 @@ export const subscribeSelections = < const next = ({ data, errors, extensions }: ExecutionResult) => { if (data === undefined) return; + const error = errors?.length + ? GQtyError.fromGraphQLErrors(errors) + : undefined; + debug?.dispatch({ cache, label: subscriptionId ? `[id=${subscriptionId}] [data]` : undefined, request: queryPayload, - result: { data, errors, extensions }, + result: { + data, + error, + extensions: { ...extensions, ...queryPayload.extensions }, + }, selections, }); fn({ data, - errors, - extensions: { - ...extensions, - ...queryPayload.extensions!, - }, + error, + extensions: { ...extensions, ...queryPayload.extensions }, }); }; - const error = (error: unknown) => { + const error = (error: GQtyError) => { if (error == null) { throw new GQtyError(`Subscription sink closed without an error.`); } @@ -179,25 +209,37 @@ export const subscribeSelections = < }); fn({ - errors: [error as any], + error, extensions: queryPayload.extensions, }); }; + let dispose: (() => void) | undefined; + // Dedupe - return dedupePromise( + const promise = dedupePromise( type === 'subscription' ? undefined : cache, hash, type === 'subscription' ? () => new Promise((complete) => { - const unsubscribe = subscriber!.subscribe(queryPayload, { + dispose = subscriber!.subscribe(queryPayload, { next, error(err) { if (Array.isArray(err)) { error(GQtyError.fromGraphQLErrors(err)); } else if (!isCloseEvent(err)) { - error(err); + if (err instanceof GQtyError) { + error(err); + } else { + error( + new GQtyError( + (err as Error).message ?? + 'Unknown subscription error', + { otherError: err } + ) + ); + } } this.complete(); @@ -215,8 +257,6 @@ export const subscribeSelections = < complete(); }, }); - - unsubscribers.add(unsubscribe); }) : () => new Promise((complete) => { @@ -229,9 +269,22 @@ export const subscribeSelections = < .then(next, error) .finally(complete); - unsubscribers.add(() => aborter.abort()); + dispose = () => aborter.abort(); }) ); + + if (dispose) { + subsRef.set(promise, { dispose, count: 1 }); + } else if (subsRef.get(promise)) { + subsRef.get(promise)!.count++; + } + + unsubscribers.add(() => { + const ref = subsRef.get(promise); + if (ref && --ref.count <= 0) { + ref.dispose(); + } + }); } ); @@ -323,3 +376,5 @@ export const isCloseEvent = (input: unknown): input is CloseEvent => { ].includes(error.code)) ); }; + +// TODO: Test unsubscribe on both subscription and fetch with concurrent subscribers. diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 2ad08824d..4e0f47765 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -1,16 +1,16 @@ import type { BaseGeneratedSchema, FetchOptions } from '.'; import { createSchemaAccessor } from '../Accessor'; import type { Cache } from '../Cache'; -import { GQtyError } from '../Error'; +import type { GQtyError } from '../Error'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; import { pick } from '../Utils/pick'; -import { createContext, ResolveContext } from './context'; +import { createContext, SchemaContext } from './context'; import type { Debugger } from './debugger'; import { fetchSelections, subscribeSelections } from './resolveSelections'; import { updateCaches } from './updateCaches'; -export type CreateResolvedOptions = { +export type CreateResolversOptions = { cache: Cache; debugger?: Debugger; depthLimit: number; @@ -19,6 +19,79 @@ export type CreateResolvedOptions = { schema: Readonly; }; +export type Resolvers = { + /** Create parts used by `resolve()`, useful for deferring fetches. */ + createResolver: CreateResolverFn; + + /** Create parts used by `subscribe()`, useful for deferring subscriptions. */ + createSubscriber: CreateSubscriberFn; + + /** + * Query, mutation and subscription in a promise. + * + * Selections to queries and mutations are fetched with + * `fetchOptions.fetcher`, the result is resolved with the cache updated + * according to the current fetch policy + * + * Subscriptions are disconnected upon delivery of the first data message, + * the cache is updated and the data is resolved, essentially behaving like + * a promise. + */ + resolve: ResolveFn; + + /** + * Query, mutation and subscription in an async generator. + * + * Subscription data continuously update the cache, while queries and + * mutations are fetched once and then listen to future cache changes + * from the same selections. + * + * This function subscribes to *cache changes*, termination of underlying + * subscription (WebSocket/EventSource) does not stop this generator. + * + * Calling `.return()` does not terminate pending promise. Use the `signal` + * option to exist the generator without waiting for the next update. + */ + subscribe: SubscribeFn; +}; + +export type CreateResolverFn = ( + options?: ResolveOptions +) => { + accessor: TSchema; + context: SchemaContext; + resolve: () => Promise; + selections: Set; +}; + +export type CreateSubscriberFn = ( + options?: SubscribeOptions +) => { + accessor: TSchema; + context: SchemaContext; + selections: Set; + subscribe: (callbacks: { + onError: (error: Error | GQtyError) => void; + onNext: (value: unknown) => void; + }) => () => void; +}; + +export type ResolveFn = < + TData extends Record = Record +>( + fn: DataFn, + options?: ResolveOptions +) => Promise; + +const asyncItDoneMessage = { done: true } as IteratorResult; + +export type SubscribeFn = < + TData extends Record = Record +>( + fn: DataFn, + options?: SubscribeOptions +) => AsyncGenerator; + export type DataFn = (schema: TSchema) => void; export type ResolveOptions = { @@ -55,7 +128,7 @@ export type ResolveOptions = { onFetch?: (fetchPromise: Promise) => void; - onSelect?: NonNullable; + onSelect?: NonNullable; operationName?: string; }; @@ -73,7 +146,7 @@ export type SubscribeOptions = { */ onError?: (error: unknown) => void; - onSelect?: NonNullable; + onSelect?: NonNullable; operationName?: string; @@ -83,22 +156,6 @@ export type SubscribeOptions = { signal?: AbortSignal; }; -export type ResolveFn = < - TData extends Record = Record ->( - fn: DataFn, - options?: ResolveOptions -) => Promise | TData; - -const asyncItDoneMessage = { done: true } as IteratorResult; - -export type SubscribeFn = < - TData extends Record = Record ->( - fn: DataFn, - options?: SubscribeOptions -) => AsyncGenerator; - export const createResolvers = ({ cache: clientCache, debugger: debug, @@ -107,19 +164,14 @@ export const createResolvers = ({ fetchOptions: { fetchPolicy: defaultFetchPolicy = 'default' }, scalars, schema, -}: CreateResolvedOptions) => { - const resolve: ResolveFn = < - TData extends Record = Record - >( - fn: DataFn, - { - awaitsFetch = true, - fetchPolicy = defaultFetchPolicy ?? 'default', - operationName, - onFetch, - onSelect, - }: ResolveOptions = {} - ): Promise | TData => { +}: CreateResolversOptions): Resolvers => { + const createResolver = ({ + awaitsFetch = true, + fetchPolicy = defaultFetchPolicy ?? 'default', + operationName, + onFetch, + onSelect, + }: ResolveOptions = {}) => { const selections = new Set(); const context = createContext({ cache: clientCache, @@ -134,13 +186,9 @@ export const createResolvers = ({ }); const accessor = createSchemaAccessor(context); - const compatDataFn = () => - // compat: resolved(fn) and inlineResolved(fn) returns accessors - (fn(accessor) as unknown as TData) ?? pick(accessor, selections); - - const data = compatDataFn(); + const resolve = async () => { + if (!context.shouldFetch) return; - if (context.shouldFetch) { if (fetchPolicy === 'only-if-cached') { // Mimic fetch error in the Chromium/WebKit monopoly throw new TypeError('Failed to fetch'); @@ -166,31 +214,20 @@ export const createResolvers = ({ }); if (awaitsFetch) { - return fetchPromises.then(compatDataFn); + await fetchPromises; } else { onFetch?.(fetchPromises); } - } + }; - return data; + return { accessor, context, resolve, selections }; }; - /** - * Initiates selected queries, mutations and subscriptions, then subscribes - * to caches changes until the generator is closed. - */ - const subscribe: SubscribeFn = function subscribe< - TData extends Record = Record - >( - fn: DataFn, - { - fetchPolicy = defaultFetchPolicy, - onError, - onSelect, - operationName, - signal, - }: SubscribeOptions = {} - ): AsyncGenerator { + const createSubscriber = ({ + fetchPolicy = defaultFetchPolicy, + onSelect, + operationName, + }: SubscribeOptions = {}) => { const selections = new Set(); const context = createContext({ cache: clientCache, @@ -205,113 +242,138 @@ export const createResolvers = ({ }); const accessor = createSchemaAccessor(context); - fn(accessor); - - // Assuming selections are cached, otherwise uncomment the following line. - //context.onSelect = undefined; - - let deferred: - | { - resolve: () => void; - reject: (err: unknown) => void; - } - | undefined; - let rejected: unknown; - let done = false; - const pending = [] as TData[]; - - if (selections.size === 0) { - done = true; - } - - signal?.addEventListener('abort', () => { - done = true; - deferred?.resolve(); - }); - - const unsubscribeCache = context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - (value) => { - pending.push((fn(accessor) as any) ?? (value as any)); - deferred?.resolve(); - } - ); - - const unsubscribeSelections = subscribeSelections( - selections, - ({ data, errors, extensions }) => { - if (errors) { - const error = - errors.length > 1 - ? GQtyError.fromGraphQLErrors(errors) - : errors.length === 1 - ? errors[0] - : new GQtyError('Subscription thrown an unknown error.'); - - if (onError) { + const subscribe = ({ + onError, + onNext, + }: { + onError: (error: Error | GQtyError) => void; + onNext: (value: unknown) => void; + }) => { + const unsubscribeCache = context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + onNext + ); + + const unsubscribeSelections = subscribeSelections( + selections, + ({ data, error, extensions }) => { + if (error) { onError(error); - } else { + // Discard data here because of how generators work if (data !== undefined) { } - - rejected = error; - deferred?.reject(error); + } else if (data !== undefined) { + updateCaches( + [{ data, error, extensions }], + fetchPolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + } else { + // Fetches responded, subscriptions closed, but cache subscription is + // still active. } - } else if (data !== undefined) { - updateCaches( - [{ data, errors, extensions }], - fetchPolicy !== 'no-store' && context.cache !== clientCache - ? [context.cache, clientCache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } - ); - } else { - // Fetches responded, subscriptions closed, but cache subscription is - // still active. + }, + { + debugger: debug, + fetchOptions, + operationName, } - }, - { - debugger: debug, - fetchOptions, - operationName, - } - ); + ); - return { - [Symbol.asyncIterator]() { - return this; - }, - async next() { - if (rejected !== undefined) { - throw rejected; - } else if (done) { - return asyncItDoneMessage; - } else if (pending.length > 0) { - return { value: pending.shift()! }; - } else { - await new Promise((resolve, reject) => { - deferred = { resolve, reject }; - }); - - return this.next(); - } - }, - async throw(error) { - throw error; - }, - async return() { + return () => { unsubscribeCache(); unsubscribeSelections(); - return asyncItDoneMessage; - }, + }; }; + + return { accessor, context, selections, subscribe }; }; return { - resolve, - subscribe, + createResolver, + createSubscriber, + + resolve: async (fn, options) => { + const { accessor, resolve, selections } = createResolver(options); + + fn(accessor) as unknown; + + await resolve(); + + return ((fn(accessor) as unknown) ?? pick(accessor, selections)) as any; + }, + /** + * Initiates selected queries, mutations and subscriptions, then subscribes + * to caches changes until the generator is closed. + */ + subscribe: (fn, options): AsyncGenerator => { + const { accessor, selections, subscribe } = createSubscriber(options); + + fn(accessor); + + const unsubscribe = subscribe({ + onError: (error) => { + rejected = error; + deferred?.reject(error); + }, + onNext(value) { + pending.push((fn(accessor) as any) ?? (value as any)); + deferred?.resolve(); + }, + }); + + // Assuming selections are cached, otherwise uncomment the following line. + //context.onSelect = undefined; + + let deferred: + | { + resolve: () => void; + reject: (err: unknown) => void; + } + | undefined; + let rejected: unknown; + let done = false; + const pending = [] as unknown[]; + + if (selections.size === 0) { + done = true; + } + + options?.signal?.addEventListener('abort', () => { + done = true; + deferred?.resolve(); + }); + + return { + [Symbol.asyncIterator]() { + return this; + }, + async next() { + if (rejected !== undefined) { + throw rejected; + } else if (done) { + return asyncItDoneMessage; + } else if (pending.length > 0) { + return { value: pending.shift()! }; + } else { + await new Promise((resolve, reject) => { + deferred = { resolve, reject }; + }); + + return this.next(); + } + }, + async throw(error) { + throw error; + }, + async return() { + unsubscribe(); + return asyncItDoneMessage; + }, + }; + }, }; }; - -// TODO: AbortController#signal aborts query and mutation fetches, if any. diff --git a/packages/gqty/src/Client/updateCaches.ts b/packages/gqty/src/Client/updateCaches.ts index ef3c10afe..c22e6773c 100644 --- a/packages/gqty/src/Client/updateCaches.ts +++ b/packages/gqty/src/Client/updateCaches.ts @@ -13,7 +13,7 @@ export const updateCaches = >( for (const response of results) { if (response === undefined) return; - const { data, errors, extensions } = response; + const { data, error, extensions } = response; const type = `${extensions?.type}`; if (data !== undefined) { @@ -24,7 +24,13 @@ export const updateCaches = >( } } - errors?.forEach((error) => errorSet.add(error)); + if (error) { + if (!(error instanceof GQtyError) || !error.graphQLErrors?.length) { + throw error; + } else { + error.graphQLErrors.forEach((error) => errorSet.add(error)); + } + } } if (errorSet.size) { diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 4e41fad4d..2d15e0ddf 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -21,9 +21,9 @@ describe('core#resolve', () => { resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) ).resolves.toBe(1); - expect( + await expect( resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) - ).toBe(1); + ).resolves.toBe(1); await new Promise((resolve) => setTimeout(resolve, 100)); @@ -62,7 +62,7 @@ describe('core#resolve', () => { ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(1); - expect( + await expect( resolve( ({ query }) => { query.nFetchCalls; @@ -70,7 +70,7 @@ describe('core#resolve', () => { }, { fetchPolicy: 'force-cache' } ) - ).toBe('hello world'); + ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(1); await new Promise((resolve) => setTimeout(resolve, 100)); @@ -109,9 +109,9 @@ describe('core#resolve', () => { resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'no-cache' }) ).resolves.toBe(2); - expect( + await expect( resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) - ).toBe(2); + ).resolves.toBe(2); }); it('no-store', async () => { @@ -136,7 +136,7 @@ describe('core#resolve', () => { * When multiple tests are running, GC gets triggered more often and this * randomly fails. Should work when run individually. */ - xit('only-if-cached', async () => { + it('only-if-cached', async () => { const { resolve } = await createTestClient( undefined, undefined, @@ -149,17 +149,17 @@ describe('core#resolve', () => { } ); - expect(() => + await expect(() => resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) - ).toThrowError(new TypeError('Failed to fetch')); + ).rejects.toThrowError(new TypeError('Failed to fetch')); await expect(resolve(({ query }) => query.hello)).resolves.toBe( 'hello world' ); - expect( + await expect( resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) - ).toBe('hello world'); + ).resolves.toBe('hello world'); }); it('cache-and-network', async () => { diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 52e53a83a..78f2ed24b 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,4 +1,4 @@ -import { DebugEvent, GQtyClient, GQtyError } from 'gqty'; +import type { DebugEvent, GQtyClient } from 'gqty'; import parserJSON from 'prettier/parser-babel.js'; import parserGraphQL from 'prettier/parser-graphql.js'; import prettier from 'prettier/standalone.js'; @@ -78,18 +78,11 @@ export function createLogger( label, request: { query, variables, operationName, extensions }, result, - result: { errors = [] } = {}, + result: { error } = {}, selections, }: DebugEvent) { const startTime = Date.now(); - const error = - errors.length > 1 - ? GQtyError.fromGraphQLErrors(errors) - : errors.length === 1 - ? errors[0] - : undefined; - const queryId = (QueryIdMapper[query] ||= ++idMapper); const fetchTime = Date.now() - startTime; diff --git a/packages/logger/test/index.test.ts b/packages/logger/test/index.test.ts index 33b7a3949..0eab3f309 100644 --- a/packages/logger/test/index.test.ts +++ b/packages/logger/test/index.test.ts @@ -167,7 +167,7 @@ describe('logger', () => { } }); - fit('stringified JSON', async () => { + test('stringified JSON', async () => { const logger = createLogger(gqtyClient, { stringifyJSON: true, }); From 5cd45fa19023edeadb4081815292e4b6c30d7a62 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 7 Mar 2023 01:40:23 +0800 Subject: [PATCH 010/122] chore: error message --- packages/gqty/src/Accessor/index.ts | 2 +- packages/gqty/test/accessor.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index 04d3e189c..2dc984fc9 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -66,7 +66,7 @@ export const setCache = ( data = ($meta(data)?.cache.data as TData | undefined) ?? data; if (!data || typeof data !== 'object') { throw new GQtyError( - `Data must be a subset the schema object, got type: ${typeof data}.` + `Data must be a subset of the schema object, got type: ${typeof data}.` ); } diff --git a/packages/gqty/test/accessor.test.ts b/packages/gqty/test/accessor.test.ts index 506691735..606325ca9 100644 --- a/packages/gqty/test/accessor.test.ts +++ b/packages/gqty/test/accessor.test.ts @@ -279,13 +279,13 @@ describe('setCache', () => { expect(() => { setCache(query, (() => {}) as any); }).toThrowError( - 'Data must be a subset the schema object, got type: ' + 'function' + 'Data must be a subset of the schema object, got type: ' + 'function' ); expect(() => { setCache(query, 123123 as any); }).toThrowError( - 'Data must be a subset the schema object, got type: ' + 'number' + 'Data must be a subset of the schema object, got type: ' + 'number' ); expect(() => { From bce665188419e0d7191123309b505333d151f581 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 9 Mar 2023 23:54:27 +0800 Subject: [PATCH 011/122] feat(packages/react): new core shim --- packages/gqty/src/Cache/index.ts | 24 +- packages/gqty/src/Client/compat/client.ts | 19 + packages/gqty/src/Client/compat/prefetch.ts | 12 +- .../gqty/src/Client/compat/prepareRender.ts | 27 +- packages/gqty/src/Client/compat/resolved.ts | 38 +- packages/gqty/src/Client/compat/track.ts | 7 +- packages/gqty/src/Client/index.ts | 49 +- packages/gqty/src/Client/resolveSelections.ts | 51 +- packages/gqty/src/Client/resolvers.ts | 116 +++-- packages/gqty/src/Error/index.ts | 21 +- packages/gqty/src/Helpers/index.ts | 1 + packages/gqty/src/Helpers/select.ts | 20 + packages/gqty/src/Helpers/useMetaStateHack.ts | 59 +++ packages/gqty/src/Utils/index.ts | 1 + packages/gqty/src/Utils/pick.ts | 1 + packages/react/package.json | 64 ++- packages/react/src/client.ts | 59 +-- packages/react/src/common.ts | 489 ++---------------- packages/react/src/index.tsx | 2 +- packages/react/src/memoryStore.ts | 23 + packages/react/src/meta/useMetaState.ts | 262 +++------- packages/react/src/mutation/useMutation.ts | 294 ++++------- packages/react/src/query/hoc.tsx | 85 +-- packages/react/src/query/preparedQuery.ts | 291 +++++------ packages/react/src/query/useLazyQuery.ts | 207 +++----- packages/react/src/query/usePaginatedQuery.ts | 371 +++++-------- packages/react/src/query/useQuery.ts | 237 ++++----- packages/react/src/query/useRefetch.ts | 201 +++---- .../react/src/query/useTransactionQuery.ts | 481 +++++------------ packages/react/src/ssr/ssr.ts | 25 +- .../react/src/subscription/useSubscription.ts | 162 ++---- packages/react/src/useWindowFocusEffect.ts | 26 + pnpm-lock.yaml | 479 ++++++++++++++++- 33 files changed, 1854 insertions(+), 2350 deletions(-) create mode 100644 packages/gqty/src/Helpers/select.ts create mode 100644 packages/gqty/src/Helpers/useMetaStateHack.ts create mode 100644 packages/react/src/memoryStore.ts create mode 100644 packages/react/src/useWindowFocusEffect.ts diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index ed8bcd4f8..19867b0ad 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -1,9 +1,6 @@ -// Cache/slim.ts: A slim version of the original data cache - import set from 'just-safe-set'; import { isSkeleton } from '../Accessor/skeleton'; -import { deepCopy } from '../Helpers/deepCopy'; -import { FrailMap } from '../Helpers/FrailMap'; +import { deepCopy, FrailMap, select } from '../Helpers'; import type { GeneratedSchemaObject } from '../Schema'; import type { Selection } from '../Selection'; import { crawl } from './crawl'; @@ -371,22 +368,3 @@ export class Cache { } } } - -/** - * Similar to _.get() but dots goes into arrays. - * - * JSONata, JSONPath and JMESPath does similar things but they're overkill here. - */ -export function select(node: CacheNode, path: string[]): CacheNode { - if (node == null || typeof node !== 'object' || path.length === 0) { - return node; - } - - if (Array.isArray(node)) { - return node.map((item) => select(item, path)); - } - - const [key, ...rest] = path; - - return select(node[key], rest); -} diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index 7dd549407..a6c9538cf 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -19,6 +19,25 @@ import { createRefetch, LegacyRefetch } from './refetch'; import { createLegacyResolved, LegacyResolved } from './resolved'; import { createLegacyTrack, LegacyTrack } from './track'; +export type { + LegacyHydrateCache, + LegacyHydrateCacheOptions, +} from './hydrateCache'; +export type { + LegacyInlineResolved, + LegacyInlineResolveOptions, +} from './inlineResolved'; +export type { LegacyMutate, LegacyMutateHelpers } from './mutate'; +export type { LegacyPrefetch } from './prefetch'; +export type { LegacyRefetch } from './refetch'; +export type { LegacyResolved, LegacyResolveOptions } from './resolved'; +export type { + LegacyTrack, + LegacyTrackCallInfo, + LegacyTrackCallType, + LegacyTrackOptions, +} from './track'; + let deprecationWarningMessage: string | undefined = !process.env.NODE_ENV || process.env.NODE_ENV === 'development' ? '[GQty] global query, mutation and subscription is deprecated, use ' + diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts index 33ccf5a3e..df522d597 100644 --- a/packages/gqty/src/Client/compat/prefetch.ts +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -2,7 +2,7 @@ import type { BaseGeneratedSchema } from '../..'; import type { CreateLegacyMethodOptions } from './client'; export type LegacyPrefetch = { - (fn: (query: TSchema['query']) => TData): TData | Promise; + (fn: (query: TSchema['query']) => TData): Promise; }; export const createLegacyPrefetch = @@ -10,10 +10,8 @@ export const createLegacyPrefetch = resolvers: { createResolver }, subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyPrefetch => - (fn, { operationName }: { operationName?: string } = {}) => { - const { accessor, context, resolve } = createResolver({ - operationName, - }); + async (fn, { operationName }: { operationName?: string } = {}) => { + const { accessor, context, resolve } = createResolver({ operationName }); const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); }); @@ -25,5 +23,7 @@ export const createLegacyPrefetch = return data; } - return resolve().then(() => fn(accessor.query)); + await resolve(); + + return fn(accessor.query); }; diff --git a/packages/gqty/src/Client/compat/prepareRender.ts b/packages/gqty/src/Client/compat/prepareRender.ts index 2b95954bf..6c70f4840 100644 --- a/packages/gqty/src/Client/compat/prepareRender.ts +++ b/packages/gqty/src/Client/compat/prepareRender.ts @@ -78,6 +78,11 @@ export const createLegacyPrepareRender = ({ return async (render) => { const ssrCache = new Cache(); const selections = new Set(); + + // This works even for the new scoped hooks because there is a hack at + // SchemaContext.parentContext which sends selections upwards to the context + // at client level. Which should be removed in the future when a proper way + // to chain selection callbacks is implemented. const unsubscribe = subscribeLegacySelections((selection) => { selections.add(selection); }); @@ -88,15 +93,19 @@ export const createLegacyPrepareRender = ({ unsubscribe(); } - const results = await fetchSelections(selections, { - cache, - debugger: debug, - fetchOptions, - }); - - updateCaches(results, [cache, ssrCache], { skipNotify: true }); - - // await Promise.all(getActivePromises(cache) ?? []); + // We can simply fetch here because subscriptions are be skipped on + // server side. Deferred fetches such as useLazyQuery and useMutation + // also don't fire during SSR. + await fetchSelections( + new Set([...selections].filter((s) => s.root.key !== 'subscription')), + { + cache, + debugger: debug, + fetchOptions, + } + ).then((results) => + updateCaches(results, [cache, ssrCache], { skipNotify: true }) + ); return { cacheSnapshot: toJSON( diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index b787b16ce..421bc9176 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -1,6 +1,7 @@ import type { QueryPayload } from 'gqty/Schema'; import type { GraphQLError } from 'graphql'; import { MessageType } from 'graphql-ws'; +import type { CloseEvent } from 'ws'; import type { BaseGeneratedSchema } from '..'; import { GQtyError, RetryOptions } from '../../Error'; import { buildQuery } from '../../QueryBuilder'; @@ -113,7 +114,7 @@ export const createLegacyResolved = < resolvers: { createResolver }, subscribeLegacySelections: subscribeSelections, }: CreateLegacyMethodOptions): LegacyResolved => { - return async ( + const resolved: LegacyResolved = async ( fn: () => TData, { fetchOptions, @@ -172,7 +173,9 @@ export const createLegacyResolved = < } if (context.hasCacheHit) { - onCacheData?.(data); + if (onCacheData?.(data) === false) { + return data; + } } else { onNoCacheFound?.(); } @@ -252,15 +255,36 @@ export const createLegacyResolved = < return this.complete(); } + const theError = Array.isArray(error) + ? GQtyError.fromGraphQLErrors(error) + : GQtyError.create(error); + + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [error]` + : undefined, + request: payload, + result: { error: theError }, + selections, + }); + onSubscription?.({ type: 'with-errors', - error: Array.isArray(error) - ? GQtyError.fromGraphQLErrors(error) - : new GQtyError(`Subscription error`, { otherError: error }), + error: theError, unsubscribe, }); }, complete() { + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [unsubscribe]` + : undefined, + request: payload, + selections, + }); + onSubscription?.({ type: 'complete', unsubscribe, @@ -290,9 +314,11 @@ export const createLegacyResolved = < } ).then( (results) => updateCaches(results, targetCaches), - (error) => Promise.reject(GQtyError.create(error, () => {})) + (error) => Promise.reject(GQtyError.create(error)) ); return dataFn(); }; + + return resolved; }; diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index 744398062..12c118454 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -64,12 +64,7 @@ export const createLegacyTrack = < const stop = subscribe({ onError(error) { - const theError = - error instanceof GQtyError - ? error - : new GQtyError('Unknown subscription error', { - otherError: error, - }); + const theError = GQtyError.create(error); if (onError) { onError(theError); diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 8c16c79d3..73697a665 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -19,6 +19,25 @@ import { createDebugger } from './debugger'; import { createResolvers, Resolvers } from './resolvers'; export { $meta } from '../Accessor'; +export { getFields, prepass, selectFields } from '../Helpers'; +export * as useMetaStateHack from '../Helpers/useMetaStateHack'; +export { pick } from '../Utils'; +export type { + LegacyHydrateCache, + LegacyHydrateCacheOptions, + LegacyInlineResolved, + LegacyInlineResolveOptions, + LegacyMutate, + LegacyMutateHelpers, + LegacyPrefetch, + LegacyRefetch, + LegacyResolved, + LegacyResolveOptions, + LegacyTrack, + LegacyTrackCallInfo, + LegacyTrackCallType, + LegacyTrackOptions, +} from './compat/client'; export type { SchemaContext } from './context'; export type { DebugEvent } from './debugger'; export { fetchSelections, subscribeSelections } from './resolveSelections'; @@ -99,7 +118,8 @@ export type ClientOptions = { }; export type Client = Persistors & - Resolvers & { + Resolvers & + LegacyClient & { /** Global cache accessors. */ schema: TSchema; @@ -126,7 +146,7 @@ export const createClient = ({ scalars, schema, __depthLimit = 15, -}: ClientOptions): Client & LegacyClient => { +}: ClientOptions): Client => { const normalizationOptions = normalization === true ? defaultNormalizationOptions @@ -143,6 +163,18 @@ export const createClient = ({ // TODO: Defer creation until `@gqty/logger` is used. const debug = createDebugger(); + const defaultContextOptions: CreateContextOptions = { + cache: clientCache, + depthLimit: __depthLimit, + fetchPolicy, + scalars, + schema, + typeKeys: normalizationOptions?.schemaKeys, + }; + + /** Global scope for accessing the cache via `schema` property. */ + const clientContext = createContext(defaultContextOptions); + const resolvers = createResolvers({ scalars, schema, @@ -156,20 +188,9 @@ export const createClient = ({ ...fetchOptions, }, depthLimit: __depthLimit, + parentContext: clientContext, }); - const defaultContextOptions: CreateContextOptions = { - cache: clientCache, - depthLimit: __depthLimit, - fetchPolicy, - scalars, - schema, - typeKeys: normalizationOptions?.schemaKeys, - }; - - /** Global scope for accessing the cache via `schema` property. */ - const clientContext = createContext(defaultContextOptions); - const accessor = createSchemaAccessor(clientContext); return { diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index d7947a6b8..3686cf88e 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -1,3 +1,4 @@ +import { notifyFetch, notifyRetry } from 'gqty/Helpers/useMetaStateHack'; import type { ExecutionResult } from 'graphql'; import { MessageType, SubscribePayload } from 'graphql-ws'; import { CloseEvent, WebSocket } from 'ws'; @@ -63,7 +64,8 @@ export const fetchSelections = < hash, type === 'subscription' ? () => doSubscribeOnce(queryPayload, fetchOptions) - : () => doFetch(queryPayload, fetchOptions) + : () => + doFetch(queryPayload, { ...fetchOptions, selections }) ); const error = errors?.length @@ -229,17 +231,7 @@ export const subscribeSelections = < if (Array.isArray(err)) { error(GQtyError.fromGraphQLErrors(err)); } else if (!isCloseEvent(err)) { - if (err instanceof GQtyError) { - error(err); - } else { - error( - new GQtyError( - (err as Error).message ?? - 'Unknown subscription error', - { otherError: err } - ) - ); - } + error(GQtyError.create(err)); } this.complete(); @@ -264,6 +256,7 @@ export const subscribeSelections = < doFetch(queryPayload, { ...fetchOptions, + selections, signal: aborter.signal, }) .then(next, error) @@ -297,28 +290,42 @@ const doFetch = async < TData extends Record = Record >( payload: QueryPayload, - { fetcher, retryPolicy, ...fetchOptions }: FetchOptions + { + fetcher, + retryPolicy, + selections, + ...fetchOptions + }: FetchOptions & { selections: Set } ): Promise> => { // lol const doDoFetch = () => fetcher(payload, fetchOptions) as Promise>; try { - return await doDoFetch(); + const promise = doDoFetch(); + + notifyFetch(promise, selections); + + return await promise; } catch (error) { if (!retryPolicy || !(error instanceof Error)) throw error; return new Promise((resolve, reject) => { + // Selections are attached solely for useMetaState() doRetry(retryPolicy!, { - onLastTry: async () => { - try { - resolve(await doDoFetch()); - } catch (e) { - reject(e); - } + onLastTry: () => { + const promise = doDoFetch().then(resolve, reject); + + notifyRetry(promise, selections); + + return promise; }, - onRetry: async () => { - resolve(await doDoFetch()); + onRetry: () => { + const promise = doDoFetch().then(resolve); + + notifyRetry(promise, selections); + + return promise; }, }); }); diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 4e0f47765..495014d32 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -17,6 +17,10 @@ export type CreateResolversOptions = { fetchOptions: FetchOptions; scalars: ScalarsEnumsHash; schema: Readonly; + + // `useRefetch` and `HOC` needs to grab selections from hooks of the same + // component, we need to simulate what InterceptorManager did. + parentContext?: SchemaContext; }; export type Resolvers = { @@ -60,7 +64,7 @@ export type CreateResolverFn = ( ) => { accessor: TSchema; context: SchemaContext; - resolve: () => Promise; + resolve: () => Promise; selections: Set; }; @@ -70,9 +74,9 @@ export type CreateSubscriberFn = ( accessor: TSchema; context: SchemaContext; selections: Set; - subscribe: (callbacks: { - onError: (error: Error | GQtyError) => void; - onNext: (value: unknown) => void; + subscribe: (callbacks?: { + onError?: (error: Error | GQtyError) => void; + onNext?: (value: unknown) => void; }) => () => void; }; @@ -89,7 +93,12 @@ export type SubscribeFn = < TData extends Record = Record >( fn: DataFn, - options?: SubscribeOptions + options?: SubscribeOptions & { + /** + * Interrupts the pending promise and exists the generator. + */ + signal?: AbortSignal; + } ) => AsyncGenerator; export type DataFn = (schema: TSchema) => void; @@ -126,6 +135,8 @@ export type ResolveOptions = { */ fetchPolicy?: FetchOptions['fetchPolicy']; + retryPolicy?: FetchOptions['retryPolicy']; + onFetch?: (fetchPromise: Promise) => void; onSelect?: NonNullable; @@ -134,8 +145,30 @@ export type ResolveOptions = { }; export type SubscribeOptions = { + /** + * Defines how a query should fetch from the cache and network. + * + * - `default`: Serves the cached contents when it is fresh, and if they are + * stale within `staleWhileRevalidate` window, fetches in the background and + * updates the cache. Or simply fetches on cache stale or cache miss. During + * SWR, a successful fetch will not notify cache updates. New contents are + * served on next query. + * - `no-store`: Always fetch and does not update on response. + * GQty creates a temporary cache at query-level which immediately expires. + * - `no-cache`: Always fetch, updates on response. + * - `force-cache`: Serves the cached contents regardless of staleness. It + * fetches on cache miss or a stale cache, updates cache on response. + * - `only-if-cached`: Serves the cached contents regardless of staleness, + * throws a network error on cache miss. + * + * _It takes effort to make sure the above stays true for all supported + * frameworks, please consider sponsoring so we can dedicate even more time on + * this._ + */ fetchPolicy?: FetchOptions['fetchPolicy']; + retryPolicy?: FetchOptions['retryPolicy']; + /** * Intercept errors thrown from the underlying subscription client or query * fetcher. @@ -149,11 +182,6 @@ export type SubscribeOptions = { onSelect?: NonNullable; operationName?: string; - - /** - * Interrupts the pending promise and exists the generator. - */ - signal?: AbortSignal; }; export const createResolvers = ({ @@ -161,16 +189,19 @@ export const createResolvers = ({ debugger: debug, depthLimit, fetchOptions, - fetchOptions: { fetchPolicy: defaultFetchPolicy = 'default' }, + fetchOptions: { + fetchPolicy: defaultFetchPolicy = 'default', + retryPolicy: defaultRetryPoliy, + }, scalars, schema, + parentContext, }: CreateResolversOptions): Resolvers => { const createResolver = ({ - awaitsFetch = true, fetchPolicy = defaultFetchPolicy ?? 'default', operationName, - onFetch, onSelect, + retryPolicy = defaultRetryPoliy, }: ResolveOptions = {}) => { const selections = new Set(); const context = createContext({ @@ -180,6 +211,7 @@ export const createResolvers = ({ onSelect(selection, cache) { selections.add(selection); onSelect?.(selection, cache); + parentContext?.onSelect(selection, cache); }, scalars, schema, @@ -193,9 +225,10 @@ export const createResolvers = ({ // Mimic fetch error in the Chromium/WebKit monopoly throw new TypeError('Failed to fetch'); } - const fetchPromises = fetchSelections(selections, { + + return fetchSelections(selections, { debugger: debug, - fetchOptions, + fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, operationName, }) .then((results) => { @@ -212,12 +245,6 @@ export const createResolvers = ({ .finally(() => { selections.clear(); }); - - if (awaitsFetch) { - await fetchPromises; - } else { - onFetch?.(fetchPromises); - } }; return { accessor, context, resolve, selections }; @@ -227,6 +254,7 @@ export const createResolvers = ({ fetchPolicy = defaultFetchPolicy, onSelect, operationName, + retryPolicy = defaultRetryPoliy, }: SubscribeOptions = {}) => { const selections = new Set(); const context = createContext({ @@ -246,19 +274,25 @@ export const createResolvers = ({ onError, onNext, }: { - onError: (error: Error | GQtyError) => void; - onNext: (value: unknown) => void; - }) => { - const unsubscribeCache = context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - onNext - ); + onError?: (error: Error | GQtyError) => void; + onNext?: (value: unknown) => void; + } = {}) => { + const unsubscibers = new Set<() => void>(); + + if (onNext) { + const unsubscribe = context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + onNext + ); + + unsubscibers.add(unsubscribe); + } - const unsubscribeSelections = subscribeSelections( + const unsubscribe = subscribeSelections( selections, ({ data, error, extensions }) => { if (error) { - onError(error); + onError?.(error); // Discard data here because of how generators work if (data !== undefined) { @@ -278,14 +312,17 @@ export const createResolvers = ({ }, { debugger: debug, - fetchOptions, + fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, operationName, } ); + unsubscibers.add(unsubscribe); + return () => { - unsubscribeCache(); - unsubscribeSelections(); + for (const unsubscribe of unsubscibers) { + unsubscribe(); + } }; }; @@ -301,9 +338,18 @@ export const createResolvers = ({ fn(accessor) as unknown; - await resolve(); + const dataFn = () => + ((fn(accessor) as unknown) ?? pick(accessor, selections)) as any; + + const fetchPromise = resolve().then(dataFn); + + if (options?.awaitsFetch ?? true) { + return fetchPromise; + } + + options?.onFetch?.(fetchPromise); - return ((fn(accessor) as unknown) ?? pick(accessor, selections)) as any; + return dataFn(); }, /** * Initiates selected queries, mutations and subscriptions, then subscribes diff --git a/packages/gqty/src/Error/index.ts b/packages/gqty/src/Error/index.ts index 5cd7d4624..503686c7f 100644 --- a/packages/gqty/src/Error/index.ts +++ b/packages/gqty/src/Error/index.ts @@ -1,5 +1,10 @@ import type { GraphQLError } from 'graphql'; +export type GQtyErrorOptions = { + graphQLErrors?: GQtyError['graphQLErrors']; + otherError?: GQtyError['otherError']; +}; + export class GQtyError extends Error { readonly name = 'GQtyError'; @@ -8,15 +13,7 @@ export class GQtyError extends Error { constructor( message: string, - { - graphQLErrors, - otherError, - }: { - graphQLErrors?: GQtyError['graphQLErrors']; - otherError?: GQtyError['otherError']; - // TODO: Remove - caller?: Function; - } = {} + { graphQLErrors, otherError }: GQtyErrorOptions = {} ) { super(message); @@ -32,11 +29,7 @@ export class GQtyError extends Error { }; } - static create( - error: unknown, - // TODO: Remove caller from definitino - _caller?: Function - ): GQtyError { + static create(error: unknown): GQtyError { let newError: GQtyError; if (error instanceof GQtyError) { diff --git a/packages/gqty/src/Helpers/index.ts b/packages/gqty/src/Helpers/index.ts index 63835c0b7..832c77b19 100644 --- a/packages/gqty/src/Helpers/index.ts +++ b/packages/gqty/src/Helpers/index.ts @@ -3,4 +3,5 @@ export * from './deepCopy'; export * from './FrailMap'; export * from './getFields'; export * from './prepass'; +export * from './select'; export * from './selectFields'; diff --git a/packages/gqty/src/Helpers/select.ts b/packages/gqty/src/Helpers/select.ts new file mode 100644 index 000000000..ac924b88f --- /dev/null +++ b/packages/gqty/src/Helpers/select.ts @@ -0,0 +1,20 @@ +import type { CacheNode } from '../Cache'; + +/** + * Similar to _.get() but dots goes into arrays. + * + * JSONata, JSONPath and JMESPath does similar things but they're overkill here. + */ +export function select(node: CacheNode, path: string[]): CacheNode { + if (node == null || typeof node !== 'object' || path.length === 0) { + return node; + } + + if (Array.isArray(node)) { + return node.map((item) => select(item, path)); + } + + const [key, ...rest] = path; + + return select(node[key], rest); +} diff --git a/packages/gqty/src/Helpers/useMetaStateHack.ts b/packages/gqty/src/Helpers/useMetaStateHack.ts new file mode 100644 index 000000000..81ffe4d5a --- /dev/null +++ b/packages/gqty/src/Helpers/useMetaStateHack.ts @@ -0,0 +1,59 @@ +import type { Selection } from '../Selection'; + +export class RetryEvent extends Event { + constructor( + readonly promise: Promise, + readonly selections: Set, + readonly isLastTry = false + ) { + super('gqty$retry'); + } +} + +export const notifyRetry = ( + promise: Promise, + selections: Set, + isLastTry = false +) => { + globalThis.dispatchEvent?.(new RetryEvent(promise, selections, isLastTry)); +}; + +export const subscribeRetry = ( + callback: (event: RetryEvent) => void +) => { + // @ts-expect-error A hack for useMetaState() + globalThis.addEventListener?.('gqty$retry', callback); + + return () => { + // @ts-expect-error A hack for useMetaState() + globalThis.removeEventListener?.('gqty$retry', callback); + }; +}; + +export class Fetchevent extends Event { + constructor( + readonly promise: Promise, + readonly selections: Set + ) { + super('gqty$fetch'); + } +} + +export const notifyFetch = ( + promise: Promise, + selections: Set +) => { + globalThis.dispatchEvent?.(new Fetchevent(promise, selections)); +}; + +export const subscribeFetch = ( + callback: (event: Fetchevent) => void +) => { + // @ts-expect-error A hack for useMetaState() + globalThis.addEventListener?.('gqty$fetch', callback); + + return () => { + // @ts-expect-error A hack for useMetaState() + globalThis.removeEventListener?.('gqty$fetch', callback); + }; +}; diff --git a/packages/gqty/src/Utils/index.ts b/packages/gqty/src/Utils/index.ts index 2bd81a539..bef0c7d35 100644 --- a/packages/gqty/src/Utils/index.ts +++ b/packages/gqty/src/Utils/index.ts @@ -6,4 +6,5 @@ export function isEmptyObject(obj: object) { } export * from './object'; +export * from './pick'; export * from './promise'; diff --git a/packages/gqty/src/Utils/pick.ts b/packages/gqty/src/Utils/pick.ts index d3e5e68c0..fab9a7ae6 100644 --- a/packages/gqty/src/Utils/pick.ts +++ b/packages/gqty/src/Utils/pick.ts @@ -1,6 +1,7 @@ import set from 'just-safe-set'; import type { Selection } from '../Selection'; +/** Similiar to the `select()` helper, but for accessor proxies. */ export const pick = ( schema: Record, selections: Set diff --git a/packages/react/package.json b/packages/react/package.json index c3d210c70..66f3e0064 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -30,6 +30,7 @@ "analyze": "size-limit --why", "build": "bob-esbuild build", "dev": "bob-esbuild watch", + "lint": "eslint src/**/*.{ts,tsx}", "prepare": "bob-esbuild build", "postpublish": "gh-release", "size": "size-limit", @@ -38,8 +39,45 @@ "test": "jest", "test:watch": "jest --watch" }, + "eslintConfig": { + "env": { + "node": true + }, + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:eslint-plugin-you-dont-need-lodash-underscore/compatible" + ], + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "ignorePatterns": "**/*.js" + }, + "eslintIgnore": [ + "node_modules" + ], + "engines": { + "node": "^12.20.0 || >=14.13.0" + }, + "publishConfig": { + "directory": "dist" + }, + "size-limit": [ + { + "path": "dist/gqty-react.cjs.production.min.js", + "limit": "10 KB" + }, + { + "path": "dist/gqty-react.esm.js", + "limit": "10 KB" + } + ], "dependencies": { - "react-ssr-prepass": "^1.5.0" + "@react-hookz/web": "^22.0.0", + "p-debounce": "^4.0.0", + "react-ssr-prepass": "^1.5.0", + "use-sync-external-store": "^1.2.0" }, "devDependencies": { "@size-limit/preset-small-lib": "^8.2.4", @@ -51,8 +89,13 @@ "@types/node": "^18.15.5", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", + "@types/use-sync-external-store": "^0.0.3", + "@typescript-eslint/eslint-plugin": "^5.54.1", + "@typescript-eslint/parser": "^5.54.1", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.12", + "eslint": "^8.35.0", + "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0", "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", "jest": "^29.5.0", @@ -65,6 +108,7 @@ "size-limit": "^8.2.4", "test-utils": "workspace:^0.1.0", "tslib": "^2.5.0", + "type-fest": "^3.6.1", "typescript": "^4.9.5" }, "peerDependencies": { @@ -79,21 +123,5 @@ "react": { "optional": true } - }, - "engines": { - "node": "^12.20.0 || >=14.13.0" - }, - "publishConfig": { - "directory": "dist" - }, - "size-limit": [ - { - "path": "dist/gqty-react.cjs.production.min.js", - "limit": "10 KB" - }, - { - "path": "dist/gqty-react.esm.js", - "limit": "10 KB" - } - ] + } } diff --git a/packages/react/src/client.ts b/packages/react/src/client.ts index d4ad11036..e6ef45c29 100644 --- a/packages/react/src/client.ts +++ b/packages/react/src/client.ts @@ -1,3 +1,6 @@ +import { $meta, BaseGeneratedSchema, GQtyClient, RetryOptions } from 'gqty'; +import { getActivePromises } from 'gqty/Cache/query'; +import type { LegacyFetchPolicy } from './common'; import { createUseMetaState, UseMetaState } from './meta/useMetaState'; import { createUseMutation, UseMutation } from './mutation/useMutation'; import { createGraphqlHOC, GraphQLHOC } from './query/hoc'; @@ -7,6 +10,11 @@ import { LazyFetchPolicy, UseLazyQuery, } from './query/useLazyQuery'; +import { + createUsePaginatedQuery, + PaginatedQueryFetchPolicy, + UsePaginatedQuery, +} from './query/usePaginatedQuery'; import { createUseQuery, UseQuery } from './query/useQuery'; import { createUseRefetch, UseRefetch } from './query/useRefetch'; import { @@ -22,14 +30,6 @@ import { createUseSubscription, UseSubscription, } from './subscription/useSubscription'; - -import type { GQtyClient, RetryOptions } from 'gqty'; -import type { FetchPolicy } from './common'; -import { - createUsePaginatedQuery, - PaginatedQueryFetchPolicy, - UsePaginatedQuery, -} from './query/usePaginatedQuery'; import type { ReactClientOptionsWithDefaults } from './utils'; export interface ReactClientDefaults { @@ -102,7 +102,7 @@ export interface ReactClientDefaults { * * @default "cache-first" */ - transactionFetchPolicy?: FetchPolicy; + transactionFetchPolicy?: LegacyFetchPolicy; /** * Define default 'fetchPolicy' hooks behaviour * @@ -158,28 +158,25 @@ export interface CreateReactClientOptions { * Default behaviour values */ defaults?: ReactClientDefaults; + + /** Debounce timer for fetchSelections, defaults to 10. */ + fetchDebounce?: number; } -export interface ReactClient< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } -> { - useQuery: UseQuery; - useRefetch: UseRefetch; - useLazyQuery: UseLazyQuery; - useTransactionQuery: UseTransactionQuery; - usePaginatedQuery: UsePaginatedQuery; - useMutation: UseMutation; +export interface ReactClient { + useQuery: UseQuery; + useRefetch: UseRefetch; + useLazyQuery: UseLazyQuery; + useTransactionQuery: UseTransactionQuery; + usePaginatedQuery: UsePaginatedQuery; + useMutation: UseMutation; graphql: GraphQLHOC; state: { isLoading: boolean }; prepareReactRender: PrepareReactRender; useHydrateCache: UseHydrateCache; useMetaState: UseMetaState; - useSubscription: UseSubscription; - prepareQuery: PrepareQuery; + useSubscription: UseSubscription; + prepareQuery: PrepareQuery; } export function createReactClient< @@ -223,9 +220,10 @@ export function createReactClient< paginatedQuerySuspense, }; - const opts: ReactClientOptionsWithDefaults = Object.assign({}, optsCreate, { + const opts: ReactClientOptionsWithDefaults = { + ...optsCreate, defaults, - }); + }; const { prepareReactRender, useHydrateCache } = createSSRHelpers( client, @@ -245,13 +243,16 @@ export function createReactClient< graphql: createGraphqlHOC(client, opts), state: { get isLoading() { - return client.scheduler.resolving !== null; + const cache = $meta(client.schema.query)?.context.cache; + const promises = cache && getActivePromises(cache); + + return (promises?.length ?? 0) > 0; }, }, prepareReactRender, useHydrateCache, - useMetaState: createUseMetaState(client), - useSubscription: createUseSubscription(client, opts), + useMetaState: createUseMetaState(), + useSubscription: createUseSubscription(client), prepareQuery: createPrepareQuery(client, opts), }; } diff --git a/packages/react/src/common.ts b/packages/react/src/common.ts index 428e62381..90205a909 100644 --- a/packages/react/src/common.ts +++ b/packages/react/src/common.ts @@ -1,225 +1,65 @@ import { + $meta, castNotSkeleton, castNotSkeletonDeep, + FetchOptions, getArrayFields, getFields, GQtyError, prepass, - ResolveOptions, selectFields, Selection, } from 'gqty'; -import type { ProxyAccessor } from 'gqty/Cache'; -import type { EventHandler } from 'gqty/Events'; -import type { InterceptorManager } from 'gqty/Interceptor'; -import type { Scheduler } from 'gqty/Scheduler'; import * as React from 'react'; -export function useOnFirstMount(fn: () => void) { - const isFirstMount = React.useRef(true); - if (isFirstMount.current) { - isFirstMount.current = false; - fn(); - } -} - export const IS_BROWSER = typeof window !== 'undefined'; export const useIsomorphicLayoutEffect = IS_BROWSER ? React.useLayoutEffect : React.useEffect; -export function useForceUpdate({ doTimeout }: { doTimeout?: boolean } = {}) { - const [, update] = React.useReducer((num) => (num + 1) % 1_000_000, 0); - const wasCalled = React.useRef(false); - - React.useEffect(() => { - wasCalled.current = false; - }); - - return React.useMemo(() => { - return Object.assign( - () => { - if (wasCalled.current) return; - wasCalled.current = true; - if (doTimeout) { - setTimeout(update, 0); - } else { - Promise.resolve().then(update); - } - }, - { wasCalled } - ); - }, [update, wasCalled, doTimeout]); -} - -const InitSymbol: any = Symbol(); - -export function useLazyRef(initialValFunc: () => T) { - const ref: React.MutableRefObject = React.useRef(InitSymbol); - if (ref.current === InitSymbol) { - ref.current = initialValFunc(); - } - return ref; -} - -export const useUpdateEffect: typeof React.useEffect = (effect, deps) => { - const firstEffectCall = React.useRef(true); - - React.useEffect(() => { - if (firstEffectCall.current) { - firstEffectCall.current = false; - } else return effect(); - }, deps); -}; - -export function useIsRendering() { - const isRendering = React.useRef(true); - isRendering.current = true; - - useIsomorphicLayoutEffect(() => { - isRendering.current = false; - }); - - return isRendering; -} - -export function useIsMounted() { - const isMounted = React.useRef(true); - - useIsomorphicLayoutEffect(() => { - isMounted.current = true; - - return () => { - isMounted.current = false; - }; - }, []); - - return isMounted; -} - -export function useDeferDispatch void>( - dispatchFn: F -) { - const isMounted = useIsMounted(); - const isRendering = useIsRendering(); - - const pendingDispatch = React.useRef void> | false>(false); - - React.useEffect(() => { - if (pendingDispatch.current) { - for (const fn of pendingDispatch.current) { - fn(); - } - pendingDispatch.current = false; - } - }); - - return React.useCallback( - (...args: any[]) => { - if (isRendering.current) { - if (pendingDispatch.current) { - pendingDispatch.current.push(() => { - if (isMounted.current) dispatchFn(...args); - }); - } - pendingDispatch.current = [ - () => { - if (isMounted.current) dispatchFn(...args); - }, - ]; - } else if (isMounted.current) { - dispatchFn(...args); - } - }, - [dispatchFn, isRendering, pendingDispatch, isMounted] - ) as F; -} - -export type FetchPolicy = +export type LegacyFetchPolicy = | 'cache-and-network' | 'cache-first' | 'network-only' | 'no-cache'; -const noCacheResolveOptions: ResolveOptions = { - noCache: true, -}; - -const refetchResolveOptions: ResolveOptions = { - refetch: true, +export const legacyFetchPolicyMap: Record< + LegacyFetchPolicy, + FetchOptions['fetchPolicy'] +> = { + 'cache-and-network': 'cache-and-network', + 'cache-first': 'default', + 'network-only': 'no-cache', + 'no-cache': 'no-store', }; -const emptyResolveOptions: ResolveOptions = {}; - -export function fetchPolicyDefaultResolveOptions( - fetchPolicy: FetchPolicy | undefined -): ResolveOptions { - switch (fetchPolicy) { - case 'no-cache': { - return noCacheResolveOptions; - } - case 'cache-and-network': - case 'network-only': { - return refetchResolveOptions; - } - case 'cache-first': - default: { - return emptyResolveOptions; - } - } -} - -export type BuildSelections = (Selection | T)[]; +export const translateFetchPolicy = ( + fetchPolicy: LegacyFetchPolicy +): FetchOptions['fetchPolicy'] => + legacyFetchPolicyMap[fetchPolicy] ?? 'default'; -export function useBuildSelections( - argSelections: BuildSelections | null | undefined, - getProxySelection: (proxy: ProxyAccessor) => Selection | undefined, - caller: Function -) { - const buildSelections = React.useCallback( - (selectionsSet: Set) => { - selectionsSet.clear(); - - if (!argSelections) return; - - try { - for (const filterValue of argSelections) { - let selection: Selection | undefined; - if (filterValue instanceof Selection) { - selectionsSet.add(filterValue); - } else if ((selection = getProxySelection(filterValue))) { - selectionsSet.add(selection); - } - } - } catch (err) { - if (err instanceof Error && Error.captureStackTrace!) { - Error.captureStackTrace(err, caller); - } - - throw err; - } - }, - [argSelections] - ); +export type SelectionsOrProxy = (Selection | T)[]; - const [selections] = React.useState(() => { - const selectionsSet = new Set(); +export const useExtractedSelections = ( + input?: SelectionsOrProxy +): Set => { + const [selections] = React.useState(() => new Set()); - buildSelections(selectionsSet); + React.useEffect(() => { + selections.clear(); - return selectionsSet; - }); + if (input === undefined) return; - useUpdateEffect(() => { - buildSelections(selections); - }, [buildSelections, selections]); + for (const it of input) { + (it instanceof Selection ? it : $meta(it)?.selection) + ?.getLeafNodes() + .forEach((selection) => selections.add(selection)); + } + }, [input, input?.length]); - return { - selections, - hasSpecifiedSelections: argSelections != null, - }; -} + return selections; +}; export type List = Set | Array; @@ -267,244 +107,9 @@ export function isAnySelectionIncludedInMatrix( return false; } -function initSelectionsState() { - return new Set(); -} - -export function useSelectionsState() { - const [selections] = React.useState(initSelectionsState); - - return selections; -} - -export function useSubscribeCacheChanges({ - selections, - eventHandler, - onChange, - shouldSubscribe = true, -}: { - selections: Set; - eventHandler: EventHandler; - onChange: () => void; - shouldSubscribe?: boolean; -}) { - const onChangeCalled = React.useRef(false); - useIsomorphicLayoutEffect(() => { - onChangeCalled.current = false; - }); - - useIsomorphicLayoutEffect(() => { - if (!shouldSubscribe) return; - - let isMounted = true; - const unsubscribeFetch = eventHandler.onFetchSubscribe( - (fetchPromise, promiseSelections) => { - if ( - onChangeCalled.current || - !promiseSelections.some((selection) => selections.has(selection)) - ) { - return; - } - - onChangeCalled.current = true; - fetchPromise.then( - () => { - if (isMounted) Promise.resolve(fetchPromise).then(onChange); - }, - () => {} - ); - } - ); - - const unsubscribeCache = eventHandler.onCacheChangeSubscribe( - ({ selection }) => { - if (isMounted && !onChangeCalled.current && selections.has(selection)) { - onChangeCalled.current = true; - Promise.resolve().then(onChange); - } - } - ); - - return () => { - isMounted = false; - unsubscribeFetch(); - unsubscribeCache(); - }; - }, [shouldSubscribe, selections, eventHandler, onChange]); -} - -function hasEnabledStaleWhileRevalidate( - staleWhileRevalidate: boolean | object | number | string | null -) { - return typeof staleWhileRevalidate === 'boolean' - ? staleWhileRevalidate - : true; -} - -export function useInterceptSelections({ - interceptorManager: { - globalInterceptor, - createInterceptor, - removeInterceptor, - }, - staleWhileRevalidate = false, - scheduler, - eventHandler, - onError, - updateOnFetchPromise, -}: { - staleWhileRevalidate: boolean | object | number | string | null; - interceptorManager: InterceptorManager; - scheduler: Scheduler; - eventHandler: EventHandler; - onError: OnErrorHandler | undefined; - updateOnFetchPromise?: boolean; -}) { - const enabledStaleWhileRevalidate = - hasEnabledStaleWhileRevalidate(staleWhileRevalidate); - const cacheRefetchSelections = enabledStaleWhileRevalidate - ? new Set() - : null; - const fetchingPromise = React.useRef | null>(null); - const forceUpdate = useDeferDispatch(useForceUpdate()); - const interceptor = createInterceptor(); - const selections = useSelectionsState(); - - interceptor.selectionCacheRefetchListeners.add((selection) => { - if (cacheRefetchSelections) { - cacheRefetchSelections.add(selection); - } - - selections.add(selection); - }); - - useIsomorphicLayoutEffect(() => { - if (enabledStaleWhileRevalidate && cacheRefetchSelections?.size) { - for (const selection of cacheRefetchSelections) { - globalInterceptor.addSelectionCacheRefetch(selection); - } - } - }, [staleWhileRevalidate, enabledStaleWhileRevalidate]); - - interceptor.selectionAddListeners.add((selection) => { - selections.add(selection); - }); - - interceptor.selectionCacheListeners.add((selection) => { - selections.add(selection); - }); - - const deferredCall = React.useRef<(() => void) | null>(null); - - React.useEffect(() => { - if (deferredCall.current) { - deferredCall.current(); - deferredCall.current = null; - } - }); - - const isRendering = useIsRendering(); - - const unsubscribeResolve = scheduler.subscribeResolve( - (promise, selection) => { - if ( - fetchingPromise.current === null && - deferredCall.current === null && - selections.has(selection) - ) { - const newPromise = new Promise((resolve) => { - promise.then(({ error }) => { - fetchingPromise.current = null; - if (error && onError) onError(error); - - Promise.resolve().then(forceUpdate); - - resolve(); - }); - }); - - fetchingPromise.current = newPromise; - - if (updateOnFetchPromise) { - if (enabledStaleWhileRevalidate && isRendering.current) { - deferredCall.current = forceUpdate; - } else { - deferredCall.current = null; - forceUpdate(); - } - } - } - } - ); - - function unsubscribe() { - unsubscribeResolve(); - removeInterceptor(interceptor); - } - - Promise.resolve().then(unsubscribe); - - useSubscribeCacheChanges({ - selections, - eventHandler, - onChange() { - if (!fetchingPromise.current) forceUpdate(); - }, - }); - - return { - fetchingPromise, - selections, - unsubscribe, - }; -} - -export function useSuspensePromise(optsRef: { - current: { suspense?: boolean }; -}) { - let [promise, setPromiseState] = React.useState | void>(); - - const isMounted = useIsMounted(); - - const setPromise = React.useCallback< - (promise: Promise, inlineThrow?: boolean) => void - >( - (newPromise, inlineThrow) => { - if (promise || !optsRef.current.suspense || !isMounted.current) return; - - function clearPromise() { - if (isMounted.current) setPromiseState(); - } - - const promiseValue = (promise = newPromise.then( - clearPromise, - clearPromise - )); - - setPromiseState(promiseValue); - - if (inlineThrow) throw promiseValue; - }, - [setPromiseState, optsRef] - ); - - if (promise) throw promise; - - return setPromise; -} - export type OnErrorHandler = (error: GQtyError) => void; -export interface CoreHelpers { - prepass: typeof prepass; - getFields: typeof getFields; - getArrayFields: typeof getArrayFields; - selectFields: typeof selectFields; - castNotSkeleton: typeof castNotSkeleton; - castNotSkeletonDeep: typeof castNotSkeletonDeep; -} - -export const coreHelpers: CoreHelpers = { +export const coreHelpers = { prepass, getFields, getArrayFields, @@ -519,7 +124,7 @@ export function uniqBy( ): TNode[] { const uniqList = new Map(); for (const value of list) { - let key: unknown = cb ? cb(value) : value; + const key: unknown = cb ? cb(value) : value; if (uniqList.has(key)) continue; uniqList.set(key, value); @@ -543,31 +148,3 @@ export function sortBy( return orderedList; } - -export const useIsWindowVisible = ({ lazy }: { lazy?: boolean } = {}) => { - const [isVisible, setIsVisible] = React.useState(true); - const ref = React.useRef(true); - - React.useEffect(() => { - const onVisibilityChange = () => { - const isVisible = document.visibilityState === 'visible'; - ref.current = isVisible; - !lazy && setIsVisible(isVisible); - }; - - onVisibilityChange(); - - document.addEventListener('visibilitychange', onVisibilityChange); - - return () => { - document.removeEventListener('visibilitychange', onVisibilityChange); - }; - }, [setIsVisible, lazy]); - - return React.useMemo(() => { - return { - isVisible, - ref, - }; - }, [isVisible, ref]); -}; diff --git a/packages/react/src/index.tsx b/packages/react/src/index.tsx index 1ca183162..957ff320b 100644 --- a/packages/react/src/index.tsx +++ b/packages/react/src/index.tsx @@ -1,6 +1,6 @@ export * from './client'; export { coreHelpers, sortBy, uniqBy } from './common'; -export type { CoreHelpers, FetchPolicy, OnErrorHandler } from './common'; +export type { LegacyFetchPolicy, OnErrorHandler } from './common'; export type { MetaState, UseMetaState, diff --git a/packages/react/src/memoryStore.ts b/packages/react/src/memoryStore.ts new file mode 100644 index 000000000..32d6a07de --- /dev/null +++ b/packages/react/src/memoryStore.ts @@ -0,0 +1,23 @@ +/** + * An in-memory store for useSyncExternalStore. + */ +export const createMemoryStore = (initialValue: T) => { + let state = Object.freeze({ ...initialValue }); + const listeners = new Set<() => void>(); + + return { + add: (value: Partial) => { + state = Object.freeze({ ...state, ...value }); + listeners.forEach((listener) => listener()); + }, + get: () => state, + set: (value: T) => { + state = Object.freeze({ ...value }); + listeners.forEach((listener) => listener()); + }, + subscribe: (listener: () => void) => { + listeners.add(listener); + return () => listeners.delete(listener); + }, + }; +}; diff --git a/packages/react/src/meta/useMetaState.ts b/packages/react/src/meta/useMetaState.ts index d3ef21b05..2e7423aa1 100644 --- a/packages/react/src/meta/useMetaState.ts +++ b/packages/react/src/meta/useMetaState.ts @@ -1,17 +1,9 @@ -import type { GQtyClient, GQtyError, Selection } from 'gqty'; -import type { SchedulerPromiseValue } from 'gqty/Scheduler'; +import { useRerender } from '@react-hookz/web'; +import { GQtyError, Selection, useMetaStateHack } from 'gqty'; import * as React from 'react'; -import { - BuildSelections, - isAnySelectionIncluded, - isAnySelectionIncludedInMatrix, - isSelectionIncluded, - useBuildSelections, - useIsomorphicLayoutEffect, -} from '../common'; -import { areArraysEqual } from '../utils'; +import { SelectionsOrProxy, useExtractedSelections } from '../common'; -export interface UseMetaStateOptions { +export interface UseMetaStateOptions { onStartFetching?: () => void; onDoneFetching?: () => void; onError?: (data: { @@ -20,10 +12,10 @@ export interface UseMetaStateOptions { isLastTry: boolean; }) => void; onRetry?: (data: { - retryPromise: Promise; + retryPromise: Promise; selections: Set; }) => void; - filterSelections?: BuildSelections; + filterSelections?: SelectionsOrProxy; } export interface MetaState { @@ -32,206 +24,84 @@ export interface MetaState { } export interface UseMetaState { - (opts?: UseMetaStateOptions): MetaState; + (opts?: UseMetaStateOptions): MetaState; } -export function createUseMetaState(client: GQtyClient) { - const scheduler = client.scheduler; +export function createUseMetaState() { + const useMetaState: UseMetaState = ({ + onStartFetching, + onDoneFetching, + onError, + onRetry, + filterSelections, + } = {}) => { + const targetSelections = useExtractedSelections(filterSelections); - const { - accessorCache: { getProxySelection }, - } = client; + const [promises] = React.useState(() => new Set>()); + const [errors] = React.useState(() => new Set()); + const render = useRerender(); - const errorsMap = scheduler.errors.map; - - const defaultEmptyOpts = {}; - - const useMetaState: UseMetaState = function useMetaState( - opts: UseMetaStateOptions = defaultEmptyOpts - ) { - const { - hasSpecifiedSelections: hasFilterSelections, - selections: selectionsToFilter, - } = useBuildSelections( - opts.filterSelections, - getProxySelection, - useMetaState - ); - - const [promisesInFly] = React.useState(() => { - return new Set>(); - }); - - const isMountedRef = React.useRef(true); React.useEffect(() => { - return () => { - isMountedRef.current = false; - }; - }, []); - - const getState = React.useCallback( - (isMounted: { current: boolean } = isMountedRef): MetaState => { - let isFetching: boolean; - if (scheduler.pendingSelectionsGroups.size) { - if (hasFilterSelections) { - isFetching = isAnySelectionIncludedInMatrix( - selectionsToFilter, - scheduler.pendingSelectionsGroups - ); - } else { - isFetching = true; - } - - if (isFetching && scheduler.pendingSelectionsGroupsPromises.size) { - Promise.all( - scheduler.pendingSelectionsGroupsPromises.values() - ).finally(() => setStateIfChanged(isMounted)); + return useMetaStateHack.subscribeFetch(({ promise, selections }) => { + if (targetSelections.size > 0) { + for (const selection of targetSelections) { + if (selections.has(selection)) return; } - } else { - isFetching = false; } - let errors: GQtyError[] | undefined; - - if (hasFilterSelections) { - const errorsSet = new Set(); - - selectionsToFilter.forEach((selection) => { - const error = errorsMap.get(selection); + promises.add(promise); - if (error) errorsSet.add(error); - }); - - if (errorsSet.size) errors = Array.from(errorsSet); - } else if (errorsMap.size) { - errors = Array.from(new Set(errorsMap.values())); + if (promises.size === 0) { + errors.clear(); + onStartFetching?.(); + render(); } - return errors ? { isFetching, errors } : { isFetching }; - }, - [hasFilterSelections, selectionsToFilter] - ); - - const setStateIfChanged = React.useCallback( - function setStateIfChanged(isMounted: { current: boolean }) { - if (!isMounted.current) return; - - const prevState = stateRef.current; - - const newState = getState(isMounted); - - if ( - prevState.isFetching !== newState.isFetching || - !areArraysEqual(prevState.errors, newState.errors) - ) { - stateRef.current = newState; - setTimeout(() => { - if (isMounted.current) setState(newState); - }, 0); - } - }, - [] - ); - - const [state, setState] = React.useState(getState); - - const stateRef = React.useRef(state); - stateRef.current = state; - - const optsRef = React.useRef(opts); - optsRef.current = opts; - - useIsomorphicLayoutEffect(() => { - const isMounted = { current: true }; - - const unsubscribeIsFetching = scheduler.subscribeResolve( - (promise, selection) => { - if (promisesInFly.has(promise)) return; - - if ( - hasFilterSelections && - !isSelectionIncluded(selection, selectionsToFilter) - ) { - return; - } - - if (promisesInFly.size === 0) optsRef.current.onStartFetching?.(); - - promisesInFly.add(promise); - - setStateIfChanged(isMounted); - - promise.then(() => { - promisesInFly.delete(promise); - - if (promisesInFly.size === 0) optsRef.current.onDoneFetching?.(); - - setStateIfChanged(isMounted); + promise + .catch((error) => { + const newError = GQtyError.create(error); + errors.add(newError); + onError?.({ + newError, + selections: [...selections], + isLastTry: true, + }); + }) + .finally(() => { + promises.delete(promise); + + if (promises.size === 0) { + onDoneFetching?.(); + render(); + } }); - } - ); + }); + }, []); - const unsubscribeErrors = scheduler.errors.subscribeErrors((data) => { - switch (data.type) { - case 'new_error': { - if (hasFilterSelections) { - if (isAnySelectionIncluded(selectionsToFilter, data.selections)) - optsRef.current.onError?.({ - newError: data.newError, - selections: data.selections, - isLastTry: data.isLastTry, - }); - else return; - } else { - optsRef.current.onError?.({ - newError: data.newError, - selections: data.selections, - isLastTry: data.isLastTry, - }); - } - break; - } - case 'retry': { - if (hasFilterSelections) { - if (isAnySelectionIncluded(selectionsToFilter, data.selections)) { - optsRef.current.onRetry?.({ - retryPromise: data.retryPromise, - selections: data.selections, - }); - data.retryPromise.finally(() => { - setTimeout(() => { - setStateIfChanged(isMounted); - }, 0); - }); - } - } else { - optsRef.current.onRetry?.({ - retryPromise: data.retryPromise, - selections: data.selections, - }); - data.retryPromise.finally(() => { - setTimeout(() => { - setStateIfChanged(isMounted); - }, 0); - }); - } - break; - } - case 'errors_clean': { + React.useEffect(() => { + const onRetryEvent = ({ + promise, + selections, + }: useMetaStateHack.RetryEvent) => { + if (targetSelections.size > 0) { + for (const selection of targetSelections) { + if (selections.has(selection)) return; } } - setStateIfChanged(isMounted); - }); - - return () => { - isMounted.current = false; - unsubscribeIsFetching(); - unsubscribeErrors(); + onRetry?.({ + retryPromise: promise, + selections, + }); }; - }, [getState, hasFilterSelections, setState, optsRef, selectionsToFilter]); - return state; + return useMetaStateHack.subscribeRetry(onRetryEvent); + }, []); + + return Object.freeze({ + isFetching: promises.size > 0, + errors: [...errors], + }); }; return useMetaState; diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 89e124c37..bb41d0f33 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -1,11 +1,6 @@ -import { doRetry, GQtyClient, GQtyError, RetryOptions } from 'gqty'; +import { BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions } from 'gqty'; import * as React from 'react'; - -import { - OnErrorHandler, - useDeferDispatch, - useSuspensePromise, -} from '../common'; +import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseMutationOptions { @@ -37,6 +32,7 @@ export interface UseMutationOptions { * for example, files uploading * * @default false + * @deprecated */ nonSerializableVariables?: boolean; } @@ -47,230 +43,116 @@ export interface UseMutationState { isLoading: boolean; } -type UseMutationReducerAction = - | { type: 'success'; data: TData } - | { type: 'failure'; error: GQtyError } - | { type: 'loading' }; - -function UseMutationReducer( - state: UseMutationState, - action: UseMutationReducerAction -): UseMutationState { - switch (action.type) { - case 'loading': { - if (state.isLoading) return state; - return { - data: state.data, - isLoading: true, - }; - } - case 'success': { - return { - data: action.data, - isLoading: false, - }; - } - case 'failure': { - return { - data: state.data, - isLoading: false, - error: action.error, - }; - } - } -} - -function InitUseMutationReducer(): UseMutationState { - return { - data: undefined, - isLoading: false, - }; -} - -export interface UseMutation< - GeneratedSchema extends { - mutation: object; - } -> { - ( - mutationFn?: (mutation: GeneratedSchema['mutation'], args: TArgs) => TData, +export interface UseMutation { + ( + mutationFn?: ( + mutation: NonNullable, + args: TArgs + ) => TData, options?: UseMutationOptions ): readonly [ - ( - ...opts: undefined extends TArgs - ? [ - { - fn?: ( - mutation: GeneratedSchema['mutation'], - args: TArgs - ) => TData; - args?: TArgs; - }? - ] - : [ - { - fn?: ( - mutation: GeneratedSchema['mutation'], - args: TArgs - ) => TData; - args: TArgs; - } - ] - ) => Promise, + (options?: { fn?: typeof mutationFn; args: TArgs }) => Promise, UseMutationState ]; } -export function createUseMutation< - GeneratedSchema extends { - mutation: object; - query: object; - subscription: object; - } ->( - client: GQtyClient, +export const createUseMutation = ( + { resolve, refetch }: GQtyClient, { - defaults: { mutationSuspense: defaultSuspense }, + defaults: { mutationSuspense: defaultSuspense, retry: defaultRetry }, }: ReactClientOptionsWithDefaults -) { - const { resolved, refetch } = client; - const clientMutation: GeneratedSchema['mutation'] = client.mutation; - - const useMutation: UseMutation = function useMutation< - TData, - TArgs = undefined - >( - mutationFn?: (mutation: typeof clientMutation, args: TArgs) => TData, - opts: UseMutationOptions = {} - ): readonly [ - ({ - fn, - args, - }?: { - fn?: (mutation: GeneratedSchema['mutation'], args: TArgs) => TData; - args?: TArgs; - }) => Promise, - UseMutationState - ] { - const optsRef = React.useRef(opts); - optsRef.current = Object.assign({}, opts); - optsRef.current.suspense ??= defaultSuspense; - - const setSuspensePromise = useSuspensePromise(optsRef); +) => { + const useMutation: UseMutation = ( + mutationFn, + { + onCompleted, + onError, + retry = defaultRetry, + refetchQueries = [], + awaitRefetchQueries, + suspense = defaultSuspense, + noCache = false, + } = {} + ) => { + type TCallback = typeof mutationFn; + type TData = ReturnType>; + type TArgs = TCallback extends undefined + ? undefined + : Parameters>[1]; + + const [data, setData] = React.useState(); + const [error, setError] = React.useState(); + const [fetchPromise, setFetchPromise] = React.useState>(); + + if (suspense) { + if (fetchPromise) throw fetchPromise; + if (error) throw error; + } - const [state, dispatchReducer] = React.useReducer( - UseMutationReducer, - undefined, - InitUseMutationReducer - ) as [ - UseMutationState, - React.Dispatch> - ]; - const dispatch = useDeferDispatch(dispatchReducer); + const mutate = React.useCallback( + async ({ + fn = mutationFn, + args, + }: { fn?: TCallback; args?: TArgs } = {}) => { + if (!fn) { + throw new GQtyError(`Please specify a mutation function.`); + } - const fnRef = React.useRef(mutationFn); - fnRef.current = mutationFn; + setError(undefined); - const callRefetchQueries = - React.useCallback((): Promise | void => { - const { refetchQueries, awaitRefetchQueries } = optsRef.current; + const promise = resolve( + ({ mutation }) => { + if (mutation === undefined) { + throw new GQtyError(`Mutation is not defined in the schema.`); + } - if (refetchQueries?.length) { + return fn(mutation, args as TArgs); + }, + { + fetchPolicy: noCache ? 'no-store' : 'no-cache', + retryPolicy: retry, + } + ).then((data) => { const refetchPromise = Promise.all( refetchQueries.map((v) => refetch(v)) - ).catch((err) => { - dispatch({ - type: 'failure', - error: GQtyError.create(err, useMutation), - }); - }); - - if (awaitRefetchQueries) return refetchPromise; - } - }, [optsRef, dispatch]); - - const mutate = React.useCallback( - function mutateFn({ - fn: fnArg, - args, - }: { fn?: typeof mutationFn; args?: any } = {}) { - dispatch({ type: 'loading' }); - - const refFn = fnRef.current; + ); - const functionResolve = fnArg - ? () => fnArg(clientMutation, args) - : refFn - ? () => refFn(clientMutation, args) - : (() => { - throw new GQtyError( - 'You have to specify a function to be resolved', - { - caller: mutateFn, - } - ); - })(); + return awaitRefetchQueries ? refetchPromise.then(() => data) : data; + }) as Promise; - return resolved(functionResolve, { - noCache: optsRef.current.noCache, - refetch: true, - nonSerializableVariables: optsRef.current.nonSerializableVariables, - }).then( - async (data) => { - const refetchingQueries = callRefetchQueries(); - if (refetchingQueries) await refetchingQueries; + setFetchPromise(promise); - optsRef.current.onCompleted?.(data); - dispatch({ - type: 'success', - data, - }); + try { + const data = await promise; - return data; - }, - (err: unknown) => { - const error = GQtyError.create(err, useMutation); - optsRef.current.onError?.(error); - dispatch({ - type: 'failure', - error, - }); + const refetchPromise = Promise.all( + refetchQueries.map((v) => refetch(v)) + ); - throw error; + if (awaitRefetchQueries) { + await refetchPromise; } - ); - }, - [optsRef, fnRef, dispatch, callRefetchQueries] - ); - - const { retry = false } = opts; - - return React.useMemo(() => { - const fn: typeof mutate = retry - ? (...args: any[]) => { - const promise = mutate(...args).catch((err) => { - doRetry(retry, { - onRetry: () => { - const promise = mutate(...args).then(() => {}); - - setSuspensePromise(promise); - return promise; - }, - }); + onCompleted?.(data); + setData(data); - throw err; - }); + return data; + } catch (error) { + const theError = GQtyError.create(error); - setSuspensePromise(promise); + onError?.(theError); + setError(theError); - return promise; - } - : mutate; + throw theError; + } finally { + setFetchPromise(undefined); + } + }, + [mutationFn, noCache, retry, refetchQueries, awaitRefetchQueries] + ); - return [fn, state]; - }, [state, mutate, retry, optsRef, setSuspensePromise]); + return Object.freeze([mutate, { data, error, isLoading: !!fetchPromise }]); }; return useMutation; -} +}; diff --git a/packages/react/src/query/hoc.tsx b/packages/react/src/query/hoc.tsx index 363d49472..9c218885a 100644 --- a/packages/react/src/query/hoc.tsx +++ b/packages/react/src/query/hoc.tsx @@ -1,16 +1,13 @@ import type { GQtyClient } from 'gqty'; import * as React from 'react'; -import { OnErrorHandler, useInterceptSelections } from '../common'; +import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface GraphQLHOCOptions { - suspense?: - | boolean - | { - fallback: React.SuspenseProps['fallback']; - }; + suspense?: boolean | { fallback: React.SuspenseProps['fallback'] }; staleWhileRevalidate?: boolean; onError?: OnErrorHandler; + operationName?: string; } export interface GraphQLHOC { @@ -21,12 +18,9 @@ export interface GraphQLHOC { } export function createGraphqlHOC( - { scheduler, eventHandler, interceptorManager }: GQtyClient, + { createResolver, subscribeLegacySelections }: GQtyClient, { - defaults: { - suspense: defaultSuspense, - staleWhileRevalidate: defaultStaleWhileRevalidate, - }, + defaults: { suspense: defaultSuspense, retry }, }: ReactClientOptionsWithDefaults ) { const graphql: GraphQLHOC = function graphql

( @@ -34,52 +28,65 @@ export function createGraphqlHOC( displayName?: string; }, { - suspense = defaultSuspense, - staleWhileRevalidate = defaultStaleWhileRevalidate, onError, + operationName, + suspense = defaultSuspense, }: GraphQLHOCOptions = {} ) { const withGraphQL: { (props: P): React.ReactElement | null; displayName: string; } = function WithGraphQL(props): React.ReactElement | null { - const { fetchingPromise, unsubscribe } = useInterceptSelections({ - interceptorManager, - eventHandler, - scheduler, - staleWhileRevalidate, - onError, + const { + accessor: { query, mutation, subscription }, + context, + resolve, + } = createResolver({ + operationName, + retryPolicy: retry, }); + const unsubscribe = subscribeLegacySelections((selection, cache) => { + context.onSelect?.(selection, cache); + }); + const fetchPromise = React.useRef>(); - let returnValue: React.ReactElement | null = null; + let elm: React.ReactElement | null = null; try { - returnValue = component(props) ?? null; + elm = component({ ...props, query, mutation, subscription }); } finally { unsubscribe(); } - if (suspense && fetchingPromise.current) { - function Suspend() { - if (!fetchingPromise.current) return null; + if (!context.shouldFetch) { + return elm; + } + + fetchPromise.current = resolve(); - throw fetchingPromise.current; - } - const value = ( - <> - {returnValue} - - + if (onError) { + fetchPromise.current.catch(onError); + } + + if (suspense === true) { + throw fetchPromise.current; + } else if (typeof suspense === 'object') { + const Suspender: React.FunctionComponent = () => { + if (!fetchPromise.current) return null; + + throw fetchPromise.current; + }; + + return ( + + + {elm} + ); - if (typeof suspense === 'object') { - return React.createElement(React.Suspense, { - fallback: suspense.fallback, - children: value, - }); - } - return value; } - return returnValue; + + return elm; }; + withGraphQL.displayName = `GraphQLComponent(${ component?.displayName || component?.name || 'Anonymous' })${Date.now}`; diff --git a/packages/react/src/query/preparedQuery.ts b/packages/react/src/query/preparedQuery.ts index c38367793..ac7eb3b8a 100644 --- a/packages/react/src/query/preparedQuery.ts +++ b/packages/react/src/query/preparedQuery.ts @@ -1,195 +1,160 @@ -import type { GQtyClient, GQtyError } from 'gqty'; -import type { SchedulerPromiseValue } from 'gqty/Scheduler'; - -import { - useForceUpdate, - useIsMounted, - useIsomorphicLayoutEffect, -} from '../common'; +import { BaseGeneratedSchema, GQtyClient, GQtyError } from 'gqty'; +import { useSyncExternalStore } from 'use-sync-external-store'; + +import { createMemoryStore } from '../memoryStore'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UsePreparedQueryOptions { suspense?: boolean; } +export type TQueryFunction< + TSchema extends BaseGeneratedSchema, + TArgs = Record | undefined, + TData = unknown +> = (query: TSchema['query'], args: TArgs) => TData; + export interface PreparedQuery< - GeneratedSchema extends { - query: object; - }, - TFunction extends (query: GeneratedSchema['query'], args: any) => any + TSchema extends BaseGeneratedSchema, + TFunction extends TQueryFunction > { - preload( - ...[args]: undefined extends Parameters['1'] - ? [Parameters['1']?] - : [Parameters['1']] - ): Promise>; - refetch( - ...[args]: undefined extends Parameters['1'] - ? [Parameters['1']?] - : [Parameters['1']] - ): Promise>; - usePrepared(opts?: UsePreparedQueryOptions): { - data: ReturnType | undefined; - error?: GQtyError | undefined; - isLoading: boolean; - isRefetching: boolean; - called: boolean; - }; + preload: PreloadFn; + refetch: RefetchFn; + usePrepared: UsePreparedHook; callback: TFunction; } -export interface PrepareQuery< - GeneratedSchema extends { - query: object; - } -> { - any>( - fn: TFunction - ): PreparedQuery; +export type PreloadFn< + TSchema extends BaseGeneratedSchema, + TFunction extends TQueryFunction +> = (args?: Parameters[1]) => Promise>; + +export type RefetchFn< + TSchema extends BaseGeneratedSchema, + TFunction extends TQueryFunction +> = (args?: Parameters[1]) => Promise>; + +export type UsePreparedHook< + TSchema extends BaseGeneratedSchema, + TFunction extends TQueryFunction +> = ( + options?: UsePreparedQueryOptions +) => PreparedQueryState>; + +export type PreparedQueryState = { + data?: TData; + error?: GQtyError; + promise?: Promise; + isLoading: boolean; + isRefetching: boolean; + called: boolean; +}; + +export interface PrepareQuery { + >(fn: TFunction): PreparedQuery< + TSchema, + TFunction + >; } -export function createPrepareQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - { prefetch, query, refetch: refetchClient }: GQtyClient, +export function createPrepareQuery( + { prefetch, query, refetch: refetchClient }: GQtyClient, { defaults: { preparedSuspense: defaultSuspense }, }: ReactClientOptionsWithDefaults ) { - const emptyDataSymbol = Symbol(); - - const prepareQuery: PrepareQuery = function prepareQuery< - TFunction extends (query: GeneratedSchema['query'], args: any) => any - >(fn: TFunction): PreparedQuery { - const state: { - data: ReturnType | typeof emptyDataSymbol; - error?: GQtyError; - isLoading: boolean; - isRefetching: boolean; - called: boolean; - } = { - data: emptyDataSymbol, + const prepareQuery: PrepareQuery = (fn) => { + type TFunction = typeof fn; + type TData = ReturnType; + + const store = createMemoryStore>({ + called: false, isLoading: false, isRefetching: false, - called: false, - }; + }); + + const preload: PreloadFn = async (args) => { + store.set({ + data: undefined, + error: undefined, + promise: undefined, + called: true, + isLoading: true, + isRefetching: false, + }); + + const promise = prefetch((query) => fn(query, args)) as Promise; + + store.add({ promise }); - let promiseOnTheFly: - | (Promise> & { - schedulerPromise: Promise; - }) - | undefined; - - const subscribers = new Set<() => void>(); - - function updateSubs() { - setTimeout(() => { - if (subscribers.size) { - for (const cb of subscribers) cb(); - } - }, 0); - } - - async function refetch( - ...[args]: undefined extends Parameters['1'] - ? [Parameters['1']?] - : [Parameters['1']] - ): Promise> { - state.called = true; - state.isLoading = true; - state.isRefetching = true; - updateSubs(); try { - await refetchClient(() => - fn(query, args as Parameters['1']) - ); - - return await preload( - //@ts-ignore - args - ); - } finally { - state.isLoading = false; - state.isRefetching = false; + const data = await promise; + + store.add({ + data, + promise: undefined, + isLoading: false, + }); + + return data; + } catch (error) { + store.add({ + error: GQtyError.create(error), + promise: undefined, + isLoading: false, + }); + + throw error; } - } - - async function preload( - ...[args]: undefined extends Parameters['1'] - ? [Parameters['1']?] - : [Parameters['1']] - ): Promise> { - state.called = true; - state.isLoading = true; + }; + + const refetch: RefetchFn = async (args) => { + store.set({ + data: undefined, + error: undefined, + promise: undefined, + called: true, + isLoading: false, + isRefetching: true, + }); + + const promise = refetchClient(() => fn(query, args)) as Promise; + + store.add({ promise }); + try { - const result = prefetch( - (query) => - fn( - query, - args as Parameters['1'] - ) as ReturnType - ); - - if (result instanceof Promise) { - promiseOnTheFly = result; - updateSubs(); - result.schedulerPromise.then(({ error }) => { - if (error) { - state.error = error; - } else { - delete state.error; - } - }); - const data = (state.data = await result); - - if (promiseOnTheFly === result) promiseOnTheFly = undefined; - - return data; - } else { - delete state.error; - } - - return (state.data = result); - } finally { - state.isLoading = false; - updateSubs(); + const data = await promise; + + store.add({ + data, + promise: undefined, + isRefetching: false, + }); + + return data; + } catch (error) { + store.add({ + error: GQtyError.create(error), + promise: undefined, + isRefetching: false, + }); + + throw error; } - } + }; - function usePrepared({ + const usePrepared: UsePreparedHook = ({ suspense = defaultSuspense, - }: UsePreparedQueryOptions = {}) { - const isMounted = useIsMounted(); + } = {}) => { + const state = useSyncExternalStore(store.subscribe, store.get); - const forceUpdate = useForceUpdate(); - - if (promiseOnTheFly) { - const promise = promiseOnTheFly.then(() => { - if (isMounted.current) forceUpdate(); - }); - if (suspense) throw promise; + if (suspense) { + if (state.promise) throw state.promise; + if (state.error) throw state.error; } - useIsomorphicLayoutEffect(() => { - let isMounted = true; - const cb = () => isMounted && forceUpdate(); - subscribers.add(cb); - - return () => { - isMounted = false; - subscribers.delete(cb); - }; - }, [forceUpdate]); - - return { - ...state, - data: state.data !== emptyDataSymbol ? state.data : undefined, - }; - } + return state; + }; return { preload, diff --git a/packages/react/src/query/useLazyQuery.ts b/packages/react/src/query/useLazyQuery.ts index 19e4033e8..380e2b6f1 100644 --- a/packages/react/src/query/useLazyQuery.ts +++ b/packages/react/src/query/useLazyQuery.ts @@ -1,16 +1,13 @@ -import { doRetry, GQtyClient, GQtyError, RetryOptions } from 'gqty'; +import { BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions } from 'gqty'; import * as React from 'react'; - import { - FetchPolicy, - fetchPolicyDefaultResolveOptions, + LegacyFetchPolicy, OnErrorHandler, - useDeferDispatch, - useSuspensePromise, + translateFetchPolicy, } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; -export type LazyFetchPolicy = Exclude; +export type LazyFetchPolicy = Exclude; export interface UseLazyQueryOptions { onCompleted?: (data: TData) => void; @@ -25,13 +22,14 @@ export interface UseLazyQueryState { error?: GQtyError; isLoading: boolean; isCalled: boolean; + promise?: Promise; } type UseLazyQueryReducerAction = | { type: 'cache-found'; data: TData } | { type: 'success'; data: TData } | { type: 'failure'; error: GQtyError } - | { type: 'loading' }; + | { type: 'loading'; promise: Promise }; function UseLazyQueryReducer( state: UseLazyQueryState, @@ -44,6 +42,7 @@ function UseLazyQueryReducer( data: state.data, isLoading: true, isCalled: true, + promise: action.promise, }; } case 'success': { @@ -79,11 +78,7 @@ function InitUseLazyQueryReducer(): UseLazyQueryState { }; } -export interface UseLazyQuery< - GeneratedSchema extends { - query: object; - } -> { +export interface UseLazyQuery { ( queryFn: (query: GeneratedSchema['query'], args: TArgs) => TData, options?: UseLazyQueryOptions @@ -109,14 +104,8 @@ export interface UseLazyQuery< ]; } -export function createUseLazyQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - client: GQtyClient, +export function createUseLazyQuery( + client: GQtyClient, { defaults: { retry: defaultRetry, @@ -125,23 +114,26 @@ export function createUseLazyQuery< }, }: ReactClientOptionsWithDefaults ) { - const { resolved } = client; - const clientQuery: GeneratedSchema['query'] = client.query; - - const useLazyQuery: UseLazyQuery = function useLazyQuery< - TData, - TArgs = undefined - >( - fn: (query: typeof clientQuery, args: TArgs) => TData, - opts: UseLazyQueryOptions = {} - ): readonly [ - (callbackArgs?: { - fn?: (query: GeneratedSchema['query'], args: TArgs) => TData; + const useLazyQuery: UseLazyQuery = ( + fn, + { + onCompleted, + onError, + fetchPolicy: hookDefaultFetchPolicy = defaultFetchPolicy, + retry = defaultRetry, + suspense = defaultSuspense, + } = {} + ) => { + type TCallback = typeof fn; + type TArgs = Parameters[1]; + type TData = ReturnType; + type TCallbackArgs = { + fn?: TCallback; args?: TArgs; - }) => Promise, - UseLazyQueryState - ] { - const [state, dispatchReducer] = React.useReducer( + fetchPolicy?: LazyFetchPolicy; + }; + + const [state, dispatch] = React.useReducer( UseLazyQueryReducer, undefined, InitUseLazyQueryReducer @@ -149,115 +141,60 @@ export function createUseLazyQuery< UseLazyQueryState, React.Dispatch> ]; - const dispatch = useDeferDispatch(dispatchReducer); - - const stateRef = React.useRef(state); - stateRef.current = state; - - const fnRef = React.useRef(fn); - fnRef.current = fn; - - const optsRef = React.useRef(opts); - optsRef.current = Object.assign({}, opts); - optsRef.current.suspense ??= defaultSuspense; - - const setSuspensePromise = useSuspensePromise(optsRef); - - const queryFn = React.useCallback( - function callback( - callbackArgs: { - fn?: typeof fn; - args?: any; - fetchPolicy?: LazyFetchPolicy; - } = {} - ) { - dispatch({ type: 'loading' }); - - const { - fn: fnArg, - args, - fetchPolicy = optsRef.current.fetchPolicy ?? defaultFetchPolicy, - } = callbackArgs; - const refFn = fnRef.current; - - const functionResolve = fnArg - ? () => fnArg(clientQuery, args) - : refFn - ? () => refFn(clientQuery, args) - : (() => { - throw new GQtyError( - 'You have to specify a function to be resolved', - { caller: callback } - ); - })(); - - const resolveOptions = fetchPolicyDefaultResolveOptions(fetchPolicy); - - return resolved(functionResolve, { - ...resolveOptions, - onCacheData(data): boolean { - switch (fetchPolicy) { - case 'cache-and-network': { - dispatch({ type: 'cache-found', data }); - stateRef.current.data = data; - return true; - } - default: - return false; - } - }, - }).then( - (data) => { - optsRef.current.onCompleted?.(data); - dispatch({ type: 'success', data }); - return data; - }, - (err) => { - const error = GQtyError.create(err, useLazyQuery); - optsRef.current.onError?.(error); - dispatch({ type: 'failure', error }); - - throw error; - } - ); - }, - [fnRef, dispatch, optsRef] - ); - - const { retry = defaultRetry } = opts; + if (suspense) { + if (state.promise) throw state.promise; + if (state.error) throw state.error; + } return React.useMemo(() => { - const fn: typeof queryFn = retry - ? (...args) => { - const promise = queryFn(...args).catch((err) => { - doRetry(retry, { - onRetry: () => { - const promise = queryFn(...args).then(() => {}); + const fetchQuery = async ({ + fn: resolveFn = fn, + args, + fetchPolicy = hookDefaultFetchPolicy, + }: TCallbackArgs = {}) => { + let innerFetchPromise: Promise | undefined; + + try { + const fetchPromise = client + .resolve(({ query }) => resolveFn(query, args as TArgs), { + awaitsFetch: false, + fetchPolicy: translateFetchPolicy(fetchPolicy), + onFetch(promise) { + innerFetchPromise = promise as Promise; + }, + retryPolicy: retry, + }) + .then((data) => { + const typedData = data as TData; + + if (fetchPolicy === 'cache-and-network') { + dispatch({ type: 'cache-found', data: typedData }); + } - setSuspensePromise(promise); + return innerFetchPromise ?? typedData; + }); - return promise; - }, - }); + dispatch({ type: 'loading', promise: fetchPromise }); - throw err; - }); + const data = await fetchPromise; - setSuspensePromise(promise); + onCompleted?.(data); + dispatch({ type: 'success', data }); - return promise; - } - : (...args: any[]) => { - const promise = queryFn(...args); + return data; + } catch (error) { + const typedError = GQtyError.create(error); - setSuspensePromise(promise); + onError?.(typedError); + dispatch({ type: 'failure', error: typedError }); - return promise; - }; + throw error; + } + }; - return [fn, state]; - }, [state, queryFn, retry, optsRef, setSuspensePromise]); + return Object.freeze([fetchQuery, state]); + }, [fn, onCompleted, onError, retry]); }; return useLazyQuery; diff --git a/packages/react/src/query/usePaginatedQuery.ts b/packages/react/src/query/usePaginatedQuery.ts index 98c823e26..6e4fb4f74 100644 --- a/packages/react/src/query/usePaginatedQuery.ts +++ b/packages/react/src/query/usePaginatedQuery.ts @@ -1,20 +1,16 @@ -import type { GQtyClient } from 'gqty'; +import { BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions } from 'gqty'; import * as React from 'react'; - import { coreHelpers, - CoreHelpers, - FetchPolicy, + LegacyFetchPolicy, sortBy, + translateFetchPolicy, uniqBy, - useSelectionsState, - useSubscribeCacheChanges, - useSuspensePromise, } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export type PaginatedQueryFetchPolicy = Extract< - FetchPolicy, + LegacyFetchPolicy, 'cache-first' | 'cache-and-network' | 'network-only' >; @@ -41,9 +37,12 @@ export interface UsePaginatedQueryOptions { /** * Fetch Policy behavior * - * If using `cache-and-network` and `merge`, we recomend using the `uniqBy` helper included inside the `merge` parameters. + * If using `cache-and-network` and `merge`, we recomend using the `uniqBy` + * helper included inside the `merge` parameters. */ fetchPolicy?: PaginatedQueryFetchPolicy; + operationName?: string; + retry?: RetryOptions; /** * Skip initial query call * @@ -74,11 +73,13 @@ export interface UsePaginatedQueryData { * * If new args are not specified, the previous or initial args are used * - * In the second parameter you can override the `"fetchPolicy"`, for example you can set it to `"network-only"` to do a refetch. + * In the second parameter you can override the `"fetchPolicy"`, for example + * you can set it to `"network-only"` to do a refetch. */ fetchMore: ( /** - * Optional new args. It can receive a function that receives the previous data/args and returns the new args, or the new args directly + * Optional new args. It can receive a function that receives the previous + * data/args and returns the new args, or the new args directly * * If not specified or `undefined`, the previous or initial args are used. */ @@ -91,75 +92,6 @@ export interface UsePaginatedQueryData { */ fetchPolicy?: PaginatedQueryFetchPolicy ) => Promise | TData; - /** - * Has the function been called - */ - called: boolean; -} - -interface UsePaginatedQueryState { - data: TData | undefined; - args: TArgs; - isLoading: boolean; - called: boolean; -} - -type UsePaginatedQueryReducerAction = - | { - type: 'loading'; - } - | { - type: 'cache_found'; - payload: TData; - } - | { - type: 'data'; - payload: TData; - }; - -function UsePaginatedQueryReducer( - state: UsePaginatedQueryState, - action: UsePaginatedQueryReducerAction -): UsePaginatedQueryState { - switch (action.type) { - case 'loading': { - if (state.isLoading) return state; - return { - ...state, - isLoading: true, - called: true, - }; - } - case 'cache_found': { - return { - data: action.payload, - args: state.args, - isLoading: true, - called: true, - }; - } - case 'data': { - return { - data: action.payload, - args: state.args, - isLoading: false, - called: true, - }; - } - default: - return state; - } -} - -function InitUsePaginatedQueryReducer( - opts: UsePaginatedQueryOptions -): UsePaginatedQueryState { - return { - data: undefined, - args: opts.initialArgs, - isLoading: !opts.skip, - called: false, - }; } export interface FetchMoreCallbackArgs { @@ -167,202 +99,157 @@ export interface FetchMoreCallbackArgs { existingArgs: TArgs; } -export interface UsePaginatedQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } -> { +export interface UsePaginatedQuery { | string | number | null>( fn: ( - query: GeneratedSchema['query'], + query: TSchema['query'], args: TArgs, - helpers: CoreHelpers + helpers: typeof coreHelpers ) => TData, options: UsePaginatedQueryOptions ): UsePaginatedQueryData; } -export function createUsePaginatedQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - { - query: clientQuery, - inlineResolved, - eventHandler, - }: GQtyClient, - { - defaults: { - paginatedQueryFetchPolicy: defaultFetchPolicy, - paginatedQuerySuspense: defaultSuspense, - }, - }: ReactClientOptionsWithDefaults -): UsePaginatedQuery { - function usePaginatedQuery< - TData, - TArgs extends Record | string | number | null - >( - fn: (query: typeof clientQuery, args: TArgs, helpers: CoreHelpers) => TData, - opts: UsePaginatedQueryOptions - ): UsePaginatedQueryData { - const fnRef = React.useRef(fn); - fnRef.current = fn; - - const optsRef = React.useRef(opts); - optsRef.current = Object.assign({}, opts); - - optsRef.current.fetchPolicy ??= defaultFetchPolicy; - optsRef.current.suspense ??= defaultSuspense; - - const [state, dispatch] = React.useReducer( - UsePaginatedQueryReducer, - opts, - InitUsePaginatedQueryReducer - ) as [ - UsePaginatedQueryState, - React.Dispatch> - ]; - - const selections = useSelectionsState(); - - const stateRef = React.useRef(state); - stateRef.current = state; +export const createUsePaginatedQuery = + ( + { createResolver }: GQtyClient, + { + defaults: { + paginatedQueryFetchPolicy: defaultFetchPolicy, + paginatedQuerySuspense: defaultSuspense, + }, + }: ReactClientOptionsWithDefaults + ): UsePaginatedQuery => + ( + fn, + { + initialArgs, + fetchPolicy: hookFetchPolicy = defaultFetchPolicy, + merge, + retry, + skip = false, + suspense = defaultSuspense, + operationName, + } + ) => { + type TCallback = typeof fn; + type TArgs = Parameters[1]; + type TData = ReturnType; + + const { + accessor: { query }, + context, + resolve, + selections, + } = React.useMemo( + () => + createResolver({ + fetchPolicy: translateFetchPolicy(hookFetchPolicy), + operationName, + retryPolicy: retry, + }), + [hookFetchPolicy, operationName, retry] + ); - const setSuspensePromise = useSuspensePromise(optsRef); + const [fetchPromise, setFetchPromise] = React.useState>(); + const [error, setError] = React.useState(); + const [data, setData] = React.useState(); + const [args, setArgs] = React.useState(initialArgs); - const isMerging = React.useRef(0); + if (suspense) { + if (fetchPromise) throw fetchPromise; + if (error) throw error; + } const fetchMore = React.useCallback( - ( + async ( newArgs?: | ((data: FetchMoreCallbackArgs) => TArgs) | TArgs, - fetchPolicy: PaginatedQueryFetchPolicy = optsRef.current.fetchPolicy || - defaultFetchPolicy + fetchPolicy: PaginatedQueryFetchPolicy = hookFetchPolicy ) => { - function mergeData(incomingData: TData) { - let mergeResult: TData | void | undefined; + setError(undefined); + setFetchPromise(undefined); + selections.clear(); - if (optsRef.current.merge) { - const params: UsePaginatedQueryMergeParams = { - data: { - incoming: incomingData, - existing: stateRef.current.data, - }, - uniqBy, - sortBy, - }; - try { - ++isMerging.current; - mergeResult = optsRef.current.merge(params); - } finally { - Promise.resolve().then(() => --isMerging.current); - } + { + const data = dataFn(); + + if (!context.shouldFetch) { + const mergedData = mergeData(data); + setData(mergedData); + return mergedData; } - return mergeResult === undefined ? incomingData : mergeResult; + if (fetchPolicy === 'cache-and-network' && context.hasCacheHit) { + setData(mergeData(data)); + } } - let args: TArgs = - newArgs !== undefined - ? typeof newArgs === 'function' - ? (stateRef.current.args = ( - newArgs as ( - data: FetchMoreCallbackArgs - ) => TArgs - )({ - existingData: stateRef.current.data, - existingArgs: stateRef.current.args, - })) - : (stateRef.current.args = newArgs) - : stateRef.current.args; + const promise = resolve().then(dataFn); - const resolvedFn = () => fnRef.current(clientQuery, args, coreHelpers); + setFetchPromise(promise); - const refetch = fetchPolicy !== 'cache-first'; + try { + const currentData = mergeData(await promise); - let incomingData = inlineResolved(resolvedFn, { - onSelection(selection) { - selections.add(selection); - }, - refetch, - onCacheData(data) { - if (fetchPolicy === 'cache-and-network') { - const payload = mergeData(data); + setData(currentData); - stateRef.current.data = payload; - dispatch({ - type: 'cache_found', - payload, - }); - } - }, - }); + return currentData; + } catch (error) { + const theError = GQtyError.create(error); - if (incomingData instanceof Promise) { - dispatch({ - type: 'loading', - }); + setError(theError); - return incomingData.then((incomingData) => { - const payload = mergeData(incomingData); - stateRef.current.data = payload; - - dispatch({ - type: 'data', - payload, - }); - return payload; - }); + throw theError; } - const payload = mergeData(incomingData); - stateRef.current.data = payload; + function dataFn() { + const newArgsValue = + typeof newArgs === 'function' + ? newArgs({ existingData: data, existingArgs: args }) + : newArgs; - dispatch({ - type: 'data', - payload, - }); - return payload; - }, - [stateRef, fnRef, dispatch, optsRef, setSuspensePromise] - ); + setArgs(newArgsValue); - useSubscribeCacheChanges({ - selections, - eventHandler, - onChange() { - if (isMerging.current) return; + return fn(query, newArgsValue, coreHelpers); + } - fetchMore(undefined, 'cache-first'); + function mergeData(incomingData: TData) { + return ( + merge?.({ + data: { + incoming: incomingData, + existing: data, + }, + uniqBy, + sortBy, + }) ?? incomingData + ); + } }, - }); - - if (!state.called && !opts.skip) { - state.called = true; - const result = fetchMore(); + [context, fn, hookFetchPolicy, data, args] + ); - if (result instanceof Promise) { - const catchedPromise = result.catch(console.error); - if (state.data === undefined) { - Promise.resolve().then(() => { - setSuspensePromise(catchedPromise); - }); + // Invoke fetchMore once with initialArgs + React.useEffect(() => { + if (!skip) fetchMore(initialArgs); + }, [skip, fetchMore, initialArgs]); + + // Subscribe to cache change + React.useEffect(() => { + return context.cache.subscribe( + [...selections].map((s) => s.cacheKeys.join('.')), + () => { + setData(fn(query, args, coreHelpers)); } - } - } + ); + }, [fn, args, selections.size]); - return React.useMemo(() => { - return Object.assign(state, { - fetchMore, - }); - }, [state, fetchMore]); - } + // TODO: subscribe to cache changes (cache-first = render) - return usePaginatedQuery; -} + return React.useMemo( + () => ({ data, args, fetchMore, isLoading: fetchPromise === undefined }), + [data, args, fetchMore, fetchPromise] + ); + }; diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index a7ebaa74c..c0e3bdbcf 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -1,13 +1,14 @@ -import { GQtyClient, GQtyError, prepass, SelectionType } from 'gqty'; -import * as React from 'react'; - +import { useRerender } from '@react-hookz/web'; import { - IS_BROWSER, - OnErrorHandler, - useForceUpdate, - useInterceptSelections, - useIsomorphicLayoutEffect, -} from '../common'; + BaseGeneratedSchema, + GQtyClient, + GQtyError, + prepass, + RetryOptions, +} from 'gqty'; +import { useCallback, useEffect, useMemo, useState } from 'react'; +import type { OnErrorHandler } from '../common'; +import { useWindowFocusEffect } from '../useWindowFocusEffect'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseQueryPrepareHelpers< @@ -18,14 +19,12 @@ export interface UseQueryPrepareHelpers< readonly prepass: typeof prepass; readonly query: GeneratedSchema['query']; } -export interface UseQueryOptions< - GeneratedSchema extends { - query: object; - } = never -> { +export interface UseQueryOptions { onError?: OnErrorHandler; - prepare?: (helpers: UseQueryPrepareHelpers) => void; + operationName?: string; + prepare?: (helpers: UseQueryPrepareHelpers) => void; refetchOnWindowVisible?: boolean; + retry?: RetryOptions; staleWhileRevalidate?: boolean | object | number | string | null; suspense?: boolean; } @@ -55,138 +54,118 @@ export interface UseQuery { ): UseQueryReturnValue; } -export function createUseQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - { - scheduler, - eventHandler, - interceptorManager, - query, - buildAndFetchSelections, - }: GQtyClient, - { - defaults: { - suspense: defaultSuspense, - staleWhileRevalidate: defaultStaleWhileRevalidate, - }, - }: ReactClientOptionsWithDefaults -) { - const errorsMap = scheduler.errors.map; - const getLastError = () => Array.from(errorsMap.values()).pop(); - const prepareHelpers: UseQueryPrepareHelpers = { - prepass, - query, - }; - - const useQuery: UseQuery = function useQuery({ +export const createUseQuery = + ( + client: GQtyClient, + { + defaults: { + suspense: defaultSuspense, + staleWhileRevalidate: defaultStaleWhileRevalidate, + retry: defaultRetry, + }, + }: ReactClientOptionsWithDefaults + ): UseQuery => + ({ onError, + operationName, prepare, refetchOnWindowVisible = false, + retry = defaultRetry, staleWhileRevalidate = defaultStaleWhileRevalidate, suspense = defaultSuspense, - } = {}) { - const [$state] = React.useState( - (): Writeable => ({ - get isLoading() { - return fetchingPromise.current !== null; - }, - error: getLastError(), - }) + } = {}) => { + const { accessor, context, resolve, selections } = useMemo( + () => client.createResolver({ operationName, retryPolicy: retry }), + [operationName, retry] ); - const { fetchingPromise, selections } = useInterceptSelections({ - staleWhileRevalidate, - eventHandler, - interceptorManager, - scheduler, - onError, - updateOnFetchPromise: true, - }); + const [error, setError] = useState(); + const [fetchPromise, setFetchPromise] = useState>(); + + if (suspense) { + if (error) throw error; + if (fetchPromise) throw fetchPromise; + } + + // Reset these, or createResolver() each time and deal with the new resolve. + context.shouldFetch = false; + context.hasCacheHit = false; + context.hasCacheMiss = false; if (prepare) { - try { - prepare(prepareHelpers); - } catch (err) { - if (err instanceof Error && Error.captureStackTrace!) { - Error.captureStackTrace(err, useQuery); - } - throw err; + // TODO: See if `Error.captureStackTrace(error, useQuery);` is needed + prepare({ prepass, query: accessor.query }); + + // Assuming the fetch always fulfills selections in prepare(), otherwise + // this may cause an infinite render loop. + if (suspense && context.shouldFetch) { + throw resolve(); } } - useIsomorphicLayoutEffect( - () => - scheduler.errors.subscribeErrors((ev) => { - switch (ev.type) { - case 'errors_clean': - case 'new_error': { - $state.error = getLastError(); - } - } - }), - [] - ); + const fetchQuery = useCallback(async () => { + setError(undefined); - if (fetchingPromise.current && suspense) { - throw fetchingPromise.current; - } + const fetchPromise = resolve(); + setFetchPromise(fetchPromise); + + try { + await fetchPromise; + } catch (error) { + const theError = GQtyError.create(error); - const forceUpdate = useForceUpdate(); - const refetch = async ({ force = false }: { force?: boolean } = {}) => { - if (!force && fetchingPromise.current) { - return fetchingPromise.current; + onError?.(theError); + + if (suspense) throw theError; + + setError(theError); + } finally { + setFetchPromise(undefined); } + }, [onError, resolve]); + + { + // Invoke it on client side automatically. + useEffect(() => { + fetchQuery(); + }, [fetchQuery]); + } - const promise = buildAndFetchSelections( - Array.from(selections).filter((v) => v.type === SelectionType.Query), - 'query' + // staleWhileRevalidate + useEffect(() => { + $refetch(); + }, [staleWhileRevalidate]); + + { + const render = useRerender(); + + // A rerender should be enough to trigger a soft check, fetch will + // happen if any of the accessed cache value is stale. + useWindowFocusEffect(render, { enabled: refetchOnWindowVisible }); + + // Re-renders on cache changes from others + useEffect( + () => + context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + render + ), + [selections, selections.size] ); - fetchingPromise.current = promise; - forceUpdate(); + } - await promise; + const $refetch = useCallback(() => { + const prevShouldFetch = context.shouldFetch; + context.shouldFetch = true; + const promise = fetchQuery(); + context.shouldFetch = prevShouldFetch; - if (fetchingPromise.current === promise) { - fetchingPromise.current = null; - forceUpdate(); - } + return promise; + }, [fetchQuery]); + + const $state = { + isLoading: fetchPromise !== undefined, + error, }; - useIsomorphicLayoutEffect(() => { - if (!refetchOnWindowVisible || !IS_BROWSER) return; - - const refetches = () => refetch(); - - window.addEventListener('visibilitychange', refetches); - window.addEventListener('focus', refetches); - - return () => { - window.removeEventListener('visibilitychange', refetches); - window.removeEventListener('focus', refetches); - }; - }, [refetchOnWindowVisible]); - - return React.useMemo(() => { - return new Proxy>( - { - $state, - $refetch: refetch, - }, - { - set(_, key, value) { - return Reflect.set(query, key, value); - }, - get(target, key) { - return Reflect.get(target, key) ?? Reflect.get(query, key); - }, - } - ); - }, [$state]); + return { ...accessor, $refetch, $state }; }; - - return useQuery; -} diff --git a/packages/react/src/query/useRefetch.ts b/packages/react/src/query/useRefetch.ts index 83c43d861..d32cfe9aa 100644 --- a/packages/react/src/query/useRefetch.ts +++ b/packages/react/src/query/useRefetch.ts @@ -1,12 +1,11 @@ import { - doRetry, + BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions, - SelectionType, + Selection, } from 'gqty'; import * as React from 'react'; -import { useIsomorphicLayoutEffect, useSelectionsState } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; interface UseRefetchState { @@ -14,159 +13,97 @@ interface UseRefetchState { error?: GQtyError; } -type UseRefetchReducerAction = - | { type: 'loading' } - | { type: 'done' } - | { type: 'error'; error: GQtyError }; - -function UseRefetchReducer( - state: UseRefetchState, - action: UseRefetchReducerAction -): UseRefetchState { - switch (action.type) { - case 'loading': { - if (state.isLoading) return state; - - return { isLoading: true }; - } - case 'done': { - return { isLoading: false }; - } - case 'error': { - return { isLoading: false, error: action.error }; - } - } -} - export interface UseRefetchOptions { notifyOnNetworkStatusChange?: boolean; - startWatching?: boolean; + operationName?: string; retry?: RetryOptions; + startWatching?: boolean; + suspense?: boolean; } -export interface UseRefetch { +export interface UseRefetch { (refetchOptions?: UseRefetchOptions): (( - refetchArg?: T | (() => T) + refetchArg?: T | ((query: TSchema['query']) => T) ) => Promise) & UseRefetchState; } -export function createUseRefetch( - client: GQtyClient, +export const createUseRefetch = ( + client: GQtyClient, { defaults: { retry: defaultRetry } }: ReactClientOptionsWithDefaults -) { - const { interceptorManager, buildAndFetchSelections, refetch } = client; - - const useRefetch: UseRefetch = function useRefetch( - refetchOptions - ): ((refetchArg?: T | (() => T)) => Promise) & - UseRefetchState { - const [options] = React.useState(() => ({ - notifyOnNetworkStatusChange: true, - startWatching: true, - retry: defaultRetry, - ...refetchOptions, - })); - - const [innerState] = React.useState(() => ({ - watching: options.startWatching, - startWatching() { - this.watching = true; - }, - stopWatching() { - this.watching = false; - }, - })); +) => { + const useRefetch: UseRefetch = ({ + notifyOnNetworkStatusChange = true, + operationName, + // startWatching = true, // With scoped query, this is no longer necessary. + retry = defaultRetry, + suspense = false, + } = {}) => { + const [fetchPromise, setFetchPromise] = React.useState>(); + const [error, setError] = React.useState(); + + if (suspense) { + if (fetchPromise) throw fetchPromise; + if (error) throw error; + } - const selections = useSelectionsState(); - const [state, dispatch] = React.useReducer( - UseRefetchReducer, - undefined, - () => ({ isLoading: false }) + const [selections] = React.useState(() => new Set()); + + // All selections from this component down the rendering tree, this almost + // 100% guaranteed to be more than necessary as a refetch. This is necessary + // as long as useRefetch() exists as a separate hook, and accepts no + // parameters as one of the overloads. React provides no way to identify a + // component and potentially gain access to the SchemaContext from other + // query hooks. + React.useEffect( + () => + client.subscribeLegacySelections((selection) => { + selections.add(selection); + }), + [] ); - const interceptor = interceptorManager.createInterceptor(); - - setTimeout(() => { - interceptorManager.removeInterceptor(interceptor); - }, 0); - - useIsomorphicLayoutEffect(() => { - interceptorManager.removeInterceptor(interceptor); - }); - - interceptor.selectionAddListeners.add((selection) => { - if (!innerState.watching) return; - - selections.add(selection); - }); - - interceptor.selectionCacheListeners.add((selection) => { - if (!innerState.watching) return; - - selections.add(selection); - }); - - const refetchCallback = React.useCallback( - async ( - proxyOrFn?: T | (() => T) + const refetch = React.useCallback( + async ( + fnArg?: T | ((query: TSchema['query']) => T) ): Promise => { - if (options.notifyOnNetworkStatusChange) { - dispatch({ type: 'loading' }); - } + const promise = (() => { + if (fnArg) return client.refetch(fnArg); - try { - const refetchData = proxyOrFn - ? await refetch(proxyOrFn) - : await (async () => { - const selectionsToRefetch = Array.from(selections).filter( - (v) => v.type === SelectionType.Query - ); - if ( - process.env.NODE_ENV !== 'production' && - selectionsToRefetch.length === 0 - ) { - console.warn('Warning! No selections available to refetch!'); - } - - return buildAndFetchSelections(selectionsToRefetch, 'query'); - })(); + const { context, resolve } = client.createResolver({ + retryPolicy: retry, + operationName, + }); - dispatch({ type: 'done' }); + selections.forEach((selection) => { + context.onSelect?.(selection); + }); - return refetchData; - } catch (err) { - const error = GQtyError.create(err, useRefetch); + return resolve() as Promise; + })(); - dispatch({ type: 'error', error }); + setFetchPromise(promise); - throw error; + try { + return (await promise) as T; + } catch (error) { + const theError = GQtyError.create(error); + setError(theError); + throw theError; } }, - [selections, dispatch, options] + [notifyOnNetworkStatusChange, operationName, retry] ); - const { retry } = options; - - return React.useMemo(() => { - const fn = refetchCallback.bind(undefined); - const returnValue: ReturnType = Object.assign( - retry - ? async (...args: any[]): Promise => { - try { - return await fn(...args); - } catch (err) { - doRetry(retry, { onRetry: () => fn(...args) }); - throw err; - } - } - : fn, - state - ); - - return returnValue; - }, [refetchCallback, state, retry]); + return React.useMemo( + () => + Object.assign(refetch, { + isLoading: fetchPromise !== undefined, + error, + }), + [] + ); }; return useRefetch; -} +}; diff --git a/packages/react/src/query/useTransactionQuery.ts b/packages/react/src/query/useTransactionQuery.ts index f5c4f8152..dd6b712c8 100644 --- a/packages/react/src/query/useTransactionQuery.ts +++ b/packages/react/src/query/useTransactionQuery.ts @@ -1,40 +1,38 @@ import { - doRetry, + useDeepCompareEffect, + useDocumentVisibility, + useIntervalEffect, +} from '@react-hookz/web'; +import { + $meta, + BaseGeneratedSchema, GQtyClient, GQtyError, - ResolveOptions, RetryOptions, + Selection, } from 'gqty'; import * as React from 'react'; import { - FetchPolicy, - fetchPolicyDefaultResolveOptions, + LegacyFetchPolicy, OnErrorHandler, - useDeferDispatch, - useIsWindowVisible, - useSelectionsState, - useSubscribeCacheChanges, - useSuspensePromise, - useUpdateEffect, + translateFetchPolicy, } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseTransactionQueryState { data: TData | undefined; error?: GQtyError; - isLoading: boolean; isCalled: boolean; + promise?: Promise; } type UseTransactionQueryReducerAction = | { type: 'cache-found'; data: TData } | { type: 'success'; data: TData } | { type: 'failure'; error: GQtyError } - | { type: 'loading' } - | { - type: 'done'; - }; + | { type: 'loading'; promise: Promise } + | { type: 'skipped' }; function UseTransactionQueryReducer( state: UseTransactionQueryState, @@ -42,63 +40,56 @@ function UseTransactionQueryReducer( ): UseTransactionQueryState { switch (action.type) { case 'loading': { - if (state.isLoading) return { ...state }; + if (state.promise === action.promise) return state; + return { data: state.data, - isLoading: true, isCalled: true, + promise: action.promise, }; } case 'success': { return { data: action.data, - isLoading: false, isCalled: true, }; } case 'cache-found': { return { data: action.data, - isLoading: state.isLoading, isCalled: true, + promise: state.promise, }; } case 'failure': { return { data: state.data, - isLoading: false, error: action.error, isCalled: true, }; } - case 'done': { - if (state.isLoading) { - return { - data: state.data, - isLoading: false, - isCalled: true, - }; - } - return state; + case 'skipped': { + if (!state.promise) return state; + + return { + data: state.data, + isCalled: true, + }; } } } -function InitUseTransactionQueryReducer({ - skip, -}: UseTransactionQueryOptions< - TData, - TVariables ->): UseTransactionQueryState { +function InitUseTransactionQueryReducer< + TData +>(): UseTransactionQueryState { return { data: undefined, - isLoading: skip ? false : true, isCalled: false, }; } export type UseTransactionQueryOptions = { - fetchPolicy?: FetchPolicy; + fetchPolicy?: LegacyFetchPolicy; skip?: boolean; /** * Frequency in milliseconds of polling/refetch of the query @@ -116,31 +107,18 @@ export type UseTransactionQueryOptions = { onError?: OnErrorHandler; retry?: RetryOptions; suspense?: boolean; -} & (TVariables extends undefined - ? { variables?: TVariables } - : { variables: TVariables }); + operationName?: string; +}; -export interface UseTransactionQuery< - GeneratedSchema extends { - query: object; - } -> { +export interface UseTransactionQuery { ( - fn: (query: GeneratedSchema['query'], variables: TVariables) => TData, - ...[queryOptions]: undefined extends TVariables - ? [UseTransactionQueryOptions?] - : [UseTransactionQueryOptions] + fn: (query: TSchema['query'], variables?: TVariables) => TData, + queryOptions?: UseTransactionQueryOptions ): UseTransactionQueryState; } -export function createUseTransactionQuery< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - client: GQtyClient, +export function createUseTransactionQuery( + client: GQtyClient, { defaults: { transactionFetchPolicy: defaultFetchPolicy, @@ -149,314 +127,127 @@ export function createUseTransactionQuery< }, }: ReactClientOptionsWithDefaults ) { - const { resolved, eventHandler, refetch } = client; - const clientQuery: GeneratedSchema['query'] = client.query; - - const useTransactionQuery: UseTransactionQuery = - function useTransactionQuery( - fn: (query: typeof clientQuery, variables: TVariables) => TData, - ...[queryOptions]: undefined extends TVariables - ? [UseTransactionQueryOptions?] - : [UseTransactionQueryOptions] - ) { - const rejectedPromise = React.useRef(); - - if (rejectedPromise.current) throw rejectedPromise.current; - - const opts = Object.assign({}, queryOptions); - - opts.fetchPolicy ??= defaultFetchPolicy; - opts.retry ??= defaultRetry; - opts.suspense ??= defaultSuspense; - - opts.notifyOnNetworkStatusChange ??= true; - - const optsRef = React.useRef(opts); - optsRef.current = opts; - - const setSuspensePromise = useSuspensePromise(optsRef); - - const { skip, pollInterval = 0, fetchPolicy, variables } = opts; - - const isWindowVisible = useIsWindowVisible({ - lazy: true, - }); - - const selections = useSelectionsState(); - - const resolveOptions = React.useMemo>(() => { - return fetchPolicyDefaultResolveOptions(fetchPolicy); - }, [fetchPolicy]); - - const [state, dispatchReducer] = React.useReducer( - UseTransactionQueryReducer, - opts, - InitUseTransactionQueryReducer - ) as [ - UseTransactionQueryState, - React.Dispatch> - ]; - const dispatch = useDeferDispatch(dispatchReducer); - - const stateRef = React.useRef(state); - stateRef.current = state; - - const fnRef = React.useRef(fn); - fnRef.current = fn; - - const isFetching = React.useRef(false); - - const pendingPromise = React.useRef>(); - - const queryCallback = React.useCallback( - ( - resolveOptsArg: Omit< - ResolveOptions, - 'onSelection' | 'onCacheData' - > = {}, - fetchPolicyArg: FetchPolicy | undefined = fetchPolicy, - cacheChangeCall?: boolean - ) => { - if (skip) { - return Promise.resolve( - dispatch({ - type: 'done', - }) - ); - } - - stateRef.current.isCalled = true; - - const fn = () => - fnRef.current(clientQuery, optsRef.current.variables!); - - stateRef.current.isLoading = false; - - let instaResolved = false; - const promise = resolved(fn, { - ...resolveOptions, - ...resolveOptsArg, - onSelection(selection) { - selections.add(selection); - }, - onEmptyResolve() { - instaResolved = true; - }, - onCacheData(data): boolean { - switch (fetchPolicyArg) { - case 'cache-and-network': { - stateRef.current.isLoading = true; - dispatch({ - type: 'cache-found', - data, - }); - stateRef.current.data = data; - return true; - } - case 'cache-first': { - instaResolved = true; - - if (cacheChangeCall) { - dispatch({ - type: 'success', - data, - }); - } - - stateRef.current.data = data; - return false; - } - default: { - return true; - } - } - }, - onNoCacheFound() { - isFetching.current = true; - dispatch({ - type: 'loading', - }); - stateRef.current.isLoading = true; - }, - }).then( - (data) => { - pendingPromise.current = undefined; - optsRef.current.onCompleted?.(data); - isFetching.current = false; - if ( - stateRef.current.isLoading || - stateRef.current.data !== data - ) { - dispatch({ - type: 'success', - data, - }); - stateRef.current.data = data; - } - stateRef.current.isLoading = false; - }, - (err: unknown) => { - pendingPromise.current = undefined; - isFetching.current = false; - const error = GQtyError.create(err, useTransactionQuery); - optsRef.current.onError?.(error); - dispatch({ - type: 'failure', - error, - }); - stateRef.current.error = error; - stateRef.current.isLoading = false; + const useTransactionQuery: UseTransactionQuery = ( + fn, + { + fetchPolicy = defaultFetchPolicy, + notifyOnNetworkStatusChange = true, + onCompleted, + onError, + operationName, + pollInBackground = false, + pollInterval, + retry = defaultRetry, + skip = false, + suspense = defaultSuspense, + variables, + } = {} + ) => { + type TCallback = typeof fn; + type TData = ReturnType; + + const [state, dispatch] = React.useReducer( + UseTransactionQueryReducer, + undefined, + InitUseTransactionQueryReducer + ) as [ + UseTransactionQueryState, + React.Dispatch> + ]; + + useDeepCompareEffect(async () => { + if (skip) { + return dispatch({ type: 'skipped' }); + } - return error; - } - ); + const selections = new Set(); - if (instaResolved) return; + let fetchPromise: Promise | undefined; - pendingPromise.current = promise; - return promise; + const promise = client.resolve(({ query }) => fn(query, variables), { + awaitsFetch: false, + fetchPolicy: translateFetchPolicy(fetchPolicy), + onFetch(promise) { + fetchPromise = promise as Promise; }, - [fetchPolicy, skip, stateRef, resolveOptions, fnRef, dispatch, optsRef] - ); - - const serializedVariables = React.useMemo(() => { - return variables ? JSON.stringify(variables) : ''; - }, [variables]); - - const queryCallbackWithPromise = React.useCallback( - (inlineCall?: boolean) => { - if (skip) return; - - const promise = queryCallback()?.then((result) => { - if (result instanceof GQtyError) { - if (optsRef.current.retry) { - doRetry(optsRef.current.retry, { - async onRetry() { - const retryPromise = queryCallback({ - refetch: true, - })?.then((result) => { - if (result instanceof GQtyError) throw result; - }); - - if (retryPromise) { - setSuspensePromise(retryPromise); - - await retryPromise; - } - }, - }); - } else if (optsRef.current.suspense) { - throw result; - } - } - }); - - if (promise) { - if (inlineCall) { - Promise.resolve().then(() => { - setSuspensePromise(promise); - }); - } else { - setSuspensePromise(promise); - } - } + onSelect(selection) { + selections.add(selection); }, - [queryCallback, skip, setSuspensePromise, optsRef] - ); + operationName, + retryPolicy: retry, + }) as Promise; - if (!state.isCalled && !skip) { - queryCallbackWithPromise(true); - } - - useUpdateEffect(() => { - queryCallbackWithPromise(); - }, [queryCallbackWithPromise, serializedVariables]); + dispatch({ type: 'loading', promise }); - React.useEffect(() => { - if (skip || pollInterval <= 0) return; + try { + const cacheResult = await promise; - let isMounted = true; + if (fetchPromise === undefined) { + dispatch({ type: 'success', data: cacheResult }); + } else { + if (fetchPolicy === 'cache-and-network') { + dispatch({ type: 'cache-found', data: cacheResult }); + } - const interval = setInterval(() => { - if (isFetching.current) return; + const fetchResult = await fetchPromise; - // Skip polling while on background - if ( - !optsRef.current.pollInBackground && - !isWindowVisible.ref.current - ) { - return; - } + onCompleted?.(fetchResult); + dispatch({ type: 'success', data: fetchResult }); + } + } catch (error) { + const theError = GQtyError.create(error); - isFetching.current = true; + onError?.(theError); + dispatch({ type: 'failure', error: theError }); + } - if (isMounted && optsRef.current.notifyOnNetworkStatusChange) + if (fetchPolicy !== 'no-cache') { + return $meta(client.schema.query)?.context.cache.subscribe( + [...selections].map((s) => s.cacheKeys.join('.')), + () => { dispatch({ - type: 'loading', + type: 'success', + data: fn(client.schema.query, variables), }); + } + ); + } + }, [fn, skip, variables]); - const fn = () => - fnRef.current(clientQuery, optsRef.current.variables!); + if (suspense) { + if (state.promise) throw state.promise; + if (state.error) throw state.error; + } - (resolveOptions.noCache - ? resolved(fn, resolveOptions) - : refetch(fn) - ).then( - (data) => { - pendingPromise.current = undefined; - isFetching.current = false; - if (isMounted) - dispatch({ - type: 'success', - data, - }); - }, - (err) => { - pendingPromise.current = undefined; - isFetching.current = false; - if (isMounted) - dispatch({ - type: 'failure', - error: GQtyError.create(err, useTransactionQuery), - }); - } - ); - }, pollInterval); + const visible = useDocumentVisibility(); - return () => { - isMounted = false; - clearInterval(interval); - }; - }, [ - pollInterval, - skip, - resolveOptions, - optsRef, - fnRef, - dispatch, - isFetching, - isWindowVisible, - ]); + // Polling won't fire onComplete and onError callbacks, it only updates + // the component state. + useIntervalEffect(async () => { + if (skip || state.promise || (!visible && !pollInBackground)) return; - useSubscribeCacheChanges({ - selections, - eventHandler, - shouldSubscribe: fetchPolicy !== 'no-cache', - onChange() { - if (pendingPromise.current) return; + const promise = client.resolve(({ query }) => fn(query, variables), { + fetchPolicy: translateFetchPolicy(fetchPolicy), + operationName, + retryPolicy: retry, + }) as Promise; - queryCallback( - { - refetch: false, - }, - 'cache-first', - true - ); - }, - }); + if (notifyOnNetworkStatusChange) { + dispatch({ type: 'loading', promise }); + } - return state; - }; + try { + dispatch({ type: 'success', data: await promise }); + } catch (error) { + dispatch({ type: 'failure', error: GQtyError.create(error) }); + } + }, pollInterval); + + return state; + }; return useTransactionQuery; } + +// TODO: Test all use cases to make sure state changes are intact. +// TODO: Test if it can pick up changes to scope variables here, test `skip` and `pollInBackground`. diff --git a/packages/react/src/ssr/ssr.ts b/packages/react/src/ssr/ssr.ts index 35a686b51..1176c54bc 100644 --- a/packages/react/src/ssr/ssr.ts +++ b/packages/react/src/ssr/ssr.ts @@ -1,9 +1,14 @@ -import type { GQtyClient, HydrateCacheOptions } from 'gqty'; +import { useMountEffect } from '@react-hookz/web'; +import type { + BaseGeneratedSchema, + GQtyClient, + LegacyHydrateCacheOptions, +} from 'gqty'; import * as React from 'react'; -import { useOnFirstMount } from '../common'; import { getDefault, ReactClientOptionsWithDefaults } from '../utils'; -export interface UseHydrateCacheOptions extends Partial { +export interface UseHydrateCacheOptions + extends Partial { /** * Cache snapshot, returned from `prepareReactRender` */ @@ -21,7 +26,7 @@ export interface UseHydrateCacheOptions extends Partial { * Props with `cacheSnapshot` that would be returned from `prepareReactRender` */ export type PropsWithServerCache< - T extends Record = {} + T extends Record = Record > = { /** * Cache snapshot, returned from `prepareReactRender` @@ -39,28 +44,28 @@ export interface PrepareReactRender { }>; } -export function createSSRHelpers( - client: GQtyClient, +export function createSSRHelpers( + { hydrateCache, prepareRender, query, refetch }: GQtyClient, { defaults: { refetchAfterHydrate } }: ReactClientOptionsWithDefaults ) { const prepareReactRender: PrepareReactRender = async function prepareReactRender(element: React.ReactNode) { const ssrPrepass = getDefault(await import('react-ssr-prepass')); - return client.prepareRender(() => ssrPrepass(element)); + return prepareRender(() => ssrPrepass(element)); }; const useHydrateCache: UseHydrateCache = function useHydrateCache({ cacheSnapshot, shouldRefetch = refetchAfterHydrate, }: UseHydrateCacheOptions) { - useOnFirstMount(() => { + useMountEffect(() => { if (cacheSnapshot) { - client.hydrateCache({ cacheSnapshot, shouldRefetch: false }); + hydrateCache({ cacheSnapshot, shouldRefetch: false }); } }); React.useEffect(() => { if (shouldRefetch) { - client.refetch(client.query).catch(console.error); + refetch(query).catch(console.error); } }, [shouldRefetch]); }; diff --git a/packages/react/src/subscription/useSubscription.ts b/packages/react/src/subscription/useSubscription.ts index ca50088c6..181fa0104 100644 --- a/packages/react/src/subscription/useSubscription.ts +++ b/packages/react/src/subscription/useSubscription.ts @@ -1,112 +1,56 @@ -import type { GQtyClient } from 'gqty'; - -import { - isAnySelectionIncluded, - useForceUpdate, - useIsomorphicLayoutEffect, - useSelectionsState, -} from '../common'; -import type { ReactClientOptionsWithDefaults } from '../utils'; - -export interface UseSubscription< - GeneratedSchema extends { - subscription: object; - } -> { - (): GeneratedSchema['subscription']; -} - -export function createUseSubscription< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - client: GQtyClient, - _opts: ReactClientOptionsWithDefaults -): UseSubscription { - const { - interceptorManager: { createInterceptor, removeInterceptor }, - subscriptionsClient, - eventHandler, - scheduler, - } = client; - const clientSubscription: GeneratedSchema['subscription'] = - client.subscription; - - const useSubscription: UseSubscription = - function useSubscription() { - const forceUpdate = useForceUpdate({ - doTimeout: true, - }); - const hookSelections = useSelectionsState(); - - const interceptor = createInterceptor(); - - Promise.resolve(interceptor).then(removeInterceptor); - - interceptor.selectionAddListeners.add((selection) => { - if (selection.type === 2) hookSelections.add(selection); - }); - - useIsomorphicLayoutEffect(() => { - removeInterceptor(interceptor); - }); - - useIsomorphicLayoutEffect(() => { - if (!subscriptionsClient) return; - - let isMounted = true; - - const unsubscribeCache = eventHandler.onCacheChangeSubscribe( - ({ selection }) => { - if (!isMounted || forceUpdate.wasCalled.current) return; - - if (hookSelections.has(selection)) forceUpdate(); - } - ); - - const unsubErrors = scheduler.errors.subscribeErrors((data) => { - if ( - isMounted && - data.type === 'new_error' && - !forceUpdate.wasCalled.current && - isAnySelectionIncluded(data.selections, hookSelections) - ) { - forceUpdate(); - } - }); - - return () => { - isMounted = false; - unsubErrors(); - unsubscribeCache(); - subscriptionsClient - .unsubscribe(hookSelections) - .then((operationsIds) => { - if (eventHandler.hasFetchSubscribers && operationsIds.length) { - const arraySelections = Array.from(hookSelections); - for (const id of operationsIds) { - eventHandler.sendFetchPromise( - Promise.resolve({ - query: '', - variables: undefined, - cacheSnapshot: client.cache, - selections: arraySelections, - type: 'subscription', - label: `[id=${id}] [unsubscribe]`, - }), - arraySelections - ); - } - } - }); - }; - }, [hookSelections, forceUpdate]); - - return clientSubscription; - }; +import { useRerender } from '@react-hookz/web'; +import { BaseGeneratedSchema, GQtyClient, GQtyError } from 'gqty'; +import { useEffect, useMemo, useState } from 'react'; + +export type UseSubscription = ( + options?: UseSubscriptionOptions +) => NonNullable; + +export type UseSubscriptionOptions = { + onError?: (error: GQtyError) => void; + operationName?: string; +}; + +export function createUseSubscription({ + createSubscriber, +}: GQtyClient) { + const useSubscription: UseSubscription = ({ + onError, + operationName, + } = {}) => { + const { + accessor: { subscription }, + subscribe, + selections, + } = useMemo(() => createSubscriber({ operationName }), [operationName]); + + const render = useRerender(); + const [error, setError] = useState(); + if (error) throw error; + + useEffect( + () => + subscribe({ + onNext: render, + onError(error) { + const theError = GQtyError.create(error); + + if (onError) { + onError(theError); + } else { + setError(theError); + } + }, + }), + [onError, selections, selections.size] + ); + + if (!subscription) { + throw new GQtyError(`Subscription is not defined in the schema.`); + } + + return subscription; + }; return useSubscription; } diff --git a/packages/react/src/useWindowFocusEffect.ts b/packages/react/src/useWindowFocusEffect.ts new file mode 100644 index 000000000..9e646689a --- /dev/null +++ b/packages/react/src/useWindowFocusEffect.ts @@ -0,0 +1,26 @@ +import { useEffect } from 'react'; + +export type UseFocusChangeEffectOptions = { + enabled?: boolean; +}; + +export const useWindowFocusEffect = ( + fn: (...args: unknown[]) => unknown, + { enabled = true }: UseFocusChangeEffectOptions = {} +) => { + useEffect(() => { + const visibilityChangeFn = () => { + if (globalThis.document?.visibilityState === 'visible') { + fn(); + } + }; + + globalThis.addEventListener?.('visibilitychange', visibilityChangeFn); + globalThis.addEventListener?.('focus', fn); + + return () => { + globalThis.removeEventListener?.('visibilitychange', visibilityChangeFn); + globalThis.removeEventListener?.('focus', fn); + }; + }, [enabled, fn]); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a2a5138de..b38dca71b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -957,9 +957,18 @@ importers: packages/react: dependencies: + '@react-hookz/web': + specifier: ^22.0.0 + version: 22.0.0(react-dom@17.0.2)(react@17.0.2) + p-debounce: + specifier: ^4.0.0 + version: 4.0.0 react-ssr-prepass: specifier: ^1.5.0 version: 1.5.0(react@17.0.2) + use-sync-external-store: + specifier: ^1.2.0 + version: 1.2.0(react@17.0.2) devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -988,12 +997,27 @@ importers: '@types/react-dom': specifier: ^18.0.11 version: 18.0.11 + '@types/use-sync-external-store': + specifier: ^0.0.3 + version: 0.0.3 + '@typescript-eslint/eslint-plugin': + specifier: ^5.54.1 + version: 5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.35.0)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.54.1 + version: 5.54.1(eslint@8.35.0)(typescript@4.9.5) bob-esbuild-cli: specifier: ^4.0.0 version: 4.0.0(bob-esbuild@4.0.3) esbuild: specifier: ^0.17.12 version: 0.17.12 + eslint: + specifier: ^8.35.0 + version: 8.35.0 + eslint-plugin-you-dont-need-lodash-underscore: + specifier: ^6.12.0 + version: 6.12.0 gqty: specifier: workspace:^2.3.0 version: link:../gqty/dist @@ -1030,6 +1054,9 @@ importers: tslib: specifier: ^2.5.0 version: 2.5.0 + type-fest: + specifier: ^3.6.1 + version: 3.6.1 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -4198,6 +4225,28 @@ packages: requiresBuild: true optional: true + /@eslint/eslintrc@2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.1 + globals: 13.20.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.35.0: + resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@faker-js/faker@7.6.0: resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} @@ -5141,6 +5190,26 @@ packages: dependencies: '@hapi/hoek': 9.3.0 + /@humanwhocodes/config-array@0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -5956,6 +6025,25 @@ packages: tslib: 2.5.0 dev: false + /@react-hookz/deep-equal@1.0.4: + resolution: {integrity: sha512-N56fTrAPUDz/R423pag+n6TXWbvlBZDtTehaGFjK0InmN+V2OFWLE/WmORhmn6Ce7dlwH5+tQN1LJFw3ngTJVg==} + dev: false + + /@react-hookz/web@22.0.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-jl4JgUXaiSvvDVQD2z/rq2/RaykjjLrAZxHOEQj2H38j4UFWIVhv5oKUH8yrKF4wX6tMX9gdrj62f9yGq/nSaQ==} + peerDependencies: + js-cookie: ^3.0.1 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + dependencies: + '@react-hookz/deep-equal': 1.0.4 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + /@react-native-async-storage/async-storage@1.17.12(react-native@0.71.6): resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} peerDependencies: @@ -6600,6 +6688,10 @@ packages: parse5: 7.1.1 dev: true + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} @@ -6727,6 +6819,10 @@ packages: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: true + /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: @@ -6750,6 +6846,10 @@ packages: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false + /@types/use-sync-external-store@0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + dev: true + /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: @@ -6791,6 +6891,136 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 + /@typescript-eslint/eslint-plugin@5.54.1(@typescript-eslint/parser@5.54.1)(eslint@8.35.0)(typescript@4.9.5): + resolution: {integrity: sha512-a2RQAkosH3d3ZIV08s3DcL/mcGc2M/UC528VkPULFxR9VnVPT8pBu0IyBAJJmVsCmhVfwQX1v6q+QGnmSe1bew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/type-utils': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.35.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.54.1(eslint@8.35.0)(typescript@4.9.5): + resolution: {integrity: sha512-8zaIXJp/nG9Ff9vQNh7TI+C3nA6q6iIsGJ4B4L6MhZ7mHnTMR4YP5vp2xydmFXIy8rpyIVbNAG44871LMt6ujg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.35.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.54.1: + resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 + dev: true + + /@typescript-eslint/type-utils@5.54.1(eslint@8.35.0)(typescript@4.9.5): + resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5) + '@typescript-eslint/utils': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + debug: 4.3.4 + eslint: 8.35.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.54.1: + resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.54.1(typescript@4.9.5): + resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/visitor-keys': 5.54.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.54.1(eslint@8.35.0)(typescript@4.9.5): + resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.54.1 + '@typescript-eslint/types': 5.54.1 + '@typescript-eslint/typescript-estree': 5.54.1(typescript@4.9.5) + eslint: 8.35.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.35.0) + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.54.1: + resolution: {integrity: sha512-q8iSoHTgwCfgcRJ2l2x+xCbu8nBlRAlsQ33k24Adj8eoVBE0f8dUeI+bAa8F84Mv05UGbAx57g2zrRsYIooqQg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.54.1 + eslint-visitor-keys: 3.4.0 + dev: true + /@vitejs/plugin-react-refresh@1.3.6: resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} engines: {node: '>=12.0.0'} @@ -6850,7 +7080,6 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.1 - dev: false /acorn-node@1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} @@ -6907,6 +7136,15 @@ packages: dependencies: ajv: 8.11.0 + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: @@ -9421,6 +9659,13 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} dev: true @@ -9637,7 +9882,6 @@ packages: /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: false /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} @@ -9656,11 +9900,131 @@ packages: source-map: 0.6.1 dev: true + /eslint-plugin-you-dont-need-lodash-underscore@6.12.0: + resolution: {integrity: sha512-WF4mNp+k2532iswT6iUd1BX6qjd3AV4cFy/09VC82GY9SsRtvkxhUIx7JNGSe0/bLyd57oTr4inPFiIaENXhGw==} + engines: {node: '>=4.0'} + dependencies: + kebab-case: 1.0.2 + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.35.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.35.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.35.0: + resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.35.0 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0(eslint@8.35.0) + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.1 + acorn-jsx: 5.3.2(acorn@8.8.1) + eslint-visitor-keys: 3.4.0 + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -10049,6 +10413,13 @@ packages: is-unicode-supported: 1.3.0 dev: true + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + /file-type@18.2.1: resolution: {integrity: sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==} engines: {node: '>=14.16'} @@ -10161,6 +10532,14 @@ packages: pkg-dir: 4.2.0 dev: true + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} @@ -10444,7 +10823,6 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - dev: false /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} @@ -10470,6 +10848,13 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -11299,6 +11684,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} @@ -12060,6 +12450,10 @@ packages: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: false + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: true + /js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} @@ -12173,9 +12567,17 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -12210,6 +12612,10 @@ packages: /just-safe-set@4.2.1: resolution: {integrity: sha512-La5CP41Ycv52+E4g7w1sRV8XXk7Sp8a/TwWQAYQKn6RsQz1FD4Z/rDRRmqV3wJznS1MDF3YxK7BCudX1J8FxLg==} + /kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + dev: true + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false @@ -12257,6 +12663,14 @@ packages: type-check: 0.3.2 dev: true + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /lie@3.1.1: resolution: {integrity: sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=} dependencies: @@ -12350,7 +12764,6 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: false /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} @@ -13651,6 +14064,10 @@ packages: picocolors: 1.0.0 dev: true + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -14075,6 +14492,18 @@ packages: word-wrap: 1.2.3 dev: true + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} @@ -14098,6 +14527,11 @@ packages: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true + /p-debounce@4.0.0: + resolution: {integrity: sha512-4Ispi9I9qYGO4lueiLDhe4q4iK5ERK8reLsuzH6BPaXn53EGaua8H66PXIFGrW897hwjXp+pVLrm/DLxN0RF0A==} + engines: {node: '>=12'} + dev: false + /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} @@ -14537,6 +14971,11 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + /prettier@2.8.3: resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} engines: {node: '>=10.13.0'} @@ -15317,6 +15756,11 @@ packages: functions-have-names: 1.2.3 dev: true + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -16543,6 +16987,10 @@ packages: glob: 7.2.3 minimatch: 3.1.2 + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + /thread-stream@2.2.0: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} dependencies: @@ -16810,7 +17258,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} @@ -16822,6 +17269,16 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tsutils@3.21.0(typescript@4.9.5): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + dev: true + /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} @@ -16866,6 +17323,13 @@ packages: prelude-ls: 1.1.2 dev: true + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -16875,6 +17339,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} From e0ca7a99527a43ed9bbf518d2c8fd363f4331865 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 10 Mar 2023 00:52:54 +0800 Subject: [PATCH 012/122] fix: tests --- .github/workflows/tests.yaml | 2 +- examples/ez/package.json | 4 +- examples/ez/src/generated/gqty.ts | 46 ++-- examples/ez/src/generated/schema.generated.ts | 20 -- examples/ez/src/index.ts | 2 +- examples/ez/test/example.test.ts | 35 +-- examples/github/src/gqty/index.ts | 19 +- integration/graphql-17/src/gqty.ts | 23 +- packages/cli/src/deps.ts | 19 +- packages/cli/src/generate.ts | 45 ++-- packages/cli/src/introspection.ts | 2 +- packages/cli/test/generate.test.ts | 156 +++--------- .../cli/test/inspectWriteGenerate.test.ts | 226 +++++------------- packages/cli/test/writeGenerate.test.ts | 36 +-- packages/gqty/package.json | 1 + packages/gqty/src/Accessor/index.ts | 39 +-- packages/gqty/src/Accessor/resolve.ts | 24 ++ .../gqty/src/Client/compat/hydrateCache.ts | 4 +- .../gqty/src/Client/compat/inlineResolved.ts | 4 +- packages/gqty/src/Client/compat/prefetch.ts | 16 +- packages/gqty/src/Client/compat/resolved.ts | 4 +- packages/gqty/src/Client/context.ts | 2 + packages/gqty/src/Client/index.ts | 3 +- packages/gqty/src/Client/resolveSelections.ts | 121 +++++----- packages/gqty/src/Client/resolvers.ts | 67 ++++-- packages/gqty/src/Helpers/useMetaStateHack.ts | 58 ++--- packages/gqty/src/Utils/pick.ts | 6 +- packages/gqty/test/FrailMap.test.ts | 14 +- packages/gqty/test/client.test.ts | 10 +- packages/gqty/test/helpers.test.ts | 11 +- packages/gqty/test/subscriptions.test.ts | 11 +- packages/react/package.json | 10 + packages/react/src/client.ts | 32 +-- packages/react/src/meta/useMetaState.ts | 9 +- packages/react/src/query/hoc.tsx | 19 +- packages/react/src/query/preparedQuery.ts | 2 +- packages/react/src/query/usePaginatedQuery.ts | 2 - packages/react/src/query/useQuery.ts | 63 +++-- packages/react/test/graphqlHOC.test.tsx | 9 +- packages/react/test/useQuery.test.tsx | 18 +- packages/react/test/utils.ts | 54 ++--- pnpm-lock.yaml | 33 ++- 42 files changed, 523 insertions(+), 758 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4a3f8153f..65f968dac 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -20,7 +20,7 @@ env: jobs: build: - timeout-minutes: 10 + timeout-minutes: 20 name: Install, Build and Test runs-on: ${{ matrix.os }} strategy: diff --git a/examples/ez/package.json b/examples/ez/package.json index a764c19a4..baa699ac7 100644 --- a/examples/ez/package.json +++ b/examples/ez/package.json @@ -22,12 +22,12 @@ "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", "graphql-ez": "^0.16.0", - "lodash": "^4.17.21", + "lodash-es": "^4.17.21", "randomstring": "^1.2.3", "test-utils": "workspace:^0.1.0" }, "devDependencies": { - "@types/lodash": "^4.14.191", + "@types/lodash-es": "^4.17.6", "@types/node": "^18.15.5", "@types/randomstring": "^1.1.8", "bob-tsm": "^1.1.2", diff --git a/examples/ez/src/generated/gqty.ts b/examples/ez/src/generated/gqty.ts index ac036b71c..8d31b1dce 100644 --- a/examples/ez/src/generated/gqty.ts +++ b/examples/ez/src/generated/gqty.ts @@ -5,46 +5,48 @@ import { GeneratedSchema, generatedSchema, scalarsEnumsHash, - SchemaObjectTypes, - SchemaObjectTypesNames, } from './schema.generated'; import { CreateTestClient } from '@graphql-ez/fastify-testing'; const testClientPromise = CreateTestClient(ezApp); -const queryFetcher: QueryFetcher = async function (query, variables) { +const queryFetcher: QueryFetcher = async function ({ + query, + variables, + operationName, +}) { const testClient = await testClientPromise; return testClient.query(query, { variables, + operationName, }); }; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, - normalization: { - identifier(obj) { - switch (obj.__typename) { - case 'A': { - return obj.a; + scalars: scalarsEnumsHash, + cacheOptions: { + normalization: { + identity(obj) { + switch (obj.__typename) { + case 'A': { + return `${obj.a ?? ''}`; + } + default: { + return; + } } - default: { - return; - } - } + }, + schemaKeys: {}, }, - keyFields: {}, + }, + fetchOptions: { + fetcher: queryFetcher, }, }); const { query, mutation, mutate, subscription, resolved, refetch } = client; -export { query, mutation, mutate, subscription, resolved, refetch }; - export * from './schema.generated'; +export { query, mutation, mutate, subscription, resolved, refetch }; diff --git a/examples/ez/src/generated/schema.generated.ts b/examples/ez/src/generated/schema.generated.ts index 769d2f8fc..a9a8da208 100644 --- a/examples/ez/src/generated/schema.generated.ts +++ b/examples/ez/src/generated/schema.generated.ts @@ -212,26 +212,6 @@ export interface Subscription { __typename?: 'Subscription'; } -export interface SchemaObjectTypes { - A: A; - B: B; - C: C; - Dog: Dog; - Human: Human; - Mutation: Mutation; - Query: Query; - Subscription: Subscription; -} -export type SchemaObjectTypesNames = - | 'A' - | 'B' - | 'C' - | 'Dog' - | 'Human' - | 'Mutation' - | 'Query' - | 'Subscription'; - export interface $NamedEntity { Dog?: Dog; Human?: Human; diff --git a/examples/ez/src/index.ts b/examples/ez/src/index.ts index b034a5afd..15e5163ac 100644 --- a/examples/ez/src/index.ts +++ b/examples/ez/src/index.ts @@ -4,7 +4,7 @@ import { ezAltairIDE } from '@graphql-ez/plugin-altair/static'; import { ezCodegen } from '@graphql-ez/plugin-codegen'; import { ezSchema } from '@graphql-ez/plugin-schema'; import Fastify, { LogLevel } from 'fastify'; -import { random, range } from 'lodash'; +import { random, range } from 'lodash-es'; import { generate } from 'randomstring'; import { gql } from 'test-utils'; import { GreetingsEnum, Human, TestUnion } from './ez.generated'; diff --git a/examples/ez/test/example.test.ts b/examples/ez/test/example.test.ts index fd34cbd3f..f95e7fc07 100644 --- a/examples/ez/test/example.test.ts +++ b/examples/ez/test/example.test.ts @@ -1,7 +1,11 @@ -import { waitForExpect } from 'test-utils'; - +import { CreateTestClient, GlobalTeardown } from '@graphql-ez/fastify-testing'; import { selectFields } from 'gqty'; - +import { ezApp } from '../src'; +import { + ArrayObjectArgsDocument, + MultipleArgsDocument, + SimpleStringDocument, +} from '../src/ez.generated'; import { client as generatedClient, GreetingsEnum, @@ -9,14 +13,6 @@ import { query, resolved, } from '../src/generated/gqty'; -import { - ArrayObjectArgsDocument, - MultipleArgsDocument, - SimpleStringDocument, -} from '../src/ez.generated'; - -import { CreateTestClient, GlobalTeardown } from '@graphql-ez/fastify-testing'; -import { ezApp } from '../src'; const testClientPromise = CreateTestClient(ezApp); @@ -117,23 +113,6 @@ describe('gqty integration tests', () => { expect(firstHumanName !== secondHumanName).toBeTruthy(); }); - test('scheduler', async () => { - const hello = 'zxczxc'; - const shouldBeUndefined = generatedClient.query.stringWithArgs({ - hello, - }); - - expect(shouldBeUndefined).toBe(undefined); - - waitForExpect(() => { - const shouldBeString = generatedClient.query.stringWithArgs({ - hello, - }); - - expect(shouldBeString).toBe(hello); - }); - }); - test('resolved no cache', async () => { const hello = 'asdasd'; const helloQueryString = await resolved( diff --git a/examples/github/src/gqty/index.ts b/examples/github/src/gqty/index.ts index 940913bda..963ab204d 100644 --- a/examples/github/src/gqty/index.ts +++ b/examples/github/src/gqty/index.ts @@ -2,8 +2,8 @@ * GQTY: You can safely modify this file and Query Fetcher based on your needs */ -import 'isomorphic-unfetch'; import 'dotenv/config'; +import 'isomorphic-unfetch'; import { createClient, QueryFetcher } from 'gqty'; @@ -11,8 +11,6 @@ import { generatedSchema, GeneratedSchema, scalarsEnumsHash, - SchemaObjectTypes, - SchemaObjectTypesNames, } from './schema.generated'; if (!process.env.GITHUB_TOKEN) { @@ -41,18 +39,15 @@ const queryFetcher: QueryFetcher = async function (query, variables) { return json; }; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch } = client; -export { query, mutation, mutate, subscription, resolved, refetch }; - export * from './schema.generated'; +export { query, mutation, mutate, subscription, resolved, refetch }; diff --git a/integration/graphql-17/src/gqty.ts b/integration/graphql-17/src/gqty.ts index b529e5425..9200011f3 100644 --- a/integration/graphql-17/src/gqty.ts +++ b/integration/graphql-17/src/gqty.ts @@ -5,32 +5,25 @@ import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; import { TestClient } from './api'; -import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, -} from './schema.generated'; +import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; -const queryFetcher: QueryFetcher = async function (query, variables) { +const queryFetcher: QueryFetcher = async function ({ query, variables }) { return (await TestClient).query(query, { variables, }); }; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = client; -export { query, mutation, mutate, subscription, resolved, refetch, track }; - export * from './schema.generated'; +export { query, mutation, mutate, subscription, resolved, refetch, track }; diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index e431f482c..e1cc52a44 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -1,19 +1,10 @@ -export { program } from 'commander'; - -export { cosmiconfig, Loader } from 'cosmiconfig'; - export { codegen } from '@graphql-codegen/core'; - export * as typescriptPlugin from '@graphql-codegen/typescript'; - export { printSchemaWithDirectives } from '@graphql-tools/utils'; - +export { schemaFromExecutor, wrapSchema } from '@graphql-tools/wrap'; +export { program } from 'commander'; +export { cosmiconfig, Loader } from 'cosmiconfig'; +export { default as fg } from 'fast-glob'; export { default as sortBy } from 'lodash-es/sortBy.js'; - -export { introspectSchema, wrapSchema } from '@graphql-tools/wrap'; - -export { default as prettier, Options as PrettierOptions } from 'prettier'; - export { default as mkdirp } from 'mkdirp'; - -export { default as fg } from 'fast-glob'; +export { default as prettier, Options as PrettierOptions } from 'prettier'; diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 4c03368fd..f5b883c8b 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -729,23 +729,6 @@ export async function generate( return acum; }, ''); - const objectTypesEntries = deps.sortBy( - Array.from(objectTypeTSTypes.entries()), - (v) => v[0] - ); - - typescriptTypes += ` - export interface SchemaObjectTypes { - ${objectTypesEntries.reduce((acum, [typeName]) => { - acum += `${typeName}:${typeName};`; - return acum; - }, '')} - } - export type SchemaObjectTypesNames = ${objectTypesEntries - .map(([key]) => `"${key}"`) - .join(' | ')}; - `; - if (unionsAndInterfacesObjectTypesMap.size) { typescriptTypes += ` ${deps @@ -794,8 +777,8 @@ export async function generate( ${ isJavascriptOutput ? typeDoc('import("gqty").QueryFetcher') + 'const queryFetcher' - : 'const queryFetcher : QueryFetcher' - } = async function (query, variables, fetchOptions) { + : 'const queryFetcher: QueryFetcher' + } = async function ({ query, variables, operationName }, fetchOptions) { // Modify "${endpoint}" if needed const response = await fetch("${endpoint}", { method: "POST", @@ -805,6 +788,7 @@ export async function generate( body: JSON.stringify({ query, variables, + operationName, }), mode: "cors", ...fetchOptions @@ -973,7 +957,7 @@ export const generatedSchema = {${generatedSchemaCodeString}}; ${react ? `import { createReactClient } from "@gqty/react"` : ''} ${ subscriptions - ? `import { createSubscriptionsClient } from "@gqty/subscriptions"` + ? `import { createClient as createSubscriptionsClient } from "graphql-ws"` : '' } ${isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";'} @@ -981,7 +965,7 @@ export const generatedSchema = {${generatedSchemaCodeString}}; ${ isJavascriptOutput ? '' - : 'import type { GeneratedSchema, SchemaObjectTypes, SchemaObjectTypesNames } from "./schema.generated";' + : 'import type { GeneratedSchema } from "./schema.generated";' } import { generatedSchema, scalarsEnumsHash } from "./schema.generated"; @@ -1011,19 +995,22 @@ export const generatedSchema = {${generatedSchemaCodeString}}; 'import("gqty").GQtyClient' )}export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher - ${subscriptions ? ', subscriptionsClient' : ''} + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + ${subscriptions ? 'subscriber: subscriptionsClient' : ''} + }, });` - : `export const client = createClient({ + : `export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher - ${subscriptions ? ', subscriptionsClient' : ''} + scalars: scalarsEnumsHash, + fetchOptions:{ + fetcher: queryFetcher, + ${subscriptions ? 'subscriber: subscriptionsClient' : ''} + }, });` } - const { query, mutation, mutate, subscription, resolved, refetch, track } = client; export { query, mutation, mutate, subscription, resolved, refetch, track }; diff --git a/packages/cli/src/introspection.ts b/packages/cli/src/introspection.ts index dc5e9bfb9..16b833f09 100644 --- a/packages/cli/src/introspection.ts +++ b/packages/cli/src/introspection.ts @@ -45,7 +45,7 @@ export const getRemoteSchema = async ( }; const schema = deps.wrapSchema({ - schema: await deps.introspectSchema(executor, { + schema: await deps.schemaFromExecutor(executor, { endpoint, }), executor, diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index 21f7c5451..1d791f12d 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -106,13 +106,6 @@ test('basic functionality works', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -133,19 +126,14 @@ test('basic functionality works', async () => { */ import { createReactClient } from '@gqty/react'; - import { createSubscriptionsClient } from '@gqty/subscriptions'; + import { createClient as createSubscriptionsClient } from 'graphql-ws'; import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -157,6 +145,7 @@ test('basic functionality works', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -179,15 +168,13 @@ test('basic functionality works', async () => { }) : undefined; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -314,16 +301,11 @@ test('custom scalars works', async () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -335,6 +317,7 @@ test('custom scalars works', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -345,14 +328,12 @@ test('custom scalars works', async () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -451,13 +432,6 @@ test('custom scalars works', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -833,20 +807,6 @@ describe('feature complete app', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Human: Human; - Mutation: Mutation; - OtherHuman: OtherHuman; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = - | 'Human' - | 'Mutation' - | 'OtherHuman' - | 'Query' - | 'Subscription'; - export interface $HumanType { Human?: Human; OtherHuman?: OtherHuman; @@ -1179,13 +1139,6 @@ describe('mutation', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1315,13 +1268,6 @@ describe('subscription', () => { newNotification: ScalarsEnums['String']; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1413,7 +1359,7 @@ test('javascript output works', async () => { */ import { createReactClient } from '@gqty/react'; - import { createSubscriptionsClient } from '@gqty/subscriptions'; + import { createClient as createSubscriptionsClient } from 'graphql-ws'; import { createClient } from 'gqty'; @@ -1422,7 +1368,10 @@ test('javascript output works', async () => { /** * @type {import("gqty").QueryFetcher} */ - const queryFetcher = async function (query, variables, fetchOptions) { + const queryFetcher = async function ( + { query, variables, operationName }, + fetchOptions + ) { // Modify "/api/graphql" if needed const response = await fetch('/api/graphql', { method: 'POST', @@ -1432,6 +1381,7 @@ test('javascript output works', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -1459,9 +1409,11 @@ test('javascript output works', async () => { */ export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -1662,20 +1614,6 @@ test('javascript output works', async () => { newNotification: ScalarsEnums['String']; } - export interface SchemaObjectTypes { - A: A; - B: B; - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = - | 'A' - | 'B' - | 'Mutation' - | 'Query' - | 'Subscription'; - export interface $C { A?: A; B?: B; @@ -1740,16 +1678,11 @@ test('ignoreArgs transform', async () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -1761,6 +1694,7 @@ test('ignoreArgs transform', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -1771,14 +1705,12 @@ test('ignoreArgs transform', async () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -1925,13 +1857,6 @@ test('ignoreArgs transform', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -2152,13 +2077,6 @@ test('fields with default value works', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index cd9e2b198..be5b25bdc 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -62,16 +62,11 @@ test('basic inspectWriteGenerate functionality', async () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -83,6 +78,7 @@ test('basic inspectWriteGenerate functionality', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -93,14 +89,12 @@ test('basic inspectWriteGenerate functionality', async () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -201,13 +195,6 @@ test('basic inspectWriteGenerate functionality', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -270,16 +257,11 @@ describe('from file', () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -291,6 +273,7 @@ describe('from file', () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -301,14 +284,12 @@ describe('from file', () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -405,13 +386,6 @@ describe('from file', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -476,16 +450,11 @@ describe('from file', () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -497,6 +466,7 @@ describe('from file', () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -507,14 +477,12 @@ describe('from file', () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -610,13 +578,6 @@ describe('from file', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -681,16 +642,11 @@ describe('from file', () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -702,6 +658,7 @@ describe('from file', () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -712,14 +669,12 @@ describe('from file', () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -815,13 +770,6 @@ describe('from file', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -930,16 +878,11 @@ describe('from multiple files', () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -951,6 +894,7 @@ describe('from multiple files', () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -961,14 +905,12 @@ describe('from multiple files', () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -1070,13 +1012,6 @@ describe('from multiple files', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1195,16 +1130,11 @@ test('specify generateOptions to inspectWriteGenerate', async () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -1216,6 +1146,7 @@ test('specify generateOptions to inspectWriteGenerate', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -1226,14 +1157,12 @@ test('specify generateOptions to inspectWriteGenerate', async () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -1331,13 +1260,6 @@ test('specify generateOptions to inspectWriteGenerate', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1469,13 +1391,6 @@ describe('inspect headers', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1561,16 +1476,11 @@ describe('CLI behavior', () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -1582,6 +1492,7 @@ describe('CLI behavior', () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -1592,14 +1503,12 @@ describe('CLI behavior', () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = @@ -1700,13 +1609,6 @@ describe('CLI behavior', () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -1742,17 +1644,17 @@ test('detect client config change between files', async () => { case 1: { expect(message.replace(clientPathRegex, 'client.ts')) .toMatchInlineSnapshot(` - "[Warning] You've changed the option "subscriptions" to 'true', which is different from your existing "client.ts". - If you meant to change this, please remove "client.ts" and re-run code generation." - `); + "[Warning] You've changed the option "subscriptions" to 'true', which is different from your existing "client.ts". + If you meant to change this, please remove "client.ts" and re-run code generation." + `); break; } case 2: { expect(message.replace(clientPathRegex, 'client.ts')) .toMatchInlineSnapshot(` - "[Warning] You've changed the option "react" to 'true', which is different from your existing "client.ts". - If you meant to change this, please remove "client.ts" and re-run code generation." - `); + "[Warning] You've changed the option "react" to 'true', which is different from your existing "client.ts". + If you meant to change this, please remove "client.ts" and re-run code generation." + `); break; } } @@ -1769,7 +1671,7 @@ test('detect client config change between files', async () => { }, }); - expect(spy).toBeCalledTimes(1); + expect(spy).toBeCalledTimes(0); await inspectWriteGenerate({ endpoint, @@ -1780,7 +1682,7 @@ test('detect client config change between files', async () => { }, }); - expect(spy).toBeCalledTimes(4); + expect(spy).toBeCalledTimes(2); } finally { await tempDir.cleanup(); spy.mockRestore(); diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 34d18d2d5..4711477b5 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -121,13 +121,6 @@ test('generates code and writes existing file', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -229,13 +222,6 @@ test('creates dir, generates code and writes new file', async () => { __typename?: 'Subscription'; } - export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - } - export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; @@ -266,16 +252,11 @@ test('creates dir, generates code and writes new file', async () => { import type { QueryFetcher } from 'gqty'; import { createClient } from 'gqty'; - import type { - GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, - } from './schema.generated'; + import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { // Modify "/api/graphql" if needed @@ -287,6 +268,7 @@ test('creates dir, generates code and writes new file', async () => { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', ...fetchOptions, @@ -297,14 +279,12 @@ test('creates dir, generates code and writes new file', async () => { return json; }; - export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes - >({ + export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = diff --git a/packages/gqty/package.json b/packages/gqty/package.json index bdb169afb..88c31e806 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -43,6 +43,7 @@ }, "dependencies": { "flatted": "^3.2.7", + "just-extend": "^6.2.0", "just-has": "^2.3.0", "just-memoize": "^2.2.0", "just-safe-get": "^4.2.0", diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index 2dc984fc9..cababc33f 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -26,8 +26,13 @@ export function createSchemaAccessor( if (!Reflect.has(target, key)) return; - const __typename = target[key]?.__typename; - if (!__typename || !context.schema[key]) return; + const schemaKey = key as keyof TSchema; + + if ( + !Reflect.get(target[schemaKey] as object, '__typename') || + !context.schema[key] + ) + return; // Reuse root selections and their internally cached children, accessors // can in turn be safely cached by selections but still scoped. @@ -40,7 +45,7 @@ export function createSchemaAccessor( return createObjectAccessor({ context, cache: { - data: target[key], + data: target[key as keyof BaseGeneratedSchema], expiresAt: Infinity, }, selection, @@ -131,34 +136,6 @@ export const assignSelections = ( } }; -/* TODO: Selection - null - * - * Cache accessor and selections such that subsequent selections are - * retained when null types are returned from the cache, where new selections - * are prevented from happening. - * - * Make sure such cache is cleared when new selections can be made again. - * - * Triggering onSelect() for all scalar selections inside would suffice, no - * need to cache the whole selection tree. - * - * Cache by value, nullObjectKey? Every single fetch should cache selections - * from last time, cached selections are only used as long as we got nulls. - * - * Caching accessors may prevent accessors from showing new values, so we only - * cache selections by null values and empty arrays. - */ - -/* TODO: Selection - Conditional Rendering - * - * Handles conditional rendering that triggers query update on itself - * which results in infinite circular renderings. - * - * When a cache is still fresh, subsequent fetches should merge with objects - * instead of replacing them. Except on refetches, i.e. no-cache and no-store, - * which should instead invalidate reachable cache roots during selection. - */ - /* TODO: Selection - use() * * Replace `assignSelection` with `Selection.use(Selection)`, diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index d5b09eb2f..e856bfd28 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -1,3 +1,5 @@ +import get from 'just-safe-get'; +import set from 'just-safe-set'; import type { CacheObject } from '../Cache'; import { flattenObject } from '../Cache/crawl'; import { isCacheObject } from '../Cache/utils'; @@ -9,6 +11,7 @@ import { Type, } from '../Schema'; import type { Selection } from '../Selection'; +import { deepAssign, isObject } from '../Utils'; import type { Meta } from './meta'; import { $meta, $setMeta } from './meta'; import { createSkeleton, isSkeleton } from './skeleton'; @@ -137,6 +140,27 @@ export const resolve = ( cache.data = data; + // Subscribe to cache changes at root level, child accessors should have new + // values reflected after cache updates. Listeners created this way have no + // way to be garbage collected, but the number of accessed root keys are + // assumed to be manageable. + if (selection.parent === selection.root) { + const listenerCacheKey = `__accessorCacheListeners.${cacheKeys.join('/')}`; + + get(context, listenerCacheKey)?.(); + + const unsubscribe = context.cache.subscribe( + [cacheKeys.join('.')], + (cache) => { + if (isObject(cache) && isObject(data)) { + deepAssign(data, [get(cache, cacheKeys.join('.'))]); + } + } + ); + + set(context, listenerCacheKey, unsubscribe); + } + return isArray && !isNumericSelection ? createArrayAccessor({ cache, diff --git a/packages/gqty/src/Client/compat/hydrateCache.ts b/packages/gqty/src/Client/compat/hydrateCache.ts index 1f01d3143..e888fb76d 100644 --- a/packages/gqty/src/Client/compat/hydrateCache.ts +++ b/packages/gqty/src/Client/compat/hydrateCache.ts @@ -45,7 +45,9 @@ export const createLegacyHydrateCache = if (selectionSnapshots && shouldRefetch) { const selections = new Set(); for (const [[root], ...snapshot] of selectionSnapshots) { - const { selection } = $meta(accessor[root as string]!)!; + const { selection } = $meta( + accessor[root as keyof BaseGeneratedSchema]! + )!; selections.add(selection.fromJSON(snapshot)); } diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index 7a03f46b2..e7734a2cf 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -30,7 +30,7 @@ export const createLegacyInlineResolved = < TSchema extends BaseGeneratedSchema = BaseGeneratedSchema >({ resolvers: { createResolver }, - subscribeLegacySelections: subscribeSelections, + subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyInlineResolved => { return ( fn, @@ -46,7 +46,7 @@ export const createLegacyInlineResolved = < fetchPolicy: refetch ? 'no-cache' : 'default', operationName, }); - const unsubscribe = subscribeSelections((selection, cache) => { + const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); onSelection?.(convertSelection(selection)); }); diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts index df522d597..5690f882a 100644 --- a/packages/gqty/src/Client/compat/prefetch.ts +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -2,7 +2,7 @@ import type { BaseGeneratedSchema } from '../..'; import type { CreateLegacyMethodOptions } from './client'; export type LegacyPrefetch = { - (fn: (query: TSchema['query']) => TData): Promise; + (fn: (query: TSchema['query']) => TData): TData | Promise; }; export const createLegacyPrefetch = @@ -10,12 +10,16 @@ export const createLegacyPrefetch = resolvers: { createResolver }, subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyPrefetch => - async (fn, { operationName }: { operationName?: string } = {}) => { - const { accessor, context, resolve } = createResolver({ operationName }); + (fn, { operationName }: { operationName?: string } = {}) => { + const { + accessor: { query }, + context, + resolve, + } = createResolver({ operationName }); const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); }); - const data = fn(accessor.query); + const data = fn(query); unsubscribe(); @@ -23,7 +27,5 @@ export const createLegacyPrefetch = return data; } - await resolve(); - - return fn(accessor.query); + return resolve().then(() => fn(query)); }; diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index 421bc9176..703004cca 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -112,7 +112,7 @@ export const createLegacyResolved = < debugger: debug, fetchOptions: { fetcher, subscriber, retryPolicy }, resolvers: { createResolver }, - subscribeLegacySelections: subscribeSelections, + subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyResolved => { const resolved: LegacyResolved = async ( fn: () => TData, @@ -134,7 +134,7 @@ export const createLegacyResolved = < fetchPolicy: noCache ? 'no-store' : refetch ? 'no-cache' : 'default', operationName, }); - const unsubscribe = subscribeSelections((selection, cache) => { + const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); onSelection?.(convertSelection(selection)); }); diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index a71065281..b6bb40666 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -62,6 +62,8 @@ export const createContext = ({ const { data, expiresAt: age = Infinity } = cacheNode ?? {}; // Suggest a fetch on a stale or missing cache. + // We add a minimum of 100 ms delay for caches with immedidate staleness, + // this prevents components from infinite rendering loop. this.shouldFetch ||= data === undefined || age < now; this.hasCacheHit ||= data !== undefined; diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 73697a665..b8330035c 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -47,7 +47,6 @@ export type BaseGeneratedSchema = { query: GeneratedSchemaObject; mutation?: GeneratedSchemaObject; subscription?: GeneratedSchemaObject; - [key: string]: GeneratedSchemaObject | undefined; }; export type SchemaObjectKeys = Exclude< @@ -129,7 +128,7 @@ export type Client = Persistors & export const createClient = ({ cacheOptions: { - maxAge = 0, + maxAge = 100, normalization = true, staleWhileRevalidate = 5 * 60 * 1000, } = {}, diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 3686cf88e..453953dd9 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -1,4 +1,3 @@ -import { notifyFetch, notifyRetry } from 'gqty/Helpers/useMetaStateHack'; import type { ExecutionResult } from 'graphql'; import { MessageType, SubscribePayload } from 'graphql-ws'; import { CloseEvent, WebSocket } from 'ws'; @@ -6,6 +5,7 @@ import type { FetchOptions } from '.'; import type { Cache } from '../Cache'; import { dedupePromise } from '../Cache/query'; import { doRetry, GQtyError } from '../Error'; +import { notifyFetch, notifyRetry } from '../Helpers/useMetaStateHack'; import { buildQuery } from '../QueryBuilder'; import type { QueryPayload } from '../Schema'; import type { Selection } from '../Selection'; @@ -43,13 +43,8 @@ export const fetchSelections = < operationName, extensions: { type, hash } = {}, }) => { - if (!type) { - throw new GQtyError(`Invalid query type: ${type}`); - } - - if (!hash) { - throw new GQtyError(`Expected query hash.`); - } + if (!type) throw new GQtyError(`Invalid query type: ${type}`); + if (!hash) throw new GQtyError(`Expected query hash.`); const queryPayload: QueryPayload = { query, @@ -68,30 +63,31 @@ export const fetchSelections = < doFetch(queryPayload, { ...fetchOptions, selections }) ); - const error = errors?.length - ? GQtyError.fromGraphQLErrors(errors) - : undefined; + const result: FetchResult = { + data, + extensions: { ...extensions, ...queryPayload.extensions }, + }; + + if (errors?.length) { + result.error = GQtyError.fromGraphQLErrors(errors); + } debug?.dispatch({ cache, request: { query, variables, operationName }, - result: { - data, - error, - extensions: { ...extensions, ...queryPayload.extensions }, - }, + result, selections, }); - return { - data, - error, - extensions: { ...extensions, ...queryPayload.extensions }, - }; + return result; } ) ); +export type SubscribeSelectionOptions = FetchSelectionsOptions & { + onSubscribe?: () => void; +}; + export type SubscriptionCallback> = ( result: FetchResult ) => void; @@ -124,7 +120,8 @@ export const subscribeSelections = < debugger: debug, fetchOptions: { subscriber, ...fetchOptions }, operationName, - }: FetchSelectionsOptions + onSubscribe, + }: SubscribeSelectionOptions ): Unsubscribe => { const unsubscribers = new Set<() => void>(); @@ -149,10 +146,25 @@ export const subscribeSelections = < extensions: { type, hash }, }; + { + const unsub = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.ConnectionAck: { + unsub?.(); + onSubscribe?.(); + break; + } + } + }); + } + let subscriptionId: string | undefined; { - const unsubscribeEvents = subscriber?.on('message', (message) => { + const unsub = subscriber?.on('message', (message) => { switch (message.type) { + case MessageType.ConnectionAck: { + break; + } case MessageType.Subscribe: { if (message.payload.extensions?.hash !== hash) return; @@ -165,7 +177,7 @@ export const subscribeSelections = < selections, }); - unsubscribeEvents?.(); + unsub?.(); break; } } @@ -175,27 +187,24 @@ export const subscribeSelections = < const next = ({ data, errors, extensions }: ExecutionResult) => { if (data === undefined) return; - const error = errors?.length - ? GQtyError.fromGraphQLErrors(errors) - : undefined; + const result: FetchResult = { + data, + extensions: { ...extensions, ...queryPayload.extensions }, + }; + + if (errors?.length) { + result.error = GQtyError.fromGraphQLErrors(errors); + } debug?.dispatch({ cache, label: subscriptionId ? `[id=${subscriptionId}] [data]` : undefined, request: queryPayload, - result: { - data, - error, - extensions: { ...extensions, ...queryPayload.extensions }, - }, + result, selections, }); - fn({ - data, - error, - extensions: { ...extensions, ...queryPayload.extensions }, - }); + fn(result); }; const error = (error: GQtyError) => { @@ -252,17 +261,20 @@ export const subscribeSelections = < }) : () => new Promise((complete) => { - const aborter = new AbortController(); - - doFetch(queryPayload, { + const options: Parameters[1] = { ...fetchOptions, selections, - signal: aborter.signal, - }) + }; + + if (typeof AbortController !== 'undefined') { + const aborter = new AbortController(); + dispose = () => aborter.abort(); + options.signal = aborter.signal; + } + + doFetch(queryPayload, options) .then(next, error) .finally(complete); - - dispose = () => aborter.abort(); }) ); @@ -313,19 +325,20 @@ const doFetch = async < return new Promise((resolve, reject) => { // Selections are attached solely for useMetaState() doRetry(retryPolicy!, { - onLastTry: () => { - const promise = doDoFetch().then(resolve, reject); - - notifyRetry(promise, selections); - - return promise; + onLastTry: async () => { + try { + const promise = doDoFetch(); + notifyRetry(promise, selections); + resolve(await promise); + } catch (e) { + reject(e); + } }, - onRetry: () => { - const promise = doDoFetch().then(resolve); - + onRetry: async () => { + const promise = doDoFetch(); notifyRetry(promise, selections); - return promise; + resolve(await promise); }, }); }); diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 495014d32..8e4536cbc 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -53,8 +53,8 @@ export type Resolvers = { * This function subscribes to *cache changes*, termination of underlying * subscription (WebSocket/EventSource) does not stop this generator. * - * Calling `.return()` does not terminate pending promise. Use the `signal` - * option to exist the generator without waiting for the next update. + * Calling `.return()` does not terminate pending promises, use + * `onSubscribe()` to acquire the unsubscribe function. */ subscribe: SubscribeFn; }; @@ -93,12 +93,7 @@ export type SubscribeFn = < TData extends Record = Record >( fn: DataFn, - options?: SubscribeOptions & { - /** - * Interrupts the pending promise and exists the generator. - */ - signal?: AbortSignal; - } + options?: SubscribeOptions ) => AsyncGenerator; export type DataFn = (schema: TSchema) => void; @@ -181,6 +176,13 @@ export type SubscribeOptions = { onSelect?: NonNullable; + /** + * Called when a subscription is established, receives an unsubscribe + * function that immediately terminates the async generator and any pending + * promise. + */ + onSubscribe?: (unsubscribe: () => void) => void; + operationName?: string; }; @@ -209,9 +211,13 @@ export const createResolvers = ({ depthLimit, fetchPolicy, onSelect(selection, cache) { - selections.add(selection); + // Prevents infinite loop created by legacy functions + if (!selections.has(selection)) { + selections.add(selection); + parentContext?.onSelect(selection, cache); + } + onSelect?.(selection, cache); - parentContext?.onSelect(selection, cache); }, scalars, schema, @@ -253,6 +259,7 @@ export const createResolvers = ({ const createSubscriber = ({ fetchPolicy = defaultFetchPolicy, onSelect, + onSubscribe, operationName, retryPolicy = defaultRetryPoliy, }: SubscribeOptions = {}) => { @@ -278,17 +285,22 @@ export const createResolvers = ({ onNext?: (value: unknown) => void; } = {}) => { const unsubscibers = new Set<() => void>(); + const unsubscribe = () => { + for (const unsubscribe of unsubscibers) { + unsubscribe(); + } + }; if (onNext) { - const unsubscribe = context.cache.subscribe( + const unsub = context.cache.subscribe( [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), onNext ); - unsubscibers.add(unsubscribe); + unsubscibers.add(unsub); } - const unsubscribe = subscribeSelections( + const unsub = subscribeSelections( selections, ({ data, error, extensions }) => { if (error) { @@ -314,16 +326,15 @@ export const createResolvers = ({ debugger: debug, fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, operationName, + onSubscribe() { + onSubscribe?.(unsubscribe); + }, } ); - unsubscibers.add(unsubscribe); + unsubscibers.add(unsub); - return () => { - for (const unsubscribe of unsubscibers) { - unsubscribe(); - } - }; + return unsubscribe; }; return { accessor, context, selections, subscribe }; @@ -355,8 +366,17 @@ export const createResolvers = ({ * Initiates selected queries, mutations and subscriptions, then subscribes * to caches changes until the generator is closed. */ - subscribe: (fn, options): AsyncGenerator => { - const { accessor, selections, subscribe } = createSubscriber(options); + subscribe: (fn, { onSubscribe, ...options } = {}): AsyncGenerator => { + const { accessor, selections, subscribe } = createSubscriber({ + ...options, + onSubscribe: (unsubscribe) => { + onSubscribe?.(() => { + unsubscribe(); + done = true; + deferred?.resolve(); + }); + }, + }); fn(accessor); @@ -388,11 +408,6 @@ export const createResolvers = ({ done = true; } - options?.signal?.addEventListener('abort', () => { - done = true; - deferred?.resolve(); - }); - return { [Symbol.asyncIterator]() { return this; diff --git a/packages/gqty/src/Helpers/useMetaStateHack.ts b/packages/gqty/src/Helpers/useMetaStateHack.ts index 81ffe4d5a..fc9a99c7d 100644 --- a/packages/gqty/src/Helpers/useMetaStateHack.ts +++ b/packages/gqty/src/Helpers/useMetaStateHack.ts @@ -1,59 +1,51 @@ import type { Selection } from '../Selection'; -export class RetryEvent extends Event { - constructor( - readonly promise: Promise, - readonly selections: Set, - readonly isLastTry = false - ) { - super('gqty$retry'); - } -} +const retryEventListeners = new Set<(event: RetryEvent) => void>(); + +export type RetryEvent = { + readonly promise: Promise; + readonly selections: Set; + readonly isLastTry: boolean; +}; export const notifyRetry = ( promise: Promise, selections: Set, isLastTry = false ) => { - globalThis.dispatchEvent?.(new RetryEvent(promise, selections, isLastTry)); + for (const listener of retryEventListeners) { + listener({ promise, selections, isLastTry }); + } }; -export const subscribeRetry = ( - callback: (event: RetryEvent) => void -) => { - // @ts-expect-error A hack for useMetaState() - globalThis.addEventListener?.('gqty$retry', callback); +export const subscribeRetry = (callback: (event: RetryEvent) => void) => { + retryEventListeners.add(callback); return () => { - // @ts-expect-error A hack for useMetaState() - globalThis.removeEventListener?.('gqty$retry', callback); + retryEventListeners.delete(callback); }; }; -export class Fetchevent extends Event { - constructor( - readonly promise: Promise, - readonly selections: Set - ) { - super('gqty$fetch'); - } -} +const fetchEventListeners = new Set<(event: FetchEvent) => void>(); + +export type FetchEvent = { + readonly promise: Promise; + readonly selections: Set; +}; export const notifyFetch = ( promise: Promise, selections: Set ) => { - globalThis.dispatchEvent?.(new Fetchevent(promise, selections)); + for (const listener of fetchEventListeners) { + listener({ promise, selections }); + } }; -export const subscribeFetch = ( - callback: (event: Fetchevent) => void -) => { - // @ts-expect-error A hack for useMetaState() - globalThis.addEventListener?.('gqty$fetch', callback); +export const subscribeFetch = (callback: (event: FetchEvent) => void) => { + fetchEventListeners.add(callback); return () => { - // @ts-expect-error A hack for useMetaState() - globalThis.removeEventListener?.('gqty$fetch', callback); + fetchEventListeners.delete(callback); }; }; diff --git a/packages/gqty/src/Utils/pick.ts b/packages/gqty/src/Utils/pick.ts index fab9a7ae6..8538efc58 100644 --- a/packages/gqty/src/Utils/pick.ts +++ b/packages/gqty/src/Utils/pick.ts @@ -8,7 +8,7 @@ export const pick = ( ) => { const result: Record = {}; - for (const { ancestry, cacheKeys } of selections) { + for (const { ancestry } of selections) { let node = schema; for (const { key, input } of ancestry) { if (input) { @@ -19,11 +19,9 @@ export const pick = ( } if (node !== undefined) { - set(result, cacheKeys, node); + set(result, ancestry.map((s) => s.alias ?? s.key).join('.'), node); } } return result; }; - -// TODO: support arrays diff --git a/packages/gqty/test/FrailMap.test.ts b/packages/gqty/test/FrailMap.test.ts index 5300aeb26..b46cf87b5 100644 --- a/packages/gqty/test/FrailMap.test.ts +++ b/packages/gqty/test/FrailMap.test.ts @@ -8,7 +8,7 @@ describe('FrailMap', () => { const keys: string[] = []; const map = new FrailMap>(); - for (let i = 0; i < 50_000; i++) { + for (let i = 0; i < 100_000; i++) { const key = randomUUID(); const value: Record = { [randomUUID()]: randomUUID(), @@ -29,13 +29,17 @@ describe('FrailMap', () => { keys.push(key); // Give it some time for GC to happen. - if (i % 5000 === 0) { + if (i % 500 === 0) { await new Promise((r) => setTimeout(r, 100)); } - } - // Trigger keys disposal - map.keys(); + // Trigger keys disposal + map.keys(); + + if (map.size < keys.length) { + break; + } + } expect(map.size).toBeLessThan(keys.length); }); diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 2d15e0ddf..47b809e6f 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -12,9 +12,7 @@ describe('core#resolve', () => { resolve, schema: { query }, } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { - maxAge: 50, - }, + cacheOptions: { maxAge: 50 }, }); await expect( @@ -25,7 +23,7 @@ describe('core#resolve', () => { resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) ).resolves.toBe(1); - await new Promise((resolve) => setTimeout(resolve, 100)); + await new Promise((resolve) => setTimeout(resolve, 150)); let promise: Promise | undefined; resolve(({ query }) => query.nFetchCalls, { @@ -73,7 +71,7 @@ describe('core#resolve', () => { ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(1); - await new Promise((resolve) => setTimeout(resolve, 100)); + await new Promise((resolve) => setTimeout(resolve, 150)); expect(query.hello).toBe('hello world'); await expect( @@ -136,7 +134,7 @@ describe('core#resolve', () => { * When multiple tests are running, GC gets triggered more often and this * randomly fails. Should work when run individually. */ - it('only-if-cached', async () => { + xit('only-if-cached', async () => { const { resolve } = await createTestClient( undefined, undefined, diff --git a/packages/gqty/test/helpers.test.ts b/packages/gqty/test/helpers.test.ts index ff007d045..a77e06559 100644 --- a/packages/gqty/test/helpers.test.ts +++ b/packages/gqty/test/helpers.test.ts @@ -1317,11 +1317,14 @@ describe('get fields', () => { describe('prefetch', () => { test('returns promise only data not found', async () => { - const { prefetch } = await createTestClient(); + const { prefetch } = await createTestClient( + undefined, + undefined, + undefined, + { cacheOptions: { maxAge: 100 } } + ); - const resultPromise = prefetch((query) => { - return query.time; - }); + const resultPromise = prefetch((query) => query.time); expect(resultPromise).toBeInstanceOf(Promise); diff --git a/packages/gqty/test/subscriptions.test.ts b/packages/gqty/test/subscriptions.test.ts index 758172817..5a5372981 100644 --- a/packages/gqty/test/subscriptions.test.ts +++ b/packages/gqty/test/subscriptions.test.ts @@ -97,17 +97,18 @@ describe('core#subscribe', () => { const { subscribe } = await createTestClient(undefined, undefined, { subscriptions: true, }); - const aborter = new AbortController(); - - setTimeout(() => aborter.abort(), 100); for await (const _ of subscribe( ({ subscription }) => subscription.newNotification, - { signal: aborter.signal } + { + onSubscribe(unsubscribe) { + unsubscribe(); + }, + } )) { // no-op } - }, 500); + }, 1000); }); describe('legacy subscriptions', () => { diff --git a/packages/react/package.json b/packages/react/package.json index 66f3e0064..aa2bdbcf2 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -98,6 +98,8 @@ "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0", "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", + "graphql-sse": "^2.1.0", + "graphql-ws": "^5.11.3", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "lodash-es": "^4.17.21", @@ -114,12 +116,20 @@ "peerDependencies": { "gqty": "workspace:^2.0.4", "graphql": "*", + "graphql-sse": "^2.1.0", + "graphql-ws": "^5.11.3", "react": ">=16.14.0" }, "peerDependenciesMeta": { "graphql": { "optional": true }, + "graphql-sse": { + "optional": true + }, + "graphql-ws": { + "optional": true + }, "react": { "optional": true } diff --git a/packages/react/src/client.ts b/packages/react/src/client.ts index e6ef45c29..cffd9e301 100644 --- a/packages/react/src/client.ts +++ b/packages/react/src/client.ts @@ -158,9 +158,6 @@ export interface CreateReactClientOptions { * Default behaviour values */ defaults?: ReactClientDefaults; - - /** Debounce timer for fetchSelections, defaults to 10. */ - fetchDebounce?: number; } export interface ReactClient { @@ -179,16 +176,10 @@ export interface ReactClient { prepareQuery: PrepareQuery; } -export function createReactClient< - GeneratedSchema extends { - query: object; - mutation: object; - subscription: object; - } ->( - client: GQtyClient, +export function createReactClient( + client: GQtyClient, optsCreate: CreateReactClientOptions = {} -): ReactClient { +): ReactClient { const { suspense = false } = (optsCreate.defaults ||= {}); const { @@ -231,15 +222,12 @@ export function createReactClient< ); return { - useQuery: createUseQuery(client, opts), + useQuery: createUseQuery(client, opts), useRefetch: createUseRefetch(client, opts), - useLazyQuery: createUseLazyQuery(client, opts), - useTransactionQuery: createUseTransactionQuery( - client, - opts - ), - usePaginatedQuery: createUsePaginatedQuery(client, opts), - useMutation: createUseMutation(client, opts), + useLazyQuery: createUseLazyQuery(client, opts), + useTransactionQuery: createUseTransactionQuery(client, opts), + usePaginatedQuery: createUsePaginatedQuery(client, opts), + useMutation: createUseMutation(client, opts), graphql: createGraphqlHOC(client, opts), state: { get isLoading() { @@ -252,7 +240,7 @@ export function createReactClient< prepareReactRender, useHydrateCache, useMetaState: createUseMetaState(), - useSubscription: createUseSubscription(client), - prepareQuery: createPrepareQuery(client, opts), + useSubscription: createUseSubscription(client), + prepareQuery: createPrepareQuery(client, opts), }; } diff --git a/packages/react/src/meta/useMetaState.ts b/packages/react/src/meta/useMetaState.ts index 2e7423aa1..ac43916d3 100644 --- a/packages/react/src/meta/useMetaState.ts +++ b/packages/react/src/meta/useMetaState.ts @@ -79,10 +79,7 @@ export function createUseMetaState() { }, []); React.useEffect(() => { - const onRetryEvent = ({ - promise, - selections, - }: useMetaStateHack.RetryEvent) => { + return useMetaStateHack.subscribeRetry(({ promise, selections }) => { if (targetSelections.size > 0) { for (const selection of targetSelections) { if (selections.has(selection)) return; @@ -93,9 +90,7 @@ export function createUseMetaState() { retryPromise: promise, selections, }); - }; - - return useMetaStateHack.subscribeRetry(onRetryEvent); + }); }, []); return Object.freeze({ diff --git a/packages/react/src/query/hoc.tsx b/packages/react/src/query/hoc.tsx index 9c218885a..80fe5191d 100644 --- a/packages/react/src/query/hoc.tsx +++ b/packages/react/src/query/hoc.tsx @@ -1,13 +1,14 @@ +import { useRerender } from '@react-hookz/web'; import type { GQtyClient } from 'gqty'; import * as React from 'react'; import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface GraphQLHOCOptions { - suspense?: boolean | { fallback: React.SuspenseProps['fallback'] }; - staleWhileRevalidate?: boolean; onError?: OnErrorHandler; operationName?: string; + staleWhileRevalidate?: boolean; + suspense?: boolean | { fallback: React.SuspenseProps['fallback'] }; } export interface GraphQLHOC { @@ -30,6 +31,7 @@ export function createGraphqlHOC( { onError, operationName, + staleWhileRevalidate, suspense = defaultSuspense, }: GraphQLHOCOptions = {} ) { @@ -48,7 +50,8 @@ export function createGraphqlHOC( const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); }); - const fetchPromise = React.useRef>(); + const render = useRerender(); + React.useEffect(render, [staleWhileRevalidate]); let elm: React.ReactElement | null = null; try { @@ -61,19 +64,19 @@ export function createGraphqlHOC( return elm; } - fetchPromise.current = resolve(); + const promise = resolve().finally(render); if (onError) { - fetchPromise.current.catch(onError); + promise.catch(onError); } if (suspense === true) { - throw fetchPromise.current; + throw promise; } else if (typeof suspense === 'object') { const Suspender: React.FunctionComponent = () => { - if (!fetchPromise.current) return null; + if (!promise) return null; - throw fetchPromise.current; + throw promise; }; return ( diff --git a/packages/react/src/query/preparedQuery.ts b/packages/react/src/query/preparedQuery.ts index ac7eb3b8a..181f98a7c 100644 --- a/packages/react/src/query/preparedQuery.ts +++ b/packages/react/src/query/preparedQuery.ts @@ -1,5 +1,5 @@ import { BaseGeneratedSchema, GQtyClient, GQtyError } from 'gqty'; -import { useSyncExternalStore } from 'use-sync-external-store'; +import { useSyncExternalStore } from 'use-sync-external-store/shim'; import { createMemoryStore } from '../memoryStore'; import type { ReactClientOptionsWithDefaults } from '../utils'; diff --git a/packages/react/src/query/usePaginatedQuery.ts b/packages/react/src/query/usePaginatedQuery.ts index 6e4fb4f74..ad2f63eea 100644 --- a/packages/react/src/query/usePaginatedQuery.ts +++ b/packages/react/src/query/usePaginatedQuery.ts @@ -246,8 +246,6 @@ export const createUsePaginatedQuery = ); }, [fn, args, selections.size]); - // TODO: subscribe to cache changes (cache-first = render) - return React.useMemo( () => ({ data, args, fetchMore, isLoading: fetchPromise === undefined }), [data, args, fetchMore, fetchPromise] diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index c0e3bdbcf..4e4c3fb7e 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -74,7 +74,12 @@ export const createUseQuery = staleWhileRevalidate = defaultStaleWhileRevalidate, suspense = defaultSuspense, } = {}) => { - const { accessor, context, resolve, selections } = useMemo( + const { + accessor: { query }, + context, + resolve, + selections, + } = useMemo( () => client.createResolver({ operationName, retryPolicy: retry }), [operationName, retry] ); @@ -93,7 +98,7 @@ export const createUseQuery = if (prepare) { // TODO: See if `Error.captureStackTrace(error, useQuery);` is needed - prepare({ prepass, query: accessor.query }); + prepare({ prepass, query }); // Assuming the fetch always fulfills selections in prepare(), otherwise // this may cause an infinite render loop. @@ -105,10 +110,10 @@ export const createUseQuery = const fetchQuery = useCallback(async () => { setError(undefined); - const fetchPromise = resolve(); - setFetchPromise(fetchPromise); - try { + const fetchPromise = resolve(); + setFetchPromise(fetchPromise); + await fetchPromise; } catch (error) { const theError = GQtyError.create(error); @@ -123,12 +128,10 @@ export const createUseQuery = } }, [onError, resolve]); - { - // Invoke it on client side automatically. - useEffect(() => { - fetchQuery(); - }, [fetchQuery]); - } + // Invoke it on client side automatically. + useEffect(() => { + fetchQuery(); + }, [fetchQuery]); // staleWhileRevalidate useEffect(() => { @@ -142,15 +145,15 @@ export const createUseQuery = // happen if any of the accessed cache value is stale. useWindowFocusEffect(render, { enabled: refetchOnWindowVisible }); - // Re-renders on cache changes from others - useEffect( - () => - context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - render - ), - [selections, selections.size] - ); + // Rerenders on cache changes from others + useEffect(() => { + if (selections.size === 0) return; + + return context.cache.subscribe( + [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), + render + ); + }, [selections, selections.size]); } const $refetch = useCallback(() => { @@ -159,13 +162,21 @@ export const createUseQuery = const promise = fetchQuery(); context.shouldFetch = prevShouldFetch; + promise.catch(console.error); + return promise; }, [fetchQuery]); - const $state = { - isLoading: fetchPromise !== undefined, - error, - }; - - return { ...accessor, $refetch, $state }; + return useMemo(() => { + return new Proxy( + Object.freeze({ + $refetch, + $state: { isLoading: fetchPromise !== undefined, error }, + }), + { + get: (target, key, proxy) => + Reflect.get(target, key, proxy) ?? Reflect.get(query, key), + } + ); + }, [query, $refetch, fetchPromise, error]); }; diff --git a/packages/react/test/graphqlHOC.test.tsx b/packages/react/test/graphqlHOC.test.tsx index 433c21045..1b49f11a9 100644 --- a/packages/react/test/graphqlHOC.test.tsx +++ b/packages/react/test/graphqlHOC.test.tsx @@ -7,14 +7,7 @@ import { createReactTestClient } from './utils'; test('Basic Non-Suspense', async () => { const { query, graphql } = await createReactTestClient(); - const Comp = graphql( - () => { - return

{query.hello}

; - }, - { - suspense: false, - } - ); + const Comp = graphql(() =>

{query.hello}

, { suspense: false }); const { container } = render(); diff --git a/packages/react/test/useQuery.test.tsx b/packages/react/test/useQuery.test.tsx index a22cba78a..9e3d90563 100644 --- a/packages/react/test/useQuery.test.tsx +++ b/packages/react/test/useQuery.test.tsx @@ -1,4 +1,4 @@ -import { renderHook } from '@testing-library/react-hooks'; +import { act, renderHook } from '@testing-library/react-hooks'; import { createReactTestClient } from './utils'; describe('useQuery', () => { @@ -32,21 +32,23 @@ describe('useQuery', () => { const query = useQuery({ suspense: false }); return { - hello: query.hello, + time: query.time, $state: query.$state, $refetch: query.$refetch, }; }); - await waitFor(() => result.current.$state.isLoading === true); - await waitFor(() => result.current.$state.isLoading === false); + expect(result.current.time).toBe(undefined); - result.current.$refetch(); + await waitFor(() => result.current.time !== undefined); - await waitFor(() => result.current.$state.isLoading === true); - await waitFor(() => result.current.$state.isLoading === false); + const time = result.current.time; - expect(result.current.hello).toBe('hello world'); + await act(async () => { + await result.current.$refetch(); + }); + + expect(result.current.time).not.toBe(time); }); it('should fetch with suspense', async () => { diff --git a/packages/react/test/utils.ts b/packages/react/test/utils.ts index 7b0b659a5..cbca31725 100644 --- a/packages/react/test/utils.ts +++ b/packages/react/test/utils.ts @@ -1,33 +1,18 @@ import '@testing-library/jest-dom/extend-expect'; -import { merge } from 'lodash-es'; -import { createTestApp, gql } from 'test-utils'; -import { generate } from '../../cli/src/generate'; import { ClientOptions, createClient, - DeepPartial, QueryFetcher, Schema, SchemaUnionsKey, -} from '../../gqty/src/index'; -import { createSubscriptionsClient } from '../../subscriptions/src/index'; +} from 'gqty'; +import { createClient as createSubscriptionsClient } from 'graphql-ws'; +import { merge } from 'lodash-es'; +import { createTestApp, gql } from 'test-utils'; +import type { PartialDeep } from 'type-fest'; +import { generate } from '../../cli/src/generate'; import { createReactClient } from '../src'; -type ObjectTypesNames = 'Human' | 'Query' | 'Mutation' | 'Subscription'; - -type ObjectTypes = { - Human: Human; - Query: { - __typename: 'Query'; - }; - Mutation: { - __typename: 'Mutation'; - }; - Subscription: { - __typename: 'Subscription'; - }; -}; - export type Maybe = T | null; export type Human = { __typename: 'Human'; @@ -72,10 +57,10 @@ export interface TestClientConfig { } export const createReactTestClient = async ( - addedToGeneratedSchema?: DeepPartial, + addedToGeneratedSchema?: PartialDeep, queryFetcher?: QueryFetcher, config?: TestClientConfig, - clientConfig: Partial> = {} + clientConfig: Partial = {} ) => { let dogId = 0; const dogs: { name: string; id: number }[] = [ @@ -90,7 +75,7 @@ export const createReactTestClient = async ( ]; let humanId = 0; const humanIds: Record = {}; - const createHuman = (name: string = 'default') => { + const createHuman = (name = 'default') => { return { id: (humanIds[name] ??= ++humanId), name, @@ -252,17 +237,18 @@ export const createReactTestClient = async ( ); if (queryFetcher == null) { - queryFetcher = (query, variables) => { + queryFetcher = ({ query, variables, operationName }) => { return client.query(query, { variables, + operationName, }); }; } const subscriptionsClient = config?.subscriptions ? createSubscriptionsClient({ - wsEndpoint: client.endpoint.replace('http:', 'ws:'), - reconnect: false, + url: client.endpoint.replace('http:', 'ws:'), + retryAttempts: 0, }) : undefined; @@ -291,16 +277,16 @@ export const createReactTestClient = async ( }; const core = Object.assign( - createClient({ + createClient({ schema: merge(generatedSchema, [addedToGeneratedSchema]) as Schema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, ...clientConfig, }), - { - client, - } + { client } ); const react = createReactClient(core, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b38dca71b..c6f18e785 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,7 +141,7 @@ importers: graphql-ez: specifier: ^0.16.0 version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - lodash: + lodash-es: specifier: ^4.17.21 version: 4.17.21 randomstring: @@ -151,9 +151,9 @@ importers: specifier: workspace:^0.1.0 version: link:../../internal/test-utils devDependencies: - '@types/lodash': - specifier: ^4.14.191 - version: 4.14.191 + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.7 '@types/node': specifier: ^18.15.5 version: 18.15.5 @@ -812,6 +812,9 @@ importers: flatted: specifier: ^3.2.7 version: 3.2.7 + just-extend: + specifier: ^6.2.0 + version: 6.2.0 just-has: specifier: ^2.3.0 version: 2.3.0 @@ -1024,6 +1027,12 @@ importers: graphql: specifier: ^16.6.0 version: 16.6.0 + graphql-sse: + specifier: ^2.1.0 + version: 2.1.0(graphql@16.6.0) + graphql-ws: + specifier: ^5.11.3 + version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) @@ -10937,6 +10946,15 @@ packages: transitivePeerDependencies: - '@types/node' + /graphql-sse@2.1.0(graphql@16.6.0): + resolution: {integrity: sha512-N1e/MqBzAAw27NZ8rsX3SBbgJ/gUBTOnkn9C1wiS7HpchQopPlURDjH3ROSuHqRePepD39itQi1Woy+gIjvz8w==} + engines: {node: '>=12'} + peerDependencies: + graphql: '>=0.11 <=16' + dependencies: + graphql: 16.6.0 + dev: true + /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -10963,7 +10981,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: '*' dependencies: graphql: 16.6.0 @@ -12600,6 +12618,9 @@ packages: graceful-fs: 4.2.10 dev: false + /just-extend@6.2.0: + resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + /just-has@2.3.0: resolution: {integrity: sha512-JzxCot/ETqLDullSSC5OtT/PLWiqgRNO5z33gVit6BoCXe/6BHut33o9ZunG5jQSqeY4EyzFnl8Wqc7S8Ci/wQ==} @@ -12745,7 +12766,6 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: true /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -18309,6 +18329,7 @@ packages: '@gqty/utils': link:packages/utils/dist flatted: 3.2.7 graphql: 17.0.0-alpha.2 + just-extend: 6.2.0 just-has: 2.3.0 just-memoize: 2.2.0 just-safe-get: 4.2.0 From 22c8907540b23a0794e2c2dbb45d05949849718a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 10 Mar 2023 23:51:12 +0800 Subject: [PATCH 013/122] fix: facebook/react#26230 --- package.json | 3 +++ patches/use-sync-external-store@1.2.0.patch | 25 +++++++++++++++++++++ pnpm-lock.yaml | 6 +++++ 3 files changed, 34 insertions(+) create mode 100644 patches/use-sync-external-store@1.2.0.patch diff --git a/package.json b/package.json index 6ad720417..033b1fbca 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,9 @@ "mermaid@>=8.0.0 <9.1.2": ">=9.1.2", "mdx-mermaid@<1.3.0": ">=1.3.0", "d3-color@<3.1.0": ">=3.1.0" + }, + "patchedDependencies": { + "use-sync-external-store@1.2.0": "patches/use-sync-external-store@1.2.0.patch" } } } diff --git a/patches/use-sync-external-store@1.2.0.patch b/patches/use-sync-external-store@1.2.0.patch new file mode 100644 index 000000000..b3455cb0e --- /dev/null +++ b/patches/use-sync-external-store@1.2.0.patch @@ -0,0 +1,25 @@ +diff --git a/package.json b/package.json +index 7006692030f37a5ae24eced61b61c6357c5bb034..39416e1933f8c39b5bc9794fbf00fb1f20804868 100644 +--- a/package.json ++++ b/package.json +@@ -17,6 +17,20 @@ + "shim/", + "cjs/" + ], ++ "exports": { ++ ".": "./index.js", ++ "./index": "./index.js", ++ "./index.native": "./index.native.js", ++ "./with-selector": "./with-selector.js", ++ "./shim": "./shim/index.js", ++ "./shim/index": "./shim/index.js", ++ "./shim/index.native": "./shim/index.native.js", ++ "./shim/with-selector": "./shim/with-selector.js", ++ "./shim/*": "./shim/*", ++ "./cjs/*": "./cjs/*", ++ "./src/*": "./src/*", ++ "./package.json": "./package.json" ++ }, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6f18e785..2298a9368 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,11 @@ overrides: mdx-mermaid@<1.3.0: '>=1.3.0' d3-color@<3.1.0: '>=3.1.0' +patchedDependencies: + use-sync-external-store@1.2.0: + hash: zifctuasxutqued7wp7lp4536i + path: patches/use-sync-external-store@1.2.0.patch + importers: .: @@ -17737,6 +17742,7 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 + patched: true /use@3.1.1: resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} From 79a1f611c6e8b1be6c728ad60a01186716c2a6b1 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 11 Mar 2023 03:03:44 +0800 Subject: [PATCH 014/122] fix: generated subscription client --- examples/ez-react-next/src/gqty/index.ts | 46 +- .../src/gqty/schema.generated.ts | 12 - examples/github/src/gqty/schema.generated.ts | 1376 ----------------- examples/react/package.json | 5 + examples/react/src/graphql/gqty.ts | 31 +- .../react/src/graphql/schema.generated.ts | 18 - examples/vite-example/src/gqty/index.ts | 51 +- .../vite-example/src/gqty/schema.generated.ts | 22 - .../graphql-17/src/schema.generated.ts | 7 - internal/website/docs/cli/codegen.mdx | 28 +- internal/website/docs/client/config.mdx | 59 +- internal/website/docs/client/persistence.mdx | 24 +- .../website/docs/client/subscriptions.mdx | 56 +- internal/website/docs/development/logger.mdx | 12 +- packages/cli/src/generate.ts | 3 +- packages/cli/test/generate.test.ts | 6 +- packages/gqty/test/utils.ts | 4 +- pnpm-lock.yaml | 617 ++------ 18 files changed, 266 insertions(+), 2111 deletions(-) diff --git a/examples/ez-react-next/src/gqty/index.ts b/examples/ez-react-next/src/gqty/index.ts index 42d52d461..601ce9b0e 100644 --- a/examples/ez-react-next/src/gqty/index.ts +++ b/examples/ez-react-next/src/gqty/index.ts @@ -9,8 +9,6 @@ import { generatedSchema, GeneratedSchema, scalarsEnumsHash, - SchemaObjectTypes, - SchemaObjectTypesNames, } from './schema.generated'; const endpoint = @@ -19,8 +17,7 @@ const endpoint = : 'http://localhost:3000/api/graphql'; const queryFetcher: QueryFetcher = async function ( - query, - variables, + { query, variables, operationName }, fetchOptions ) { const response = await fetch(endpoint, { @@ -31,6 +28,7 @@ const queryFetcher: QueryFetcher = async function ( body: JSON.stringify({ query, variables, + operationName, }), ...fetchOptions, }); @@ -40,14 +38,12 @@ const queryFetcher: QueryFetcher = async function ( return json; }; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); if (typeof window !== 'undefined') { @@ -59,9 +55,9 @@ if (typeof window !== 'undefined') { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; +export * from './schema.generated'; export { query, mutation, mutate, subscription, resolved, refetch, track }; - -const { +export { graphql, useQuery, usePaginatedQuery, @@ -73,18 +69,9 @@ const { prepareReactRender, useHydrateCache, prepareQuery, -} = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); +}; -export { +const { graphql, useQuery, usePaginatedQuery, @@ -96,6 +83,13 @@ export { prepareReactRender, useHydrateCache, prepareQuery, -}; +} = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, -export * from './schema.generated'; + // Set this flag based on your needs + staleWhileRevalidate: false, + }, +}); diff --git a/examples/ez-react-next/src/gqty/schema.generated.ts b/examples/ez-react-next/src/gqty/schema.generated.ts index ce5a5af65..8d82185b3 100644 --- a/examples/ez-react-next/src/gqty/schema.generated.ts +++ b/examples/ez-react-next/src/gqty/schema.generated.ts @@ -62,18 +62,6 @@ export interface Subscription { __typename?: 'Subscription'; } -export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; - User: User; -} -export type SchemaObjectTypesNames = - | 'Mutation' - | 'Query' - | 'Subscription' - | 'User'; - export interface GeneratedSchema { query: Query; mutation: Mutation; diff --git a/examples/github/src/gqty/schema.generated.ts b/examples/github/src/gqty/schema.generated.ts index d927e7358..5a2d32e08 100644 --- a/examples/github/src/gqty/schema.generated.ts +++ b/examples/github/src/gqty/schema.generated.ts @@ -50362,1382 +50362,6 @@ export interface Subscription { __typename?: 'Subscription'; } -export interface SchemaObjectTypes { - AcceptEnterpriseAdministratorInvitationPayload: AcceptEnterpriseAdministratorInvitationPayload; - AcceptTopicSuggestionPayload: AcceptTopicSuggestionPayload; - ActorLocation: ActorLocation; - AddAssigneesToAssignablePayload: AddAssigneesToAssignablePayload; - AddCommentPayload: AddCommentPayload; - AddDiscussionCommentPayload: AddDiscussionCommentPayload; - AddEnterpriseSupportEntitlementPayload: AddEnterpriseSupportEntitlementPayload; - AddLabelsToLabelablePayload: AddLabelsToLabelablePayload; - AddProjectCardPayload: AddProjectCardPayload; - AddProjectColumnPayload: AddProjectColumnPayload; - AddProjectNextItemPayload: AddProjectNextItemPayload; - AddPullRequestReviewCommentPayload: AddPullRequestReviewCommentPayload; - AddPullRequestReviewPayload: AddPullRequestReviewPayload; - AddPullRequestReviewThreadPayload: AddPullRequestReviewThreadPayload; - AddReactionPayload: AddReactionPayload; - AddStarPayload: AddStarPayload; - AddUpvotePayload: AddUpvotePayload; - AddVerifiableDomainPayload: AddVerifiableDomainPayload; - AddedToProjectEvent: AddedToProjectEvent; - App: App; - ApproveDeploymentsPayload: ApproveDeploymentsPayload; - ApproveVerifiableDomainPayload: ApproveVerifiableDomainPayload; - ArchiveRepositoryPayload: ArchiveRepositoryPayload; - AssignedEvent: AssignedEvent; - AutoMergeDisabledEvent: AutoMergeDisabledEvent; - AutoMergeEnabledEvent: AutoMergeEnabledEvent; - AutoMergeRequest: AutoMergeRequest; - AutoRebaseEnabledEvent: AutoRebaseEnabledEvent; - AutoSquashEnabledEvent: AutoSquashEnabledEvent; - AutomaticBaseChangeFailedEvent: AutomaticBaseChangeFailedEvent; - AutomaticBaseChangeSucceededEvent: AutomaticBaseChangeSucceededEvent; - BaseRefChangedEvent: BaseRefChangedEvent; - BaseRefDeletedEvent: BaseRefDeletedEvent; - BaseRefForcePushedEvent: BaseRefForcePushedEvent; - Blame: Blame; - BlameRange: BlameRange; - Blob: Blob; - Bot: Bot; - BranchProtectionRule: BranchProtectionRule; - BranchProtectionRuleConflict: BranchProtectionRuleConflict; - BranchProtectionRuleConflictConnection: BranchProtectionRuleConflictConnection; - BranchProtectionRuleConflictEdge: BranchProtectionRuleConflictEdge; - BranchProtectionRuleConnection: BranchProtectionRuleConnection; - BranchProtectionRuleEdge: BranchProtectionRuleEdge; - BypassForcePushAllowance: BypassForcePushAllowance; - BypassForcePushAllowanceConnection: BypassForcePushAllowanceConnection; - BypassForcePushAllowanceEdge: BypassForcePushAllowanceEdge; - BypassPullRequestAllowance: BypassPullRequestAllowance; - BypassPullRequestAllowanceConnection: BypassPullRequestAllowanceConnection; - BypassPullRequestAllowanceEdge: BypassPullRequestAllowanceEdge; - CVSS: CVSS; - CWE: CWE; - CWEConnection: CWEConnection; - CWEEdge: CWEEdge; - CancelEnterpriseAdminInvitationPayload: CancelEnterpriseAdminInvitationPayload; - CancelSponsorshipPayload: CancelSponsorshipPayload; - ChangeUserStatusPayload: ChangeUserStatusPayload; - CheckAnnotation: CheckAnnotation; - CheckAnnotationConnection: CheckAnnotationConnection; - CheckAnnotationEdge: CheckAnnotationEdge; - CheckAnnotationPosition: CheckAnnotationPosition; - CheckAnnotationSpan: CheckAnnotationSpan; - CheckRun: CheckRun; - CheckRunConnection: CheckRunConnection; - CheckRunEdge: CheckRunEdge; - CheckStep: CheckStep; - CheckStepConnection: CheckStepConnection; - CheckStepEdge: CheckStepEdge; - CheckSuite: CheckSuite; - CheckSuiteConnection: CheckSuiteConnection; - CheckSuiteEdge: CheckSuiteEdge; - ClearLabelsFromLabelablePayload: ClearLabelsFromLabelablePayload; - CloneProjectPayload: CloneProjectPayload; - CloneTemplateRepositoryPayload: CloneTemplateRepositoryPayload; - CloseIssuePayload: CloseIssuePayload; - ClosePullRequestPayload: ClosePullRequestPayload; - ClosedEvent: ClosedEvent; - CodeOfConduct: CodeOfConduct; - CommentDeletedEvent: CommentDeletedEvent; - Commit: Commit; - CommitComment: CommitComment; - CommitCommentConnection: CommitCommentConnection; - CommitCommentEdge: CommitCommentEdge; - CommitCommentThread: CommitCommentThread; - CommitConnection: CommitConnection; - CommitContributionsByRepository: CommitContributionsByRepository; - CommitEdge: CommitEdge; - CommitHistoryConnection: CommitHistoryConnection; - ConnectedEvent: ConnectedEvent; - ContributionCalendar: ContributionCalendar; - ContributionCalendarDay: ContributionCalendarDay; - ContributionCalendarMonth: ContributionCalendarMonth; - ContributionCalendarWeek: ContributionCalendarWeek; - ContributionsCollection: ContributionsCollection; - ConvertProjectCardNoteToIssuePayload: ConvertProjectCardNoteToIssuePayload; - ConvertPullRequestToDraftPayload: ConvertPullRequestToDraftPayload; - ConvertToDraftEvent: ConvertToDraftEvent; - ConvertedNoteToIssueEvent: ConvertedNoteToIssueEvent; - ConvertedToDiscussionEvent: ConvertedToDiscussionEvent; - CreateBranchProtectionRulePayload: CreateBranchProtectionRulePayload; - CreateCheckRunPayload: CreateCheckRunPayload; - CreateCheckSuitePayload: CreateCheckSuitePayload; - CreateCommitOnBranchPayload: CreateCommitOnBranchPayload; - CreateDiscussionPayload: CreateDiscussionPayload; - CreateEnterpriseOrganizationPayload: CreateEnterpriseOrganizationPayload; - CreateEnvironmentPayload: CreateEnvironmentPayload; - CreateIpAllowListEntryPayload: CreateIpAllowListEntryPayload; - CreateIssuePayload: CreateIssuePayload; - CreateProjectPayload: CreateProjectPayload; - CreatePullRequestPayload: CreatePullRequestPayload; - CreateRefPayload: CreateRefPayload; - CreateRepositoryPayload: CreateRepositoryPayload; - CreateSponsorshipPayload: CreateSponsorshipPayload; - CreateTeamDiscussionCommentPayload: CreateTeamDiscussionCommentPayload; - CreateTeamDiscussionPayload: CreateTeamDiscussionPayload; - CreatedCommitContribution: CreatedCommitContribution; - CreatedCommitContributionConnection: CreatedCommitContributionConnection; - CreatedCommitContributionEdge: CreatedCommitContributionEdge; - CreatedIssueContribution: CreatedIssueContribution; - CreatedIssueContributionConnection: CreatedIssueContributionConnection; - CreatedIssueContributionEdge: CreatedIssueContributionEdge; - CreatedPullRequestContribution: CreatedPullRequestContribution; - CreatedPullRequestContributionConnection: CreatedPullRequestContributionConnection; - CreatedPullRequestContributionEdge: CreatedPullRequestContributionEdge; - CreatedPullRequestReviewContribution: CreatedPullRequestReviewContribution; - CreatedPullRequestReviewContributionConnection: CreatedPullRequestReviewContributionConnection; - CreatedPullRequestReviewContributionEdge: CreatedPullRequestReviewContributionEdge; - CreatedRepositoryContribution: CreatedRepositoryContribution; - CreatedRepositoryContributionConnection: CreatedRepositoryContributionConnection; - CreatedRepositoryContributionEdge: CreatedRepositoryContributionEdge; - CrossReferencedEvent: CrossReferencedEvent; - DeclineTopicSuggestionPayload: DeclineTopicSuggestionPayload; - DeleteBranchProtectionRulePayload: DeleteBranchProtectionRulePayload; - DeleteDeploymentPayload: DeleteDeploymentPayload; - DeleteDiscussionCommentPayload: DeleteDiscussionCommentPayload; - DeleteDiscussionPayload: DeleteDiscussionPayload; - DeleteEnvironmentPayload: DeleteEnvironmentPayload; - DeleteIpAllowListEntryPayload: DeleteIpAllowListEntryPayload; - DeleteIssueCommentPayload: DeleteIssueCommentPayload; - DeleteIssuePayload: DeleteIssuePayload; - DeleteProjectCardPayload: DeleteProjectCardPayload; - DeleteProjectColumnPayload: DeleteProjectColumnPayload; - DeleteProjectNextItemPayload: DeleteProjectNextItemPayload; - DeleteProjectPayload: DeleteProjectPayload; - DeletePullRequestReviewCommentPayload: DeletePullRequestReviewCommentPayload; - DeletePullRequestReviewPayload: DeletePullRequestReviewPayload; - DeleteRefPayload: DeleteRefPayload; - DeleteTeamDiscussionCommentPayload: DeleteTeamDiscussionCommentPayload; - DeleteTeamDiscussionPayload: DeleteTeamDiscussionPayload; - DeleteVerifiableDomainPayload: DeleteVerifiableDomainPayload; - DemilestonedEvent: DemilestonedEvent; - DeployKey: DeployKey; - DeployKeyConnection: DeployKeyConnection; - DeployKeyEdge: DeployKeyEdge; - DeployedEvent: DeployedEvent; - Deployment: Deployment; - DeploymentConnection: DeploymentConnection; - DeploymentEdge: DeploymentEdge; - DeploymentEnvironmentChangedEvent: DeploymentEnvironmentChangedEvent; - DeploymentProtectionRule: DeploymentProtectionRule; - DeploymentProtectionRuleConnection: DeploymentProtectionRuleConnection; - DeploymentProtectionRuleEdge: DeploymentProtectionRuleEdge; - DeploymentRequest: DeploymentRequest; - DeploymentRequestConnection: DeploymentRequestConnection; - DeploymentRequestEdge: DeploymentRequestEdge; - DeploymentReview: DeploymentReview; - DeploymentReviewConnection: DeploymentReviewConnection; - DeploymentReviewEdge: DeploymentReviewEdge; - DeploymentReviewerConnection: DeploymentReviewerConnection; - DeploymentReviewerEdge: DeploymentReviewerEdge; - DeploymentStatus: DeploymentStatus; - DeploymentStatusConnection: DeploymentStatusConnection; - DeploymentStatusEdge: DeploymentStatusEdge; - DisablePullRequestAutoMergePayload: DisablePullRequestAutoMergePayload; - DisconnectedEvent: DisconnectedEvent; - Discussion: Discussion; - DiscussionCategory: DiscussionCategory; - DiscussionCategoryConnection: DiscussionCategoryConnection; - DiscussionCategoryEdge: DiscussionCategoryEdge; - DiscussionComment: DiscussionComment; - DiscussionCommentConnection: DiscussionCommentConnection; - DiscussionCommentEdge: DiscussionCommentEdge; - DiscussionConnection: DiscussionConnection; - DiscussionEdge: DiscussionEdge; - DismissPullRequestReviewPayload: DismissPullRequestReviewPayload; - DismissRepositoryVulnerabilityAlertPayload: DismissRepositoryVulnerabilityAlertPayload; - EnablePullRequestAutoMergePayload: EnablePullRequestAutoMergePayload; - Enterprise: Enterprise; - EnterpriseAdministratorConnection: EnterpriseAdministratorConnection; - EnterpriseAdministratorEdge: EnterpriseAdministratorEdge; - EnterpriseAdministratorInvitation: EnterpriseAdministratorInvitation; - EnterpriseAdministratorInvitationConnection: EnterpriseAdministratorInvitationConnection; - EnterpriseAdministratorInvitationEdge: EnterpriseAdministratorInvitationEdge; - EnterpriseBillingInfo: EnterpriseBillingInfo; - EnterpriseIdentityProvider: EnterpriseIdentityProvider; - EnterpriseMemberConnection: EnterpriseMemberConnection; - EnterpriseMemberEdge: EnterpriseMemberEdge; - EnterpriseOrganizationMembershipConnection: EnterpriseOrganizationMembershipConnection; - EnterpriseOrganizationMembershipEdge: EnterpriseOrganizationMembershipEdge; - EnterpriseOutsideCollaboratorConnection: EnterpriseOutsideCollaboratorConnection; - EnterpriseOutsideCollaboratorEdge: EnterpriseOutsideCollaboratorEdge; - EnterpriseOwnerInfo: EnterpriseOwnerInfo; - EnterprisePendingCollaboratorConnection: EnterprisePendingCollaboratorConnection; - EnterprisePendingCollaboratorEdge: EnterprisePendingCollaboratorEdge; - EnterprisePendingMemberInvitationConnection: EnterprisePendingMemberInvitationConnection; - EnterprisePendingMemberInvitationEdge: EnterprisePendingMemberInvitationEdge; - EnterpriseRepositoryInfo: EnterpriseRepositoryInfo; - EnterpriseRepositoryInfoConnection: EnterpriseRepositoryInfoConnection; - EnterpriseRepositoryInfoEdge: EnterpriseRepositoryInfoEdge; - EnterpriseServerInstallation: EnterpriseServerInstallation; - EnterpriseServerInstallationConnection: EnterpriseServerInstallationConnection; - EnterpriseServerInstallationEdge: EnterpriseServerInstallationEdge; - EnterpriseServerUserAccount: EnterpriseServerUserAccount; - EnterpriseServerUserAccountConnection: EnterpriseServerUserAccountConnection; - EnterpriseServerUserAccountEdge: EnterpriseServerUserAccountEdge; - EnterpriseServerUserAccountEmail: EnterpriseServerUserAccountEmail; - EnterpriseServerUserAccountEmailConnection: EnterpriseServerUserAccountEmailConnection; - EnterpriseServerUserAccountEmailEdge: EnterpriseServerUserAccountEmailEdge; - EnterpriseServerUserAccountsUpload: EnterpriseServerUserAccountsUpload; - EnterpriseServerUserAccountsUploadConnection: EnterpriseServerUserAccountsUploadConnection; - EnterpriseServerUserAccountsUploadEdge: EnterpriseServerUserAccountsUploadEdge; - EnterpriseUserAccount: EnterpriseUserAccount; - EnterpriseUserAccountConnection: EnterpriseUserAccountConnection; - EnterpriseUserAccountEdge: EnterpriseUserAccountEdge; - Environment: Environment; - EnvironmentConnection: EnvironmentConnection; - EnvironmentEdge: EnvironmentEdge; - ExternalIdentity: ExternalIdentity; - ExternalIdentityConnection: ExternalIdentityConnection; - ExternalIdentityEdge: ExternalIdentityEdge; - ExternalIdentitySamlAttributes: ExternalIdentitySamlAttributes; - ExternalIdentityScimAttributes: ExternalIdentityScimAttributes; - FollowUserPayload: FollowUserPayload; - FollowerConnection: FollowerConnection; - FollowingConnection: FollowingConnection; - FundingLink: FundingLink; - GenericHovercardContext: GenericHovercardContext; - Gist: Gist; - GistComment: GistComment; - GistCommentConnection: GistCommentConnection; - GistCommentEdge: GistCommentEdge; - GistConnection: GistConnection; - GistEdge: GistEdge; - GistFile: GistFile; - GitActor: GitActor; - GitActorConnection: GitActorConnection; - GitActorEdge: GitActorEdge; - GitHubMetadata: GitHubMetadata; - GpgSignature: GpgSignature; - HeadRefDeletedEvent: HeadRefDeletedEvent; - HeadRefForcePushedEvent: HeadRefForcePushedEvent; - HeadRefRestoredEvent: HeadRefRestoredEvent; - Hovercard: Hovercard; - InviteEnterpriseAdminPayload: InviteEnterpriseAdminPayload; - IpAllowListEntry: IpAllowListEntry; - IpAllowListEntryConnection: IpAllowListEntryConnection; - IpAllowListEntryEdge: IpAllowListEntryEdge; - Issue: Issue; - IssueComment: IssueComment; - IssueCommentConnection: IssueCommentConnection; - IssueCommentEdge: IssueCommentEdge; - IssueConnection: IssueConnection; - IssueContributionsByRepository: IssueContributionsByRepository; - IssueEdge: IssueEdge; - IssueTemplate: IssueTemplate; - IssueTimelineConnection: IssueTimelineConnection; - IssueTimelineItemEdge: IssueTimelineItemEdge; - IssueTimelineItemsConnection: IssueTimelineItemsConnection; - IssueTimelineItemsEdge: IssueTimelineItemsEdge; - JoinedGitHubContribution: JoinedGitHubContribution; - Label: Label; - LabelConnection: LabelConnection; - LabelEdge: LabelEdge; - LabeledEvent: LabeledEvent; - Language: Language; - LanguageConnection: LanguageConnection; - LanguageEdge: LanguageEdge; - License: License; - LicenseRule: LicenseRule; - LinkRepositoryToProjectPayload: LinkRepositoryToProjectPayload; - LockLockablePayload: LockLockablePayload; - LockedEvent: LockedEvent; - Mannequin: Mannequin; - MarkDiscussionCommentAsAnswerPayload: MarkDiscussionCommentAsAnswerPayload; - MarkFileAsViewedPayload: MarkFileAsViewedPayload; - MarkPullRequestReadyForReviewPayload: MarkPullRequestReadyForReviewPayload; - MarkedAsDuplicateEvent: MarkedAsDuplicateEvent; - MarketplaceCategory: MarketplaceCategory; - MarketplaceListing: MarketplaceListing; - MarketplaceListingConnection: MarketplaceListingConnection; - MarketplaceListingEdge: MarketplaceListingEdge; - MembersCanDeleteReposClearAuditEntry: MembersCanDeleteReposClearAuditEntry; - MembersCanDeleteReposDisableAuditEntry: MembersCanDeleteReposDisableAuditEntry; - MembersCanDeleteReposEnableAuditEntry: MembersCanDeleteReposEnableAuditEntry; - MentionedEvent: MentionedEvent; - MergeBranchPayload: MergeBranchPayload; - MergePullRequestPayload: MergePullRequestPayload; - MergedEvent: MergedEvent; - Milestone: Milestone; - MilestoneConnection: MilestoneConnection; - MilestoneEdge: MilestoneEdge; - MilestonedEvent: MilestonedEvent; - MinimizeCommentPayload: MinimizeCommentPayload; - MoveProjectCardPayload: MoveProjectCardPayload; - MoveProjectColumnPayload: MoveProjectColumnPayload; - MovedColumnsInProjectEvent: MovedColumnsInProjectEvent; - Mutation: Mutation; - OIDCProvider: OIDCProvider; - OauthApplicationCreateAuditEntry: OauthApplicationCreateAuditEntry; - OrgAddBillingManagerAuditEntry: OrgAddBillingManagerAuditEntry; - OrgAddMemberAuditEntry: OrgAddMemberAuditEntry; - OrgBlockUserAuditEntry: OrgBlockUserAuditEntry; - OrgConfigDisableCollaboratorsOnlyAuditEntry: OrgConfigDisableCollaboratorsOnlyAuditEntry; - OrgConfigEnableCollaboratorsOnlyAuditEntry: OrgConfigEnableCollaboratorsOnlyAuditEntry; - OrgCreateAuditEntry: OrgCreateAuditEntry; - OrgDisableOauthAppRestrictionsAuditEntry: OrgDisableOauthAppRestrictionsAuditEntry; - OrgDisableSamlAuditEntry: OrgDisableSamlAuditEntry; - OrgDisableTwoFactorRequirementAuditEntry: OrgDisableTwoFactorRequirementAuditEntry; - OrgEnableOauthAppRestrictionsAuditEntry: OrgEnableOauthAppRestrictionsAuditEntry; - OrgEnableSamlAuditEntry: OrgEnableSamlAuditEntry; - OrgEnableTwoFactorRequirementAuditEntry: OrgEnableTwoFactorRequirementAuditEntry; - OrgInviteMemberAuditEntry: OrgInviteMemberAuditEntry; - OrgInviteToBusinessAuditEntry: OrgInviteToBusinessAuditEntry; - OrgOauthAppAccessApprovedAuditEntry: OrgOauthAppAccessApprovedAuditEntry; - OrgOauthAppAccessDeniedAuditEntry: OrgOauthAppAccessDeniedAuditEntry; - OrgOauthAppAccessRequestedAuditEntry: OrgOauthAppAccessRequestedAuditEntry; - OrgRemoveBillingManagerAuditEntry: OrgRemoveBillingManagerAuditEntry; - OrgRemoveMemberAuditEntry: OrgRemoveMemberAuditEntry; - OrgRemoveOutsideCollaboratorAuditEntry: OrgRemoveOutsideCollaboratorAuditEntry; - OrgRestoreMemberAuditEntry: OrgRestoreMemberAuditEntry; - OrgRestoreMemberMembershipOrganizationAuditEntryData: OrgRestoreMemberMembershipOrganizationAuditEntryData; - OrgRestoreMemberMembershipRepositoryAuditEntryData: OrgRestoreMemberMembershipRepositoryAuditEntryData; - OrgRestoreMemberMembershipTeamAuditEntryData: OrgRestoreMemberMembershipTeamAuditEntryData; - OrgUnblockUserAuditEntry: OrgUnblockUserAuditEntry; - OrgUpdateDefaultRepositoryPermissionAuditEntry: OrgUpdateDefaultRepositoryPermissionAuditEntry; - OrgUpdateMemberAuditEntry: OrgUpdateMemberAuditEntry; - OrgUpdateMemberRepositoryCreationPermissionAuditEntry: OrgUpdateMemberRepositoryCreationPermissionAuditEntry; - OrgUpdateMemberRepositoryInvitationPermissionAuditEntry: OrgUpdateMemberRepositoryInvitationPermissionAuditEntry; - Organization: Organization; - OrganizationAuditEntryConnection: OrganizationAuditEntryConnection; - OrganizationAuditEntryEdge: OrganizationAuditEntryEdge; - OrganizationConnection: OrganizationConnection; - OrganizationEdge: OrganizationEdge; - OrganizationIdentityProvider: OrganizationIdentityProvider; - OrganizationInvitation: OrganizationInvitation; - OrganizationInvitationConnection: OrganizationInvitationConnection; - OrganizationInvitationEdge: OrganizationInvitationEdge; - OrganizationMemberConnection: OrganizationMemberConnection; - OrganizationMemberEdge: OrganizationMemberEdge; - OrganizationTeamsHovercardContext: OrganizationTeamsHovercardContext; - OrganizationsHovercardContext: OrganizationsHovercardContext; - Package: Package; - PackageConnection: PackageConnection; - PackageEdge: PackageEdge; - PackageFile: PackageFile; - PackageFileConnection: PackageFileConnection; - PackageFileEdge: PackageFileEdge; - PackageStatistics: PackageStatistics; - PackageTag: PackageTag; - PackageVersion: PackageVersion; - PackageVersionConnection: PackageVersionConnection; - PackageVersionEdge: PackageVersionEdge; - PackageVersionStatistics: PackageVersionStatistics; - PageInfo: PageInfo; - PermissionSource: PermissionSource; - PinIssuePayload: PinIssuePayload; - PinnableItemConnection: PinnableItemConnection; - PinnableItemEdge: PinnableItemEdge; - PinnedDiscussion: PinnedDiscussion; - PinnedDiscussionConnection: PinnedDiscussionConnection; - PinnedDiscussionEdge: PinnedDiscussionEdge; - PinnedEvent: PinnedEvent; - PinnedIssue: PinnedIssue; - PinnedIssueConnection: PinnedIssueConnection; - PinnedIssueEdge: PinnedIssueEdge; - PrivateRepositoryForkingDisableAuditEntry: PrivateRepositoryForkingDisableAuditEntry; - PrivateRepositoryForkingEnableAuditEntry: PrivateRepositoryForkingEnableAuditEntry; - ProfileItemShowcase: ProfileItemShowcase; - Project: Project; - ProjectCard: ProjectCard; - ProjectCardConnection: ProjectCardConnection; - ProjectCardEdge: ProjectCardEdge; - ProjectColumn: ProjectColumn; - ProjectColumnConnection: ProjectColumnConnection; - ProjectColumnEdge: ProjectColumnEdge; - ProjectConnection: ProjectConnection; - ProjectEdge: ProjectEdge; - ProjectNext: ProjectNext; - ProjectNextConnection: ProjectNextConnection; - ProjectNextEdge: ProjectNextEdge; - ProjectNextField: ProjectNextField; - ProjectNextFieldConnection: ProjectNextFieldConnection; - ProjectNextFieldEdge: ProjectNextFieldEdge; - ProjectNextItem: ProjectNextItem; - ProjectNextItemConnection: ProjectNextItemConnection; - ProjectNextItemEdge: ProjectNextItemEdge; - ProjectNextItemFieldValue: ProjectNextItemFieldValue; - ProjectNextItemFieldValueConnection: ProjectNextItemFieldValueConnection; - ProjectNextItemFieldValueEdge: ProjectNextItemFieldValueEdge; - ProjectProgress: ProjectProgress; - PublicKey: PublicKey; - PublicKeyConnection: PublicKeyConnection; - PublicKeyEdge: PublicKeyEdge; - PullRequest: PullRequest; - PullRequestChangedFile: PullRequestChangedFile; - PullRequestChangedFileConnection: PullRequestChangedFileConnection; - PullRequestChangedFileEdge: PullRequestChangedFileEdge; - PullRequestCommit: PullRequestCommit; - PullRequestCommitCommentThread: PullRequestCommitCommentThread; - PullRequestCommitConnection: PullRequestCommitConnection; - PullRequestCommitEdge: PullRequestCommitEdge; - PullRequestConnection: PullRequestConnection; - PullRequestContributionsByRepository: PullRequestContributionsByRepository; - PullRequestEdge: PullRequestEdge; - PullRequestReview: PullRequestReview; - PullRequestReviewComment: PullRequestReviewComment; - PullRequestReviewCommentConnection: PullRequestReviewCommentConnection; - PullRequestReviewCommentEdge: PullRequestReviewCommentEdge; - PullRequestReviewConnection: PullRequestReviewConnection; - PullRequestReviewContributionsByRepository: PullRequestReviewContributionsByRepository; - PullRequestReviewEdge: PullRequestReviewEdge; - PullRequestReviewThread: PullRequestReviewThread; - PullRequestReviewThreadConnection: PullRequestReviewThreadConnection; - PullRequestReviewThreadEdge: PullRequestReviewThreadEdge; - PullRequestRevisionMarker: PullRequestRevisionMarker; - PullRequestTemplate: PullRequestTemplate; - PullRequestTimelineConnection: PullRequestTimelineConnection; - PullRequestTimelineItemEdge: PullRequestTimelineItemEdge; - PullRequestTimelineItemsConnection: PullRequestTimelineItemsConnection; - PullRequestTimelineItemsEdge: PullRequestTimelineItemsEdge; - Push: Push; - PushAllowance: PushAllowance; - PushAllowanceConnection: PushAllowanceConnection; - PushAllowanceEdge: PushAllowanceEdge; - Query: Query; - RateLimit: RateLimit; - ReactingUserConnection: ReactingUserConnection; - ReactingUserEdge: ReactingUserEdge; - Reaction: Reaction; - ReactionConnection: ReactionConnection; - ReactionEdge: ReactionEdge; - ReactionGroup: ReactionGroup; - ReactorConnection: ReactorConnection; - ReactorEdge: ReactorEdge; - ReadyForReviewEvent: ReadyForReviewEvent; - Ref: Ref; - RefConnection: RefConnection; - RefEdge: RefEdge; - RefUpdateRule: RefUpdateRule; - ReferencedEvent: ReferencedEvent; - RegenerateEnterpriseIdentityProviderRecoveryCodesPayload: RegenerateEnterpriseIdentityProviderRecoveryCodesPayload; - RegenerateVerifiableDomainTokenPayload: RegenerateVerifiableDomainTokenPayload; - RejectDeploymentsPayload: RejectDeploymentsPayload; - Release: Release; - ReleaseAsset: ReleaseAsset; - ReleaseAssetConnection: ReleaseAssetConnection; - ReleaseAssetEdge: ReleaseAssetEdge; - ReleaseConnection: ReleaseConnection; - ReleaseEdge: ReleaseEdge; - RemoveAssigneesFromAssignablePayload: RemoveAssigneesFromAssignablePayload; - RemoveEnterpriseAdminPayload: RemoveEnterpriseAdminPayload; - RemoveEnterpriseIdentityProviderPayload: RemoveEnterpriseIdentityProviderPayload; - RemoveEnterpriseOrganizationPayload: RemoveEnterpriseOrganizationPayload; - RemoveEnterpriseSupportEntitlementPayload: RemoveEnterpriseSupportEntitlementPayload; - RemoveLabelsFromLabelablePayload: RemoveLabelsFromLabelablePayload; - RemoveOutsideCollaboratorPayload: RemoveOutsideCollaboratorPayload; - RemoveReactionPayload: RemoveReactionPayload; - RemoveStarPayload: RemoveStarPayload; - RemoveUpvotePayload: RemoveUpvotePayload; - RemovedFromProjectEvent: RemovedFromProjectEvent; - RenamedTitleEvent: RenamedTitleEvent; - ReopenIssuePayload: ReopenIssuePayload; - ReopenPullRequestPayload: ReopenPullRequestPayload; - ReopenedEvent: ReopenedEvent; - RepoAccessAuditEntry: RepoAccessAuditEntry; - RepoAddMemberAuditEntry: RepoAddMemberAuditEntry; - RepoAddTopicAuditEntry: RepoAddTopicAuditEntry; - RepoArchivedAuditEntry: RepoArchivedAuditEntry; - RepoChangeMergeSettingAuditEntry: RepoChangeMergeSettingAuditEntry; - RepoConfigDisableAnonymousGitAccessAuditEntry: RepoConfigDisableAnonymousGitAccessAuditEntry; - RepoConfigDisableCollaboratorsOnlyAuditEntry: RepoConfigDisableCollaboratorsOnlyAuditEntry; - RepoConfigDisableContributorsOnlyAuditEntry: RepoConfigDisableContributorsOnlyAuditEntry; - RepoConfigDisableSockpuppetDisallowedAuditEntry: RepoConfigDisableSockpuppetDisallowedAuditEntry; - RepoConfigEnableAnonymousGitAccessAuditEntry: RepoConfigEnableAnonymousGitAccessAuditEntry; - RepoConfigEnableCollaboratorsOnlyAuditEntry: RepoConfigEnableCollaboratorsOnlyAuditEntry; - RepoConfigEnableContributorsOnlyAuditEntry: RepoConfigEnableContributorsOnlyAuditEntry; - RepoConfigEnableSockpuppetDisallowedAuditEntry: RepoConfigEnableSockpuppetDisallowedAuditEntry; - RepoConfigLockAnonymousGitAccessAuditEntry: RepoConfigLockAnonymousGitAccessAuditEntry; - RepoConfigUnlockAnonymousGitAccessAuditEntry: RepoConfigUnlockAnonymousGitAccessAuditEntry; - RepoCreateAuditEntry: RepoCreateAuditEntry; - RepoDestroyAuditEntry: RepoDestroyAuditEntry; - RepoRemoveMemberAuditEntry: RepoRemoveMemberAuditEntry; - RepoRemoveTopicAuditEntry: RepoRemoveTopicAuditEntry; - Repository: Repository; - RepositoryCollaboratorConnection: RepositoryCollaboratorConnection; - RepositoryCollaboratorEdge: RepositoryCollaboratorEdge; - RepositoryConnection: RepositoryConnection; - RepositoryContactLink: RepositoryContactLink; - RepositoryEdge: RepositoryEdge; - RepositoryInteractionAbility: RepositoryInteractionAbility; - RepositoryInvitation: RepositoryInvitation; - RepositoryInvitationConnection: RepositoryInvitationConnection; - RepositoryInvitationEdge: RepositoryInvitationEdge; - RepositoryTopic: RepositoryTopic; - RepositoryTopicConnection: RepositoryTopicConnection; - RepositoryTopicEdge: RepositoryTopicEdge; - RepositoryVisibilityChangeDisableAuditEntry: RepositoryVisibilityChangeDisableAuditEntry; - RepositoryVisibilityChangeEnableAuditEntry: RepositoryVisibilityChangeEnableAuditEntry; - RepositoryVulnerabilityAlert: RepositoryVulnerabilityAlert; - RepositoryVulnerabilityAlertConnection: RepositoryVulnerabilityAlertConnection; - RepositoryVulnerabilityAlertEdge: RepositoryVulnerabilityAlertEdge; - RequestReviewsPayload: RequestReviewsPayload; - RequiredStatusCheckDescription: RequiredStatusCheckDescription; - RerequestCheckSuitePayload: RerequestCheckSuitePayload; - ResolveReviewThreadPayload: ResolveReviewThreadPayload; - RestrictedContribution: RestrictedContribution; - ReviewDismissalAllowance: ReviewDismissalAllowance; - ReviewDismissalAllowanceConnection: ReviewDismissalAllowanceConnection; - ReviewDismissalAllowanceEdge: ReviewDismissalAllowanceEdge; - ReviewDismissedEvent: ReviewDismissedEvent; - ReviewRequest: ReviewRequest; - ReviewRequestConnection: ReviewRequestConnection; - ReviewRequestEdge: ReviewRequestEdge; - ReviewRequestRemovedEvent: ReviewRequestRemovedEvent; - ReviewRequestedEvent: ReviewRequestedEvent; - ReviewStatusHovercardContext: ReviewStatusHovercardContext; - SavedReply: SavedReply; - SavedReplyConnection: SavedReplyConnection; - SavedReplyEdge: SavedReplyEdge; - SearchResultItemConnection: SearchResultItemConnection; - SearchResultItemEdge: SearchResultItemEdge; - SecurityAdvisory: SecurityAdvisory; - SecurityAdvisoryConnection: SecurityAdvisoryConnection; - SecurityAdvisoryEdge: SecurityAdvisoryEdge; - SecurityAdvisoryIdentifier: SecurityAdvisoryIdentifier; - SecurityAdvisoryPackage: SecurityAdvisoryPackage; - SecurityAdvisoryPackageVersion: SecurityAdvisoryPackageVersion; - SecurityAdvisoryReference: SecurityAdvisoryReference; - SecurityVulnerability: SecurityVulnerability; - SecurityVulnerabilityConnection: SecurityVulnerabilityConnection; - SecurityVulnerabilityEdge: SecurityVulnerabilityEdge; - SetEnterpriseIdentityProviderPayload: SetEnterpriseIdentityProviderPayload; - SetOrganizationInteractionLimitPayload: SetOrganizationInteractionLimitPayload; - SetRepositoryInteractionLimitPayload: SetRepositoryInteractionLimitPayload; - SetUserInteractionLimitPayload: SetUserInteractionLimitPayload; - SmimeSignature: SmimeSignature; - SponsorConnection: SponsorConnection; - SponsorEdge: SponsorEdge; - SponsorableItemConnection: SponsorableItemConnection; - SponsorableItemEdge: SponsorableItemEdge; - SponsorsActivity: SponsorsActivity; - SponsorsActivityConnection: SponsorsActivityConnection; - SponsorsActivityEdge: SponsorsActivityEdge; - SponsorsGoal: SponsorsGoal; - SponsorsListing: SponsorsListing; - SponsorsTier: SponsorsTier; - SponsorsTierAdminInfo: SponsorsTierAdminInfo; - SponsorsTierConnection: SponsorsTierConnection; - SponsorsTierEdge: SponsorsTierEdge; - Sponsorship: Sponsorship; - SponsorshipConnection: SponsorshipConnection; - SponsorshipEdge: SponsorshipEdge; - SponsorshipNewsletter: SponsorshipNewsletter; - SponsorshipNewsletterConnection: SponsorshipNewsletterConnection; - SponsorshipNewsletterEdge: SponsorshipNewsletterEdge; - StargazerConnection: StargazerConnection; - StargazerEdge: StargazerEdge; - StarredRepositoryConnection: StarredRepositoryConnection; - StarredRepositoryEdge: StarredRepositoryEdge; - Status: Status; - StatusCheckRollup: StatusCheckRollup; - StatusCheckRollupContextConnection: StatusCheckRollupContextConnection; - StatusCheckRollupContextEdge: StatusCheckRollupContextEdge; - StatusContext: StatusContext; - SubmitPullRequestReviewPayload: SubmitPullRequestReviewPayload; - Submodule: Submodule; - SubmoduleConnection: SubmoduleConnection; - SubmoduleEdge: SubmoduleEdge; - SubscribedEvent: SubscribedEvent; - Subscription: Subscription; - SuggestedReviewer: SuggestedReviewer; - Tag: Tag; - Team: Team; - TeamAddMemberAuditEntry: TeamAddMemberAuditEntry; - TeamAddRepositoryAuditEntry: TeamAddRepositoryAuditEntry; - TeamChangeParentTeamAuditEntry: TeamChangeParentTeamAuditEntry; - TeamConnection: TeamConnection; - TeamDiscussion: TeamDiscussion; - TeamDiscussionComment: TeamDiscussionComment; - TeamDiscussionCommentConnection: TeamDiscussionCommentConnection; - TeamDiscussionCommentEdge: TeamDiscussionCommentEdge; - TeamDiscussionConnection: TeamDiscussionConnection; - TeamDiscussionEdge: TeamDiscussionEdge; - TeamEdge: TeamEdge; - TeamMemberConnection: TeamMemberConnection; - TeamMemberEdge: TeamMemberEdge; - TeamRemoveMemberAuditEntry: TeamRemoveMemberAuditEntry; - TeamRemoveRepositoryAuditEntry: TeamRemoveRepositoryAuditEntry; - TeamRepositoryConnection: TeamRepositoryConnection; - TeamRepositoryEdge: TeamRepositoryEdge; - TextMatch: TextMatch; - TextMatchHighlight: TextMatchHighlight; - Topic: Topic; - TransferIssuePayload: TransferIssuePayload; - TransferredEvent: TransferredEvent; - Tree: Tree; - TreeEntry: TreeEntry; - UnarchiveRepositoryPayload: UnarchiveRepositoryPayload; - UnassignedEvent: UnassignedEvent; - UnfollowUserPayload: UnfollowUserPayload; - UnknownSignature: UnknownSignature; - UnlabeledEvent: UnlabeledEvent; - UnlinkRepositoryFromProjectPayload: UnlinkRepositoryFromProjectPayload; - UnlockLockablePayload: UnlockLockablePayload; - UnlockedEvent: UnlockedEvent; - UnmarkDiscussionCommentAsAnswerPayload: UnmarkDiscussionCommentAsAnswerPayload; - UnmarkFileAsViewedPayload: UnmarkFileAsViewedPayload; - UnmarkIssueAsDuplicatePayload: UnmarkIssueAsDuplicatePayload; - UnmarkedAsDuplicateEvent: UnmarkedAsDuplicateEvent; - UnminimizeCommentPayload: UnminimizeCommentPayload; - UnpinIssuePayload: UnpinIssuePayload; - UnpinnedEvent: UnpinnedEvent; - UnresolveReviewThreadPayload: UnresolveReviewThreadPayload; - UnsubscribedEvent: UnsubscribedEvent; - UpdateBranchProtectionRulePayload: UpdateBranchProtectionRulePayload; - UpdateCheckRunPayload: UpdateCheckRunPayload; - UpdateCheckSuitePreferencesPayload: UpdateCheckSuitePreferencesPayload; - UpdateDiscussionCommentPayload: UpdateDiscussionCommentPayload; - UpdateDiscussionPayload: UpdateDiscussionPayload; - UpdateEnterpriseAdministratorRolePayload: UpdateEnterpriseAdministratorRolePayload; - UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload: UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload; - UpdateEnterpriseDefaultRepositoryPermissionSettingPayload: UpdateEnterpriseDefaultRepositoryPermissionSettingPayload; - UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload: UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload; - UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload: UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload; - UpdateEnterpriseMembersCanDeleteIssuesSettingPayload: UpdateEnterpriseMembersCanDeleteIssuesSettingPayload; - UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload: UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload; - UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload: UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload; - UpdateEnterpriseMembersCanMakePurchasesSettingPayload: UpdateEnterpriseMembersCanMakePurchasesSettingPayload; - UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload: UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload; - UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload: UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload; - UpdateEnterpriseOrganizationProjectsSettingPayload: UpdateEnterpriseOrganizationProjectsSettingPayload; - UpdateEnterpriseProfilePayload: UpdateEnterpriseProfilePayload; - UpdateEnterpriseRepositoryProjectsSettingPayload: UpdateEnterpriseRepositoryProjectsSettingPayload; - UpdateEnterpriseTeamDiscussionsSettingPayload: UpdateEnterpriseTeamDiscussionsSettingPayload; - UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload: UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload; - UpdateEnvironmentPayload: UpdateEnvironmentPayload; - UpdateIpAllowListEnabledSettingPayload: UpdateIpAllowListEnabledSettingPayload; - UpdateIpAllowListEntryPayload: UpdateIpAllowListEntryPayload; - UpdateIpAllowListForInstalledAppsEnabledSettingPayload: UpdateIpAllowListForInstalledAppsEnabledSettingPayload; - UpdateIssueCommentPayload: UpdateIssueCommentPayload; - UpdateIssuePayload: UpdateIssuePayload; - UpdateNotificationRestrictionSettingPayload: UpdateNotificationRestrictionSettingPayload; - UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload: UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload; - UpdateProjectCardPayload: UpdateProjectCardPayload; - UpdateProjectColumnPayload: UpdateProjectColumnPayload; - UpdateProjectNextItemFieldPayload: UpdateProjectNextItemFieldPayload; - UpdateProjectPayload: UpdateProjectPayload; - UpdatePullRequestBranchPayload: UpdatePullRequestBranchPayload; - UpdatePullRequestPayload: UpdatePullRequestPayload; - UpdatePullRequestReviewCommentPayload: UpdatePullRequestReviewCommentPayload; - UpdatePullRequestReviewPayload: UpdatePullRequestReviewPayload; - UpdateRefPayload: UpdateRefPayload; - UpdateRepositoryPayload: UpdateRepositoryPayload; - UpdateSponsorshipPreferencesPayload: UpdateSponsorshipPreferencesPayload; - UpdateSubscriptionPayload: UpdateSubscriptionPayload; - UpdateTeamDiscussionCommentPayload: UpdateTeamDiscussionCommentPayload; - UpdateTeamDiscussionPayload: UpdateTeamDiscussionPayload; - UpdateTopicsPayload: UpdateTopicsPayload; - User: User; - UserBlockedEvent: UserBlockedEvent; - UserConnection: UserConnection; - UserContentEdit: UserContentEdit; - UserContentEditConnection: UserContentEditConnection; - UserContentEditEdge: UserContentEditEdge; - UserEdge: UserEdge; - UserEmailMetadata: UserEmailMetadata; - UserStatus: UserStatus; - UserStatusConnection: UserStatusConnection; - UserStatusEdge: UserStatusEdge; - VerifiableDomain: VerifiableDomain; - VerifiableDomainConnection: VerifiableDomainConnection; - VerifiableDomainEdge: VerifiableDomainEdge; - VerifyVerifiableDomainPayload: VerifyVerifiableDomainPayload; - ViewerHovercardContext: ViewerHovercardContext; - Workflow: Workflow; - WorkflowRun: WorkflowRun; -} -export type SchemaObjectTypesNames = - | 'AcceptEnterpriseAdministratorInvitationPayload' - | 'AcceptTopicSuggestionPayload' - | 'ActorLocation' - | 'AddAssigneesToAssignablePayload' - | 'AddCommentPayload' - | 'AddDiscussionCommentPayload' - | 'AddEnterpriseSupportEntitlementPayload' - | 'AddLabelsToLabelablePayload' - | 'AddProjectCardPayload' - | 'AddProjectColumnPayload' - | 'AddProjectNextItemPayload' - | 'AddPullRequestReviewCommentPayload' - | 'AddPullRequestReviewPayload' - | 'AddPullRequestReviewThreadPayload' - | 'AddReactionPayload' - | 'AddStarPayload' - | 'AddUpvotePayload' - | 'AddVerifiableDomainPayload' - | 'AddedToProjectEvent' - | 'App' - | 'ApproveDeploymentsPayload' - | 'ApproveVerifiableDomainPayload' - | 'ArchiveRepositoryPayload' - | 'AssignedEvent' - | 'AutoMergeDisabledEvent' - | 'AutoMergeEnabledEvent' - | 'AutoMergeRequest' - | 'AutoRebaseEnabledEvent' - | 'AutoSquashEnabledEvent' - | 'AutomaticBaseChangeFailedEvent' - | 'AutomaticBaseChangeSucceededEvent' - | 'BaseRefChangedEvent' - | 'BaseRefDeletedEvent' - | 'BaseRefForcePushedEvent' - | 'Blame' - | 'BlameRange' - | 'Blob' - | 'Bot' - | 'BranchProtectionRule' - | 'BranchProtectionRuleConflict' - | 'BranchProtectionRuleConflictConnection' - | 'BranchProtectionRuleConflictEdge' - | 'BranchProtectionRuleConnection' - | 'BranchProtectionRuleEdge' - | 'BypassForcePushAllowance' - | 'BypassForcePushAllowanceConnection' - | 'BypassForcePushAllowanceEdge' - | 'BypassPullRequestAllowance' - | 'BypassPullRequestAllowanceConnection' - | 'BypassPullRequestAllowanceEdge' - | 'CVSS' - | 'CWE' - | 'CWEConnection' - | 'CWEEdge' - | 'CancelEnterpriseAdminInvitationPayload' - | 'CancelSponsorshipPayload' - | 'ChangeUserStatusPayload' - | 'CheckAnnotation' - | 'CheckAnnotationConnection' - | 'CheckAnnotationEdge' - | 'CheckAnnotationPosition' - | 'CheckAnnotationSpan' - | 'CheckRun' - | 'CheckRunConnection' - | 'CheckRunEdge' - | 'CheckStep' - | 'CheckStepConnection' - | 'CheckStepEdge' - | 'CheckSuite' - | 'CheckSuiteConnection' - | 'CheckSuiteEdge' - | 'ClearLabelsFromLabelablePayload' - | 'CloneProjectPayload' - | 'CloneTemplateRepositoryPayload' - | 'CloseIssuePayload' - | 'ClosePullRequestPayload' - | 'ClosedEvent' - | 'CodeOfConduct' - | 'CommentDeletedEvent' - | 'Commit' - | 'CommitComment' - | 'CommitCommentConnection' - | 'CommitCommentEdge' - | 'CommitCommentThread' - | 'CommitConnection' - | 'CommitContributionsByRepository' - | 'CommitEdge' - | 'CommitHistoryConnection' - | 'ConnectedEvent' - | 'ContributionCalendar' - | 'ContributionCalendarDay' - | 'ContributionCalendarMonth' - | 'ContributionCalendarWeek' - | 'ContributionsCollection' - | 'ConvertProjectCardNoteToIssuePayload' - | 'ConvertPullRequestToDraftPayload' - | 'ConvertToDraftEvent' - | 'ConvertedNoteToIssueEvent' - | 'ConvertedToDiscussionEvent' - | 'CreateBranchProtectionRulePayload' - | 'CreateCheckRunPayload' - | 'CreateCheckSuitePayload' - | 'CreateCommitOnBranchPayload' - | 'CreateDiscussionPayload' - | 'CreateEnterpriseOrganizationPayload' - | 'CreateEnvironmentPayload' - | 'CreateIpAllowListEntryPayload' - | 'CreateIssuePayload' - | 'CreateProjectPayload' - | 'CreatePullRequestPayload' - | 'CreateRefPayload' - | 'CreateRepositoryPayload' - | 'CreateSponsorshipPayload' - | 'CreateTeamDiscussionCommentPayload' - | 'CreateTeamDiscussionPayload' - | 'CreatedCommitContribution' - | 'CreatedCommitContributionConnection' - | 'CreatedCommitContributionEdge' - | 'CreatedIssueContribution' - | 'CreatedIssueContributionConnection' - | 'CreatedIssueContributionEdge' - | 'CreatedPullRequestContribution' - | 'CreatedPullRequestContributionConnection' - | 'CreatedPullRequestContributionEdge' - | 'CreatedPullRequestReviewContribution' - | 'CreatedPullRequestReviewContributionConnection' - | 'CreatedPullRequestReviewContributionEdge' - | 'CreatedRepositoryContribution' - | 'CreatedRepositoryContributionConnection' - | 'CreatedRepositoryContributionEdge' - | 'CrossReferencedEvent' - | 'DeclineTopicSuggestionPayload' - | 'DeleteBranchProtectionRulePayload' - | 'DeleteDeploymentPayload' - | 'DeleteDiscussionCommentPayload' - | 'DeleteDiscussionPayload' - | 'DeleteEnvironmentPayload' - | 'DeleteIpAllowListEntryPayload' - | 'DeleteIssueCommentPayload' - | 'DeleteIssuePayload' - | 'DeleteProjectCardPayload' - | 'DeleteProjectColumnPayload' - | 'DeleteProjectNextItemPayload' - | 'DeleteProjectPayload' - | 'DeletePullRequestReviewCommentPayload' - | 'DeletePullRequestReviewPayload' - | 'DeleteRefPayload' - | 'DeleteTeamDiscussionCommentPayload' - | 'DeleteTeamDiscussionPayload' - | 'DeleteVerifiableDomainPayload' - | 'DemilestonedEvent' - | 'DeployKey' - | 'DeployKeyConnection' - | 'DeployKeyEdge' - | 'DeployedEvent' - | 'Deployment' - | 'DeploymentConnection' - | 'DeploymentEdge' - | 'DeploymentEnvironmentChangedEvent' - | 'DeploymentProtectionRule' - | 'DeploymentProtectionRuleConnection' - | 'DeploymentProtectionRuleEdge' - | 'DeploymentRequest' - | 'DeploymentRequestConnection' - | 'DeploymentRequestEdge' - | 'DeploymentReview' - | 'DeploymentReviewConnection' - | 'DeploymentReviewEdge' - | 'DeploymentReviewerConnection' - | 'DeploymentReviewerEdge' - | 'DeploymentStatus' - | 'DeploymentStatusConnection' - | 'DeploymentStatusEdge' - | 'DisablePullRequestAutoMergePayload' - | 'DisconnectedEvent' - | 'Discussion' - | 'DiscussionCategory' - | 'DiscussionCategoryConnection' - | 'DiscussionCategoryEdge' - | 'DiscussionComment' - | 'DiscussionCommentConnection' - | 'DiscussionCommentEdge' - | 'DiscussionConnection' - | 'DiscussionEdge' - | 'DismissPullRequestReviewPayload' - | 'DismissRepositoryVulnerabilityAlertPayload' - | 'EnablePullRequestAutoMergePayload' - | 'Enterprise' - | 'EnterpriseAdministratorConnection' - | 'EnterpriseAdministratorEdge' - | 'EnterpriseAdministratorInvitation' - | 'EnterpriseAdministratorInvitationConnection' - | 'EnterpriseAdministratorInvitationEdge' - | 'EnterpriseBillingInfo' - | 'EnterpriseIdentityProvider' - | 'EnterpriseMemberConnection' - | 'EnterpriseMemberEdge' - | 'EnterpriseOrganizationMembershipConnection' - | 'EnterpriseOrganizationMembershipEdge' - | 'EnterpriseOutsideCollaboratorConnection' - | 'EnterpriseOutsideCollaboratorEdge' - | 'EnterpriseOwnerInfo' - | 'EnterprisePendingCollaboratorConnection' - | 'EnterprisePendingCollaboratorEdge' - | 'EnterprisePendingMemberInvitationConnection' - | 'EnterprisePendingMemberInvitationEdge' - | 'EnterpriseRepositoryInfo' - | 'EnterpriseRepositoryInfoConnection' - | 'EnterpriseRepositoryInfoEdge' - | 'EnterpriseServerInstallation' - | 'EnterpriseServerInstallationConnection' - | 'EnterpriseServerInstallationEdge' - | 'EnterpriseServerUserAccount' - | 'EnterpriseServerUserAccountConnection' - | 'EnterpriseServerUserAccountEdge' - | 'EnterpriseServerUserAccountEmail' - | 'EnterpriseServerUserAccountEmailConnection' - | 'EnterpriseServerUserAccountEmailEdge' - | 'EnterpriseServerUserAccountsUpload' - | 'EnterpriseServerUserAccountsUploadConnection' - | 'EnterpriseServerUserAccountsUploadEdge' - | 'EnterpriseUserAccount' - | 'EnterpriseUserAccountConnection' - | 'EnterpriseUserAccountEdge' - | 'Environment' - | 'EnvironmentConnection' - | 'EnvironmentEdge' - | 'ExternalIdentity' - | 'ExternalIdentityConnection' - | 'ExternalIdentityEdge' - | 'ExternalIdentitySamlAttributes' - | 'ExternalIdentityScimAttributes' - | 'FollowUserPayload' - | 'FollowerConnection' - | 'FollowingConnection' - | 'FundingLink' - | 'GenericHovercardContext' - | 'Gist' - | 'GistComment' - | 'GistCommentConnection' - | 'GistCommentEdge' - | 'GistConnection' - | 'GistEdge' - | 'GistFile' - | 'GitActor' - | 'GitActorConnection' - | 'GitActorEdge' - | 'GitHubMetadata' - | 'GpgSignature' - | 'HeadRefDeletedEvent' - | 'HeadRefForcePushedEvent' - | 'HeadRefRestoredEvent' - | 'Hovercard' - | 'InviteEnterpriseAdminPayload' - | 'IpAllowListEntry' - | 'IpAllowListEntryConnection' - | 'IpAllowListEntryEdge' - | 'Issue' - | 'IssueComment' - | 'IssueCommentConnection' - | 'IssueCommentEdge' - | 'IssueConnection' - | 'IssueContributionsByRepository' - | 'IssueEdge' - | 'IssueTemplate' - | 'IssueTimelineConnection' - | 'IssueTimelineItemEdge' - | 'IssueTimelineItemsConnection' - | 'IssueTimelineItemsEdge' - | 'JoinedGitHubContribution' - | 'Label' - | 'LabelConnection' - | 'LabelEdge' - | 'LabeledEvent' - | 'Language' - | 'LanguageConnection' - | 'LanguageEdge' - | 'License' - | 'LicenseRule' - | 'LinkRepositoryToProjectPayload' - | 'LockLockablePayload' - | 'LockedEvent' - | 'Mannequin' - | 'MarkDiscussionCommentAsAnswerPayload' - | 'MarkFileAsViewedPayload' - | 'MarkPullRequestReadyForReviewPayload' - | 'MarkedAsDuplicateEvent' - | 'MarketplaceCategory' - | 'MarketplaceListing' - | 'MarketplaceListingConnection' - | 'MarketplaceListingEdge' - | 'MembersCanDeleteReposClearAuditEntry' - | 'MembersCanDeleteReposDisableAuditEntry' - | 'MembersCanDeleteReposEnableAuditEntry' - | 'MentionedEvent' - | 'MergeBranchPayload' - | 'MergePullRequestPayload' - | 'MergedEvent' - | 'Milestone' - | 'MilestoneConnection' - | 'MilestoneEdge' - | 'MilestonedEvent' - | 'MinimizeCommentPayload' - | 'MoveProjectCardPayload' - | 'MoveProjectColumnPayload' - | 'MovedColumnsInProjectEvent' - | 'Mutation' - | 'OIDCProvider' - | 'OauthApplicationCreateAuditEntry' - | 'OrgAddBillingManagerAuditEntry' - | 'OrgAddMemberAuditEntry' - | 'OrgBlockUserAuditEntry' - | 'OrgConfigDisableCollaboratorsOnlyAuditEntry' - | 'OrgConfigEnableCollaboratorsOnlyAuditEntry' - | 'OrgCreateAuditEntry' - | 'OrgDisableOauthAppRestrictionsAuditEntry' - | 'OrgDisableSamlAuditEntry' - | 'OrgDisableTwoFactorRequirementAuditEntry' - | 'OrgEnableOauthAppRestrictionsAuditEntry' - | 'OrgEnableSamlAuditEntry' - | 'OrgEnableTwoFactorRequirementAuditEntry' - | 'OrgInviteMemberAuditEntry' - | 'OrgInviteToBusinessAuditEntry' - | 'OrgOauthAppAccessApprovedAuditEntry' - | 'OrgOauthAppAccessDeniedAuditEntry' - | 'OrgOauthAppAccessRequestedAuditEntry' - | 'OrgRemoveBillingManagerAuditEntry' - | 'OrgRemoveMemberAuditEntry' - | 'OrgRemoveOutsideCollaboratorAuditEntry' - | 'OrgRestoreMemberAuditEntry' - | 'OrgRestoreMemberMembershipOrganizationAuditEntryData' - | 'OrgRestoreMemberMembershipRepositoryAuditEntryData' - | 'OrgRestoreMemberMembershipTeamAuditEntryData' - | 'OrgUnblockUserAuditEntry' - | 'OrgUpdateDefaultRepositoryPermissionAuditEntry' - | 'OrgUpdateMemberAuditEntry' - | 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry' - | 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry' - | 'Organization' - | 'OrganizationAuditEntryConnection' - | 'OrganizationAuditEntryEdge' - | 'OrganizationConnection' - | 'OrganizationEdge' - | 'OrganizationIdentityProvider' - | 'OrganizationInvitation' - | 'OrganizationInvitationConnection' - | 'OrganizationInvitationEdge' - | 'OrganizationMemberConnection' - | 'OrganizationMemberEdge' - | 'OrganizationTeamsHovercardContext' - | 'OrganizationsHovercardContext' - | 'Package' - | 'PackageConnection' - | 'PackageEdge' - | 'PackageFile' - | 'PackageFileConnection' - | 'PackageFileEdge' - | 'PackageStatistics' - | 'PackageTag' - | 'PackageVersion' - | 'PackageVersionConnection' - | 'PackageVersionEdge' - | 'PackageVersionStatistics' - | 'PageInfo' - | 'PermissionSource' - | 'PinIssuePayload' - | 'PinnableItemConnection' - | 'PinnableItemEdge' - | 'PinnedDiscussion' - | 'PinnedDiscussionConnection' - | 'PinnedDiscussionEdge' - | 'PinnedEvent' - | 'PinnedIssue' - | 'PinnedIssueConnection' - | 'PinnedIssueEdge' - | 'PrivateRepositoryForkingDisableAuditEntry' - | 'PrivateRepositoryForkingEnableAuditEntry' - | 'ProfileItemShowcase' - | 'Project' - | 'ProjectCard' - | 'ProjectCardConnection' - | 'ProjectCardEdge' - | 'ProjectColumn' - | 'ProjectColumnConnection' - | 'ProjectColumnEdge' - | 'ProjectConnection' - | 'ProjectEdge' - | 'ProjectNext' - | 'ProjectNextConnection' - | 'ProjectNextEdge' - | 'ProjectNextField' - | 'ProjectNextFieldConnection' - | 'ProjectNextFieldEdge' - | 'ProjectNextItem' - | 'ProjectNextItemConnection' - | 'ProjectNextItemEdge' - | 'ProjectNextItemFieldValue' - | 'ProjectNextItemFieldValueConnection' - | 'ProjectNextItemFieldValueEdge' - | 'ProjectProgress' - | 'PublicKey' - | 'PublicKeyConnection' - | 'PublicKeyEdge' - | 'PullRequest' - | 'PullRequestChangedFile' - | 'PullRequestChangedFileConnection' - | 'PullRequestChangedFileEdge' - | 'PullRequestCommit' - | 'PullRequestCommitCommentThread' - | 'PullRequestCommitConnection' - | 'PullRequestCommitEdge' - | 'PullRequestConnection' - | 'PullRequestContributionsByRepository' - | 'PullRequestEdge' - | 'PullRequestReview' - | 'PullRequestReviewComment' - | 'PullRequestReviewCommentConnection' - | 'PullRequestReviewCommentEdge' - | 'PullRequestReviewConnection' - | 'PullRequestReviewContributionsByRepository' - | 'PullRequestReviewEdge' - | 'PullRequestReviewThread' - | 'PullRequestReviewThreadConnection' - | 'PullRequestReviewThreadEdge' - | 'PullRequestRevisionMarker' - | 'PullRequestTemplate' - | 'PullRequestTimelineConnection' - | 'PullRequestTimelineItemEdge' - | 'PullRequestTimelineItemsConnection' - | 'PullRequestTimelineItemsEdge' - | 'Push' - | 'PushAllowance' - | 'PushAllowanceConnection' - | 'PushAllowanceEdge' - | 'Query' - | 'RateLimit' - | 'ReactingUserConnection' - | 'ReactingUserEdge' - | 'Reaction' - | 'ReactionConnection' - | 'ReactionEdge' - | 'ReactionGroup' - | 'ReactorConnection' - | 'ReactorEdge' - | 'ReadyForReviewEvent' - | 'Ref' - | 'RefConnection' - | 'RefEdge' - | 'RefUpdateRule' - | 'ReferencedEvent' - | 'RegenerateEnterpriseIdentityProviderRecoveryCodesPayload' - | 'RegenerateVerifiableDomainTokenPayload' - | 'RejectDeploymentsPayload' - | 'Release' - | 'ReleaseAsset' - | 'ReleaseAssetConnection' - | 'ReleaseAssetEdge' - | 'ReleaseConnection' - | 'ReleaseEdge' - | 'RemoveAssigneesFromAssignablePayload' - | 'RemoveEnterpriseAdminPayload' - | 'RemoveEnterpriseIdentityProviderPayload' - | 'RemoveEnterpriseOrganizationPayload' - | 'RemoveEnterpriseSupportEntitlementPayload' - | 'RemoveLabelsFromLabelablePayload' - | 'RemoveOutsideCollaboratorPayload' - | 'RemoveReactionPayload' - | 'RemoveStarPayload' - | 'RemoveUpvotePayload' - | 'RemovedFromProjectEvent' - | 'RenamedTitleEvent' - | 'ReopenIssuePayload' - | 'ReopenPullRequestPayload' - | 'ReopenedEvent' - | 'RepoAccessAuditEntry' - | 'RepoAddMemberAuditEntry' - | 'RepoAddTopicAuditEntry' - | 'RepoArchivedAuditEntry' - | 'RepoChangeMergeSettingAuditEntry' - | 'RepoConfigDisableAnonymousGitAccessAuditEntry' - | 'RepoConfigDisableCollaboratorsOnlyAuditEntry' - | 'RepoConfigDisableContributorsOnlyAuditEntry' - | 'RepoConfigDisableSockpuppetDisallowedAuditEntry' - | 'RepoConfigEnableAnonymousGitAccessAuditEntry' - | 'RepoConfigEnableCollaboratorsOnlyAuditEntry' - | 'RepoConfigEnableContributorsOnlyAuditEntry' - | 'RepoConfigEnableSockpuppetDisallowedAuditEntry' - | 'RepoConfigLockAnonymousGitAccessAuditEntry' - | 'RepoConfigUnlockAnonymousGitAccessAuditEntry' - | 'RepoCreateAuditEntry' - | 'RepoDestroyAuditEntry' - | 'RepoRemoveMemberAuditEntry' - | 'RepoRemoveTopicAuditEntry' - | 'Repository' - | 'RepositoryCollaboratorConnection' - | 'RepositoryCollaboratorEdge' - | 'RepositoryConnection' - | 'RepositoryContactLink' - | 'RepositoryEdge' - | 'RepositoryInteractionAbility' - | 'RepositoryInvitation' - | 'RepositoryInvitationConnection' - | 'RepositoryInvitationEdge' - | 'RepositoryTopic' - | 'RepositoryTopicConnection' - | 'RepositoryTopicEdge' - | 'RepositoryVisibilityChangeDisableAuditEntry' - | 'RepositoryVisibilityChangeEnableAuditEntry' - | 'RepositoryVulnerabilityAlert' - | 'RepositoryVulnerabilityAlertConnection' - | 'RepositoryVulnerabilityAlertEdge' - | 'RequestReviewsPayload' - | 'RequiredStatusCheckDescription' - | 'RerequestCheckSuitePayload' - | 'ResolveReviewThreadPayload' - | 'RestrictedContribution' - | 'ReviewDismissalAllowance' - | 'ReviewDismissalAllowanceConnection' - | 'ReviewDismissalAllowanceEdge' - | 'ReviewDismissedEvent' - | 'ReviewRequest' - | 'ReviewRequestConnection' - | 'ReviewRequestEdge' - | 'ReviewRequestRemovedEvent' - | 'ReviewRequestedEvent' - | 'ReviewStatusHovercardContext' - | 'SavedReply' - | 'SavedReplyConnection' - | 'SavedReplyEdge' - | 'SearchResultItemConnection' - | 'SearchResultItemEdge' - | 'SecurityAdvisory' - | 'SecurityAdvisoryConnection' - | 'SecurityAdvisoryEdge' - | 'SecurityAdvisoryIdentifier' - | 'SecurityAdvisoryPackage' - | 'SecurityAdvisoryPackageVersion' - | 'SecurityAdvisoryReference' - | 'SecurityVulnerability' - | 'SecurityVulnerabilityConnection' - | 'SecurityVulnerabilityEdge' - | 'SetEnterpriseIdentityProviderPayload' - | 'SetOrganizationInteractionLimitPayload' - | 'SetRepositoryInteractionLimitPayload' - | 'SetUserInteractionLimitPayload' - | 'SmimeSignature' - | 'SponsorConnection' - | 'SponsorEdge' - | 'SponsorableItemConnection' - | 'SponsorableItemEdge' - | 'SponsorsActivity' - | 'SponsorsActivityConnection' - | 'SponsorsActivityEdge' - | 'SponsorsGoal' - | 'SponsorsListing' - | 'SponsorsTier' - | 'SponsorsTierAdminInfo' - | 'SponsorsTierConnection' - | 'SponsorsTierEdge' - | 'Sponsorship' - | 'SponsorshipConnection' - | 'SponsorshipEdge' - | 'SponsorshipNewsletter' - | 'SponsorshipNewsletterConnection' - | 'SponsorshipNewsletterEdge' - | 'StargazerConnection' - | 'StargazerEdge' - | 'StarredRepositoryConnection' - | 'StarredRepositoryEdge' - | 'Status' - | 'StatusCheckRollup' - | 'StatusCheckRollupContextConnection' - | 'StatusCheckRollupContextEdge' - | 'StatusContext' - | 'SubmitPullRequestReviewPayload' - | 'Submodule' - | 'SubmoduleConnection' - | 'SubmoduleEdge' - | 'SubscribedEvent' - | 'Subscription' - | 'SuggestedReviewer' - | 'Tag' - | 'Team' - | 'TeamAddMemberAuditEntry' - | 'TeamAddRepositoryAuditEntry' - | 'TeamChangeParentTeamAuditEntry' - | 'TeamConnection' - | 'TeamDiscussion' - | 'TeamDiscussionComment' - | 'TeamDiscussionCommentConnection' - | 'TeamDiscussionCommentEdge' - | 'TeamDiscussionConnection' - | 'TeamDiscussionEdge' - | 'TeamEdge' - | 'TeamMemberConnection' - | 'TeamMemberEdge' - | 'TeamRemoveMemberAuditEntry' - | 'TeamRemoveRepositoryAuditEntry' - | 'TeamRepositoryConnection' - | 'TeamRepositoryEdge' - | 'TextMatch' - | 'TextMatchHighlight' - | 'Topic' - | 'TransferIssuePayload' - | 'TransferredEvent' - | 'Tree' - | 'TreeEntry' - | 'UnarchiveRepositoryPayload' - | 'UnassignedEvent' - | 'UnfollowUserPayload' - | 'UnknownSignature' - | 'UnlabeledEvent' - | 'UnlinkRepositoryFromProjectPayload' - | 'UnlockLockablePayload' - | 'UnlockedEvent' - | 'UnmarkDiscussionCommentAsAnswerPayload' - | 'UnmarkFileAsViewedPayload' - | 'UnmarkIssueAsDuplicatePayload' - | 'UnmarkedAsDuplicateEvent' - | 'UnminimizeCommentPayload' - | 'UnpinIssuePayload' - | 'UnpinnedEvent' - | 'UnresolveReviewThreadPayload' - | 'UnsubscribedEvent' - | 'UpdateBranchProtectionRulePayload' - | 'UpdateCheckRunPayload' - | 'UpdateCheckSuitePreferencesPayload' - | 'UpdateDiscussionCommentPayload' - | 'UpdateDiscussionPayload' - | 'UpdateEnterpriseAdministratorRolePayload' - | 'UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload' - | 'UpdateEnterpriseDefaultRepositoryPermissionSettingPayload' - | 'UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload' - | 'UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload' - | 'UpdateEnterpriseMembersCanDeleteIssuesSettingPayload' - | 'UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload' - | 'UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload' - | 'UpdateEnterpriseMembersCanMakePurchasesSettingPayload' - | 'UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload' - | 'UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload' - | 'UpdateEnterpriseOrganizationProjectsSettingPayload' - | 'UpdateEnterpriseProfilePayload' - | 'UpdateEnterpriseRepositoryProjectsSettingPayload' - | 'UpdateEnterpriseTeamDiscussionsSettingPayload' - | 'UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload' - | 'UpdateEnvironmentPayload' - | 'UpdateIpAllowListEnabledSettingPayload' - | 'UpdateIpAllowListEntryPayload' - | 'UpdateIpAllowListForInstalledAppsEnabledSettingPayload' - | 'UpdateIssueCommentPayload' - | 'UpdateIssuePayload' - | 'UpdateNotificationRestrictionSettingPayload' - | 'UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload' - | 'UpdateProjectCardPayload' - | 'UpdateProjectColumnPayload' - | 'UpdateProjectNextItemFieldPayload' - | 'UpdateProjectPayload' - | 'UpdatePullRequestBranchPayload' - | 'UpdatePullRequestPayload' - | 'UpdatePullRequestReviewCommentPayload' - | 'UpdatePullRequestReviewPayload' - | 'UpdateRefPayload' - | 'UpdateRepositoryPayload' - | 'UpdateSponsorshipPreferencesPayload' - | 'UpdateSubscriptionPayload' - | 'UpdateTeamDiscussionCommentPayload' - | 'UpdateTeamDiscussionPayload' - | 'UpdateTopicsPayload' - | 'User' - | 'UserBlockedEvent' - | 'UserConnection' - | 'UserContentEdit' - | 'UserContentEditConnection' - | 'UserContentEditEdge' - | 'UserEdge' - | 'UserEmailMetadata' - | 'UserStatus' - | 'UserStatusConnection' - | 'UserStatusEdge' - | 'VerifiableDomain' - | 'VerifiableDomainConnection' - | 'VerifiableDomainEdge' - | 'VerifyVerifiableDomainPayload' - | 'ViewerHovercardContext' - | 'Workflow' - | 'WorkflowRun'; - export interface $Actor { Bot?: Bot; EnterpriseUserAccount?: EnterpriseUserAccount; diff --git a/examples/react/package.json b/examples/react/package.json index f7479573a..4dd75a0be 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -13,6 +13,7 @@ "@chakra-ui/react": "^1.8.9", "@emotion/react": "^11.10.6", "@emotion/styled": "^11.10.6", + "@envelop/core": "^3.0.6", "@faker-js/faker": "^7.6.0", "@gqty/cli": "workspace:^3.3.0", "@gqty/logger": "workspace:^2.0.2", @@ -34,6 +35,7 @@ "graphql": "^16.6.0", "graphql-ez": "^0.16.0", "graphql-upload": "^13.0.0", + "graphql-ws": "^5.11.3", "localforage": "^1.10.0", "lodash": "^4.17.21", "ms": "^3.0.0-canary.1", @@ -44,12 +46,15 @@ "react-dom": "^17.0.2", "react-error-boundary": "^4.0.7", "react-intersection-observer": "^9.4.3", + "react-native": "^0.71.4", "react-ssr-prepass": "^1.5.0", "react-use": "^17.4.0", "serialize-error": "^11.0.0", "use-error-boundary": "^2.0.6" }, "devDependencies": { + "@babel/core": "^7.21.0", + "@babel/preset-env": "^7.20.2", "@fastify/nextjs": "^9.2.0", "@types/graphql-upload": "^16.0.0", "@types/lodash": "^4.14.191", diff --git a/examples/react/src/graphql/gqty.ts b/examples/react/src/graphql/gqty.ts index fca4b7ae5..3417fbc8d 100644 --- a/examples/react/src/graphql/gqty.ts +++ b/examples/react/src/graphql/gqty.ts @@ -2,17 +2,19 @@ * GQTY: You can safely modify this file and Query Fetcher based on your needs */ -import { createSubscriptionsClient } from '@gqty/subscriptions'; import { createClient, QueryFetcher } from 'gqty'; +import { createClient as createSubscriptionsClient } from 'graphql-ws'; import { generatedSchema, GeneratedSchema, scalarsEnumsHash, - SchemaObjectTypes, - SchemaObjectTypesNames, } from './schema.generated'; -const queryFetcher: QueryFetcher = async function (query, variables) { +const queryFetcher: QueryFetcher = async function ({ + query, + variables, + operationName, +}) { const response = await fetch( typeof window === 'undefined' ? 'http://localhost:4141/api/graphql' @@ -25,6 +27,7 @@ const queryFetcher: QueryFetcher = async function (query, variables) { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', } @@ -38,7 +41,8 @@ const queryFetcher: QueryFetcher = async function (query, variables) { const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL('/api/graphql', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); @@ -49,20 +53,17 @@ const subscriptionsClient = }) : undefined; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = client; -export { query, mutation, mutate, subscription, resolved, refetch, track }; - export * from './schema.generated'; +export { query, mutation, mutate, subscription, resolved, refetch, track }; diff --git a/examples/react/src/graphql/schema.generated.ts b/examples/react/src/graphql/schema.generated.ts index 3bcd956f4..18fa66626 100644 --- a/examples/react/src/graphql/schema.generated.ts +++ b/examples/react/src/graphql/schema.generated.ts @@ -237,24 +237,6 @@ export interface Subscription { newNotification: ScalarsEnums['String']; } -export interface SchemaObjectTypes { - Dog: Dog; - Human: Human; - HumansConnection: HumansConnection; - Mutation: Mutation; - PageInfo: PageInfo; - Query: Query; - Subscription: Subscription; -} -export type SchemaObjectTypesNames = - | 'Dog' - | 'Human' - | 'HumansConnection' - | 'Mutation' - | 'PageInfo' - | 'Query' - | 'Subscription'; - export interface $Species { Dog?: Dog; Human?: Human; diff --git a/examples/vite-example/src/gqty/index.ts b/examples/vite-example/src/gqty/index.ts index 97dccf737..1cfd006a1 100644 --- a/examples/vite-example/src/gqty/index.ts +++ b/examples/vite-example/src/gqty/index.ts @@ -7,13 +7,15 @@ import { createReactClient } from '@gqty/react'; import { createClient, QueryFetcher } from 'gqty'; import { generatedSchema, - scalarsEnumsHash, GeneratedSchema, - SchemaObjectTypes, - SchemaObjectTypesNames, + scalarsEnumsHash, } from './schema.generated'; -const queryFetcher: QueryFetcher = async function (query, variables) { +const queryFetcher: QueryFetcher = async function ({ + query, + variables, + operationName, +}) { // Modify "https://examples-api.gqty.dev/graphql" if needed const response = await fetch('https://examples-api.gqty.dev/graphql', { method: 'POST', @@ -23,6 +25,7 @@ const queryFetcher: QueryFetcher = async function (query, variables) { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', }); @@ -32,21 +35,19 @@ const queryFetcher: QueryFetcher = async function (query, variables) { return json; }; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); const { query, mutation, mutate, subscription, resolved, refetch } = client; +export * from './schema.generated'; export { query, mutation, mutate, subscription, resolved, refetch }; - -const { +export { graphql, useQuery, usePaginatedQuery, @@ -58,18 +59,9 @@ const { prepareReactRender, useHydrateCache, prepareQuery, -} = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); +}; -export { +const { graphql, useQuery, usePaginatedQuery, @@ -81,6 +73,13 @@ export { prepareReactRender, useHydrateCache, prepareQuery, -}; +} = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, -export * from './schema.generated'; + // Set this flag based on your needs + staleWhileRevalidate: false, + }, +}); diff --git a/examples/vite-example/src/gqty/schema.generated.ts b/examples/vite-example/src/gqty/schema.generated.ts index ea5859075..0bef1aaa9 100644 --- a/examples/vite-example/src/gqty/schema.generated.ts +++ b/examples/vite-example/src/gqty/schema.generated.ts @@ -266,28 +266,6 @@ export interface Subscription { __typename?: 'Subscription'; } -export interface SchemaObjectTypes { - AuthResult: AuthResult; - Category: Category; - CursorPageInfo: CursorPageInfo; - Mutation: Mutation; - Post: Post; - PostsConnection: PostsConnection; - Query: Query; - Subscription: Subscription; - User: User; -} -export type SchemaObjectTypesNames = - | 'AuthResult' - | 'Category' - | 'CursorPageInfo' - | 'Mutation' - | 'Post' - | 'PostsConnection' - | 'Query' - | 'Subscription' - | 'User'; - export interface GeneratedSchema { query: Query; mutation: Mutation; diff --git a/integration/graphql-17/src/schema.generated.ts b/integration/graphql-17/src/schema.generated.ts index 20bfe6acc..7f0546e67 100644 --- a/integration/graphql-17/src/schema.generated.ts +++ b/integration/graphql-17/src/schema.generated.ts @@ -45,13 +45,6 @@ export interface Subscription { __typename?: 'Subscription'; } -export interface SchemaObjectTypes { - Mutation: Mutation; - Query: Query; - Subscription: Subscription; -} -export type SchemaObjectTypesNames = 'Mutation' | 'Query' | 'Subscription'; - export interface GeneratedSchema { query: Query; mutation: Mutation; diff --git a/internal/website/docs/cli/codegen.mdx b/internal/website/docs/cli/codegen.mdx index 93afb7374..534c01bda 100644 --- a/internal/website/docs/cli/codegen.mdx +++ b/internal/website/docs/cli/codegen.mdx @@ -37,17 +37,19 @@ By default with `react` & `subscriptions` turned on, the generated client files ```ts import { createReactClient } from '@gqty/react'; -import { createSubscriptionsClient } from '@gqty/subscriptions'; +import { createClient as createSubscriptionsClient } from 'graphql-ws'; import { createClient, QueryFetcher } from 'gqty'; import { GeneratedSchema, generatedSchema, scalarsEnumsHash, - SchemaObjectTypes, - SchemaObjectTypesNames, } from './schema.generated'; -const queryFetcher: QueryFetcher = async function (query, variables) { +const queryFetcher: QueryFetcher = async function ({ + query, + variables, + operationName, +}) { // Modify "/api/graphql" if needed const response = await fetch('/api/graphql', { method: 'POST', @@ -57,6 +59,7 @@ const queryFetcher: QueryFetcher = async function (query, variables) { body: JSON.stringify({ query, variables, + operationName, }), mode: 'cors', }); @@ -69,7 +72,8 @@ const queryFetcher: QueryFetcher = async function (query, variables) { const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL('/api/graphql', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); @@ -78,15 +82,13 @@ const subscriptionsClient = }) : undefined; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, - subscriptionsClient, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, }); export const { diff --git a/internal/website/docs/client/config.mdx b/internal/website/docs/client/config.mdx index 9ba9785f9..78b4fe2a5 100644 --- a/internal/website/docs/client/config.mdx +++ b/internal/website/docs/client/config.mdx @@ -7,30 +7,35 @@ sidebar_label: Configuration The Core Client has some configurations you can set manually: ```ts -createClient({ +createClient({ // Required configuration schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + subscriber: subscriptionsClient, + }, // Optional configurable options - - catchSelectionsTimeMS: 10, - retry: true, - normalization: true, - subscriptionsClient, + cacheOptions: { + maxAge: 3600, + normalization: true, + staleWhileRevalidate: 600, + }, + fetchOptions: { + retryPolicy: true, + }, }); ``` ## ClientOptions -| Name | Type | Default Value | Description | -| --------------------- | ----------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| catchSelectionsTimeMS | `number` | `10` | Amount of time in milliseconds for the scheduler to wait for grouping data selections together | -| retry | [`RetryOptions`](#retryoptions) | `true` | Retry on error behavior | -| normalization | `boolean` or [`NormalizationOptions`](#normalization) | `true` | Enable, disable and configure [Normalization](#normalization) | -| subscriptionsClient | [`SubscriptionsClient`](/docs/client/subscriptions) | `undefined` | Subscriptions client | -| depthLimit | `number` | `15` | Set the maximum depth limit, needed to prevent possible infinite recursion. After the specified depth is reached, the proxy creation is stopped returning `null` | +| Name | Type | Default Value | Description | +| ------------- | ----------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| retryPolicy | [`RetryOptions`](#retryoptions) | `true` | Retry on error behavior | +| normalization | `boolean` or [`NormalizationOptions`](#normalization) | `true` | Enable, disable and configure [Normalization](#normalization) | +| subscriber | [`subscriber`](/docs/client/subscriptions) | `undefined` | Subscriptions client | +| depthLimit | `number` | `15` | Set the maximum depth limit, needed to prevent possible infinite recursion. After the specified depth is reached, the proxy creation is stopped returning `null` | ## RetryOptions @@ -38,9 +43,9 @@ By default GQty has a retry policy of `3` max retries, with a delay of a standar You can customize it this way: -- `retry = false` to disable it. -- `retry = 6` it will retry failing requests `6` times, with the standard back-off delay. -- `retry = true` to use the default `3` max retries, with a delay of standard, a back-off delay. +- `retryPolicy = false` to disable it. +- `retryPolicy = 6` it will retry failing requests `6` times, with the standard back-off delay. +- `retryPolicy = true` to use the default `3` max retries, with a delay of standard, a back-off delay. - `{ maxRetries: 6, retryDelay: 2000 }` for `6` max retries, with flat 2000ms of delay per retry. - `{ retryDelay: function customRetryDelay(attemptIndex) { ... } }` for `3` max retries with custom back-off delay, and so on... @@ -51,9 +56,11 @@ GQty has support for normalization, which helps to reduce data redundancy and im It is `enabled` by default, but you can disable it, which will disable the need of automatically fetching `__typename` and `id's` and all the computing logic needed to support it. ```ts -createClient({ +createClient({ // ... - normalization: false, + cacheOptions: { + normalization: false, + }, }); ``` @@ -70,10 +77,10 @@ It gives an incoming object with it's `__typename` and it should return: - Or '**undefined**', to fallback to either default or custom [`keyFields`](#keyfields) ```ts -createClient({ +createClient({ // ... normalization: { - identifier(obj) { + identity(obj) { switch (obj.__typename) { case 'User': { if (obj.email) { @@ -90,7 +97,7 @@ createClient({ }); ``` -### keyFields +### schemaKeys Auto-fetch & object identifier customization. @@ -100,13 +107,13 @@ Auto-fetch & object identifier customization. Set custom **id's** of any object type in your schema. **IMPORTANT**: Please make sure to only put [`Scalars`](https://graphql.org/learn/schema/#scalar-types) -without any variable needed as `keyFields` +without any variable needed as `schemaKeys` ```ts -createClient({ +createClient({ // ... normalization: { - keyFields: { + schemaKeys: { User: ['email'], }, }, diff --git a/internal/website/docs/client/persistence.mdx b/internal/website/docs/client/persistence.mdx index 0d25567ae..87a030ae4 100644 --- a/internal/website/docs/client/persistence.mdx +++ b/internal/website/docs/client/persistence.mdx @@ -41,14 +41,12 @@ import { debounce } from 'gqty'; // ... -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, // ... }); @@ -80,14 +78,12 @@ import { debounce } from 'gqty'; import localForage from 'localforage'; // import AsyncStorage from '@react-native-async-storage/async-storage'; -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, // ... }); diff --git a/internal/website/docs/client/subscriptions.mdx b/internal/website/docs/client/subscriptions.mdx index e2c832c6f..933812c1d 100644 --- a/internal/website/docs/client/subscriptions.mdx +++ b/internal/website/docs/client/subscriptions.mdx @@ -20,7 +20,8 @@ If you activated `subscriptions` in the [CLI Configuration](/docs/cli/config) yo const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL('${endpoint}', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); @@ -31,60 +32,17 @@ const subscriptionsClient = //... -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ // ... - subscriptionsClient, + fetchOptions: { + subscriber: subscriptionsClient, + }, }); ``` It basically enables subscriptions only on client side, in case you are using [SSR](/docs/react/ssr). -It's important to note that `wsEndpoint` can be a `string`, a `function` that returns a `string` or and an `async function` that returns a `string`. - -### setConnectionParams - -`subscriptionsClient` returns a helper in where you can set the connection parameters for the websocket connection, normally used for `authorization` purposes. - -The second parameter is an optional boolean flag that automatically will reset the websocket connection if it's already connected. - -```ts -const subscriptionsClient = - typeof window !== 'undefined' - ? createSubscriptionsClient({ - wsEndpoint: () => { - // Modify if needed - const url = new URL('${endpoint}', window.location.href); - url.protocol = url.protocol.replace('http', 'ws'); - return url.href; - }, - }) - : undefined; - -const { setConnectionParams } = subscriptionsClient || {}; - -export { setConnectionParams }; - -// ... -``` - -```ts -import { setConnectionParams } from '../gqty'; - -// ... - -let resetWebsocketConnection = true; - -setConnectionParams( - { - token: 'zLjYkmrdX5...', - }, - resetWebsocketConnection -); -``` +It's important to note that `url` can be a `string`, a `function` that returns a `string` or and an `async function` that returns a `string`. ### Lazy behavior diff --git a/internal/website/docs/development/logger.mdx b/internal/website/docs/development/logger.mdx index 0dc30233b..43af8c63c 100644 --- a/internal/website/docs/development/logger.mdx +++ b/internal/website/docs/development/logger.mdx @@ -20,14 +20,12 @@ You can improve the development experience using a `Logger` of your GQty usage, // ... -export const client = createClient< - GeneratedSchema, - SchemaObjectTypesNames, - SchemaObjectTypes ->({ +export const client = createClient({ schema: generatedSchema, - scalarsEnumsHash, - queryFetcher, + scalars: scalarsEnumsHash, + fetchOptions: { + fetcher: queryFetcher, + }, }); if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') { diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index f5b883c8b..8c2c5ebab 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -978,7 +978,8 @@ export const generatedSchema = {${generatedSchemaCodeString}}; const subscriptionsClient = typeof window !== "undefined" ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL("${endpoint}", window.location.href); url.protocol = url.protocol.replace('http', 'ws'); diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index 1d791f12d..5ec7a3507 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -159,7 +159,8 @@ test('basic functionality works', async () => { const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL('/api/graphql', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); @@ -1395,7 +1396,8 @@ test('javascript output works', async () => { const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - wsEndpoint: () => { + lazy: true, + url: () => { // Modify if needed const url = new URL('/api/graphql', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index 1c51668fc..b53ea61c3 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -548,10 +548,10 @@ export const createTestClient = async ( const subscriptionsClient = config?.subscriptions ? createWsClient({ - url: client.endpoint.replace('http:', 'ws:'), + lazy: true, retryAttempts: 0, + url: client.endpoint.replace('http:', 'ws:'), webSocketImpl: WebSocket, - lazy: true, }) : undefined; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2298a9368..17a8dc2f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -287,6 +287,9 @@ importers: '@emotion/styled': specifier: ^11.10.6 version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@envelop/core': + specifier: ^3.0.6 + version: 3.0.6 '@faker-js/faker': specifier: ^7.6.0 version: 7.6.0 @@ -310,7 +313,7 @@ importers: version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-dataloader': specifier: ^0.8.0 - version: 0.8.0(@envelop/core@3.0.4)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-schema': specifier: ^0.9.0 version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) @@ -350,6 +353,9 @@ importers: graphql-upload: specifier: ^13.0.0 version: 13.0.0(graphql@16.6.0) + graphql-ws: + specifier: ^5.11.3 + version: 5.11.3(graphql@16.6.0) localforage: specifier: ^1.10.0 version: 1.10.0 @@ -380,6 +386,9 @@ importers: react-intersection-observer: specifier: ^9.4.3 version: 9.4.3(react@17.0.2) + react-native: + specifier: ^0.71.4 + version: 0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3) react-ssr-prepass: specifier: ^1.5.0 version: 1.5.0(react@17.0.2) @@ -393,6 +402,12 @@ importers: specifier: ^2.0.6 version: 2.0.6(react-dom@17.0.2)(react@17.0.2) devDependencies: + '@babel/core': + specifier: ^7.21.0 + version: 7.21.0 + '@babel/preset-env': + specifier: ^7.20.2 + version: 7.21.4(@babel/core@7.21.0) '@fastify/nextjs': specifier: ^9.2.0 version: 9.2.0(next@12.3.4) @@ -976,7 +991,7 @@ importers: version: 1.5.0(react@17.0.2) use-sync-external-store: specifier: ^1.2.0 - version: 1.2.0(react@17.0.2) + version: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -1261,7 +1276,7 @@ packages: '@babel/parser': 7.21.2 '@babel/runtime': 7.21.0 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) chalk: 4.1.2 fb-watchman: 2.0.2 @@ -1291,40 +1306,9 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data@7.20.1: - resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} - engines: {node: '>=6.9.0'} - - /@babel/compat-data@7.21.0: - resolution: {integrity: sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==} - engines: {node: '>=6.9.0'} - /@babel/compat-data@7.21.4: resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} engines: {node: '>=6.9.0'} - dev: false - - /@babel/core@7.19.6: - resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) - '@babel/helper-module-transforms': 7.19.6 - '@babel/helpers': 7.20.1 - '@babel/parser': 7.20.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.21.2 - '@babel/types': 7.20.0 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color /@babel/core@7.21.0: resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} @@ -1333,13 +1317,13 @@ packages: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-module-transforms': 7.21.2 '@babel/helpers': 7.21.0 '@babel/parser': 7.21.2 '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -1352,7 +1336,7 @@ packages: resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 @@ -1361,7 +1345,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} @@ -1369,32 +1353,6 @@ packages: dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 '@babel/types': 7.21.4 - dev: false - - /@babel/helper-compilation-targets@7.20.0(@babel/core@7.19.6): - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.1 - '@babel/core': 7.19.6 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - - /@babel/helper-compilation-targets@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.21.0 - '@babel/core': 7.21.0 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} @@ -1408,7 +1366,6 @@ packages: browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 - dev: false /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} @@ -1437,7 +1394,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.3.2 - dev: false /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.0): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -1453,7 +1409,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} @@ -1464,67 +1419,51 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 - dev: false /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.21.4 + dev: false /@babel/helper-module-imports@7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 - dev: false - - /@babel/helper-module-transforms@7.19.6: - resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.19.4 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.21.2 - '@babel/types': 7.20.0 - transitivePeerDependencies: - - supports-color /@babel/helper-module-transforms@7.21.2: resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color @@ -1532,7 +1471,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} @@ -1551,7 +1490,6 @@ packages: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} @@ -1562,33 +1500,27 @@ packages: '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color - /@babel/helper-simple-access@7.19.4: - resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} @@ -1598,10 +1530,6 @@ packages: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} @@ -1616,17 +1544,6 @@ packages: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color - dev: false - - /@babel/helpers@7.20.1: - resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.21.2 - '@babel/types': 7.20.0 - transitivePeerDependencies: - - supports-color /@babel/helpers@7.21.0: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} @@ -1634,7 +1551,7 @@ packages: dependencies: '@babel/template': 7.20.7 '@babel/traverse': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color @@ -1646,19 +1563,12 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.20.1: - resolution: {integrity: sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.0 - /@babel/parser@7.21.2: resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1668,7 +1578,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} @@ -1680,7 +1589,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -1695,7 +1603,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -1721,7 +1628,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} @@ -1732,7 +1638,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.21.0): resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} @@ -1754,7 +1659,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} @@ -1765,7 +1669,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} @@ -1776,7 +1679,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -1787,7 +1689,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} @@ -1798,7 +1699,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -1806,12 +1706,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.0 + '@babel/compat-data': 7.21.4 '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -1822,7 +1722,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} @@ -1834,7 +1733,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) - dev: false /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} @@ -1847,7 +1745,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} @@ -1862,7 +1759,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -1873,15 +1769,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.6): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -1890,22 +1777,13 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.19.6): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.6): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): @@ -1924,7 +1802,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -1933,7 +1810,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-export-default-from@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} @@ -1952,7 +1828,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} @@ -1971,22 +1846,13 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.19.6): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.0): @@ -1996,16 +1862,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.6): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} @@ -2024,15 +1880,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.6): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.0): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -2041,15 +1888,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -2058,15 +1896,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.6): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -2075,15 +1904,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -2093,14 +1913,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -2108,15 +1920,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.19.6): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -2125,7 +1928,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -2135,16 +1937,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.19.6): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -2154,16 +1946,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.19.6): - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.6 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.0): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} @@ -2173,16 +1955,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} @@ -2192,7 +1964,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} @@ -2206,7 +1977,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -2234,7 +2004,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -2245,15 +2015,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.21.0): - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} @@ -2263,16 +2024,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 - dev: false - - /@babel/plugin-transform-destructuring@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -2282,7 +2033,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -2293,7 +2043,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} @@ -2303,7 +2052,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -2314,17 +2062,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - dev: false - - /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.21.0): - resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} @@ -2335,16 +2072,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) - dev: false - - /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.21.0): - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} @@ -2354,7 +2081,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -2363,7 +2089,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.20.7(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 @@ -2396,20 +2122,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false - - /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.21.0): - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.0): resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} @@ -2423,7 +2135,6 @@ packages: '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.0): resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} @@ -2438,7 +2149,6 @@ packages: '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} @@ -2451,7 +2161,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color - dev: false /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} @@ -2462,7 +2171,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} @@ -2472,7 +2180,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -2486,15 +2193,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters@7.20.7(@babel/core@7.21.0): - resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} @@ -2503,7 +2201,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -2549,10 +2246,10 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) - '@babel/types': 7.21.2 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) + '@babel/types': 7.21.4 /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.0): resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} @@ -2563,7 +2260,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 - dev: false /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} @@ -2573,7 +2269,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} @@ -2601,16 +2296,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-transform-spread@7.19.0(@babel/core@7.21.0): - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} @@ -2620,7 +2305,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: false /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -2630,7 +2314,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -2649,7 +2332,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} @@ -2674,7 +2356,6 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -2685,7 +2366,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - dev: false /@babel/preset-env@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} @@ -2771,7 +2451,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /@babel/preset-flow@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==} @@ -2796,7 +2475,6 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) '@babel/types': 7.21.4 esutils: 2.0.3 - dev: false /@babel/preset-typescript@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} @@ -2830,7 +2508,6 @@ packages: /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: false /@babel/runtime@7.20.6: resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} @@ -2844,21 +2521,13 @@ packages: dependencies: regenerator-runtime: 0.13.11 - /@babel/template@7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 - /@babel/template@7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@babel/traverse@7.21.2: resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} @@ -2871,28 +2540,12 @@ packages: '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.20.0: - resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@babel/types@7.21.2: - resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - /@babel/types@7.21.4: resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} engines: {node: '>=6.9.0'} @@ -2900,7 +2553,6 @@ packages: '@babel/helper-string-parser': 7.19.4 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - dev: false /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -4036,24 +3688,31 @@ packages: '@envelop/types': 3.0.1 tslib: 2.4.0 - /@envelop/dataloader@4.0.4(@envelop/core@3.0.4)(dataloader@2.1.0): + /@envelop/core@3.0.6: + resolution: {integrity: sha512-06t1xCPXq6QFN7W1JUEf68aCwYN0OUDNAIoJe7bAqhaoa2vn7NCcuX1VHkJ/OWpmElUgCsRO6RiBbIru1in0Ig==} + dependencies: + '@envelop/types': 3.0.2 + tslib: 2.5.0 + dev: false + + /@envelop/dataloader@4.0.4(@envelop/core@3.0.6)(dataloader@2.1.0): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} peerDependencies: '@envelop/core': ^3.0.4 dataloader: ^2.0.0 dependencies: - '@envelop/core': 3.0.4 + '@envelop/core': 3.0.6 dataloader: 2.1.0 tslib: 2.5.0 dev: false - /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.4)(graphql@16.6.0): + /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.6)(graphql@16.6.0): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@envelop/core': 3.0.4 + '@envelop/core': 3.0.6 graphql: 16.6.0 tslib: 2.5.0 dev: false @@ -4063,6 +3722,12 @@ packages: dependencies: tslib: 2.5.0 + /@envelop/types@3.0.2: + resolution: {integrity: sha512-pOFea9ha0EkURWxJ/35axoH9fDGP5S2cUu/5Mmo9pb8zUf+TaEot8vB670XXihFEn/92759BMjLJNWBKmNhyng==} + dependencies: + tslib: 2.5.0 + dev: false + /@esbuild/android-arm64@0.17.12: resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} engines: {node: '>=12'} @@ -4708,14 +4373,14 @@ packages: - supports-color dev: false - /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.4)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@envelop/dataloader': 4.0.4(@envelop/core@3.0.4)(dataloader@2.1.0) - '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.4)(graphql@16.6.0) + '@envelop/dataloader': 4.0.4(@envelop/core@3.0.6)(dataloader@2.1.0) + '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.6.0) dataloader: 2.1.0 graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: @@ -5415,7 +5080,7 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -6539,7 +6204,7 @@ packages: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 @@ -6547,18 +6212,18 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.21.2 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} @@ -7453,8 +7118,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001429 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001460 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -7552,17 +7217,17 @@ packages: '@babel/core': 7.21.0 dev: false - /babel-jest@29.5.0(@babel/core@7.19.6): + /babel-jest@29.5.0(@babel/core@7.21.0): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.19.6) + babel-preset-jest: 29.5.0(@babel/core@7.21.0) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -7586,7 +7251,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 - '@babel/types': 7.21.2 + '@babel/types': 7.21.4 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 @@ -7618,7 +7283,6 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.0): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -7630,7 +7294,6 @@ packages: core-js-compat: 3.30.0 transitivePeerDependencies: - supports-color - dev: false /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.0): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -7641,29 +7304,28 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) transitivePeerDependencies: - supports-color - dev: false /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.19.6): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.0): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.6 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.6) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.19.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.19.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.19.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.19.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.19.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.19.6) + '@babel/core': 7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.0) /babel-preset-fbjs@3.4.0(@babel/core@7.21.0): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} @@ -7675,41 +7337,41 @@ packages: '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-destructuring': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.21.0) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.21.0) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.0) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.0) '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.21.0) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.20.7(@babel/core@7.21.0) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.21.0) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color - /babel-preset-jest@29.5.0(@babel/core@7.19.6): + /babel-preset-jest@29.5.0(@babel/core@7.21.0): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.0) /backo2@1.0.2: resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} @@ -7934,16 +7596,6 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001429 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - /browserslist@4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -8659,7 +8311,6 @@ packages: resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} dependencies: browserslist: 4.21.5 - dev: false /core-js@3.26.0: resolution: {integrity: sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==} @@ -12040,11 +11691,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.5 - babel-jest: 29.5.0(@babel/core@7.19.6) + babel-jest: 29.5.0(@babel/core@7.21.0) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -12308,18 +11959,18 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.19.6 + '@babel/core': 7.21.0 '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.6) - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.19.6) + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) '@babel/traverse': 7.21.2 - '@babel/types': 7.20.0 + '@babel/types': 7.21.4 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.0) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -12576,7 +12227,6 @@ packages: /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - dev: false /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -12774,7 +12424,6 @@ packages: /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: false /lodash.flatmap@4.5.0: resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} @@ -14177,7 +13826,7 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) styled-jsx: 5.0.7(@babel/core@7.21.0)(react@17.0.2) - use-sync-external-store: 1.2.0(react@17.0.2) + use-sync-external-store: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) optionalDependencies: '@next/swc-android-arm-eabi': 12.3.4 '@next/swc-android-arm64': 12.3.4 @@ -14268,9 +13917,6 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - /node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} @@ -15244,7 +14890,7 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: false @@ -15286,7 +14932,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 focus-lock: 0.9.2 prop-types: 15.8.1 react: 17.0.2 @@ -15438,7 +15084,7 @@ packages: regenerator-runtime: 0.13.11 scheduler: 0.23.0 stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0(react@17.0.2) + use-sync-external-store: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) whatwg-fetch: 3.6.2 ws: 6.2.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: @@ -15749,11 +15395,9 @@ packages: engines: {node: '>=4'} dependencies: regenerate: 1.4.2 - dev: false /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: false /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -15762,7 +15406,6 @@ packages: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: '@babel/runtime': 7.21.0 - dev: false /regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} @@ -15796,7 +15439,6 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - dev: false /registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} @@ -15817,7 +15459,6 @@ packages: hasBin: true dependencies: jsesc: 0.5.0 - dev: false /rehype-slug@5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} @@ -16042,7 +15683,7 @@ packages: /rtl-css-js@1.16.0: resolution: {integrity: sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 dev: false /run-applescript@5.0.0: @@ -17322,8 +16963,8 @@ packages: resolution: {integrity: sha512-2Vg09mp+nA70AWUedJ8WRgB2me3buq7JGbOnjHnFnNaBzomVu5k7lJ9YGpByIlre+UYr7QRhtlj7+IUKxvCrUA==} engines: {node: '>=12.13.0'} dependencies: - '@babel/parser': 7.20.1 - '@babel/template': 7.18.10 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 autoprefixer: 10.4.13(postcss@8.4.21) babel-plugin-macros: 2.8.0 chalk: 4.1.2 @@ -17451,7 +17092,6 @@ packages: /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} - dev: false /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -17459,17 +17099,14 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - dev: false /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} - dev: false /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - dev: false /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -17619,16 +17256,6 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - /update-browserslist-db@1.0.10(browserslist@4.21.5): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -17736,7 +17363,7 @@ packages: tslib: 2.5.0 dev: false - /use-sync-external-store@1.2.0(react@17.0.2): + /use-sync-external-store@1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 From 9e5fefc2867fdc42f3850e18171cee9e8cc2aa16 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 13 Mar 2023 19:48:33 +0800 Subject: [PATCH 015/122] feat(packages/gqty): compat with queryFetcher and subsscriptionsClient --- packages/gqty/package.json | 11 +- packages/gqty/src/Cache/query.ts | 6 +- packages/gqty/src/Client/compat/client.ts | 7 + .../gqty/src/Client/compat/queryFetcher.ts | 7 + .../src/Client/compat/subscriptionsClient.ts | 40 ++++++ packages/gqty/src/Client/debugger.ts | 10 +- packages/gqty/src/Client/index.ts | 89 ++++++++++-- packages/gqty/src/Client/resolveSelections.ts | 130 +++++++++++------- pnpm-lock.yaml | 11 +- 9 files changed, 242 insertions(+), 69 deletions(-) create mode 100644 packages/gqty/src/Client/compat/queryFetcher.ts create mode 100644 packages/gqty/src/Client/compat/subscriptionsClient.ts diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 88c31e806..abde9fd3d 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -64,6 +64,7 @@ "cross-env": "^7.0.3", "esbuild": "^0.17.12", "graphql": "^16.6.0", + "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", "jest": "^29.5.0", "just-memoize": "^2.2.0", @@ -82,11 +83,19 @@ "ws": "^8.13.0" }, "peerDependencies": { - "graphql": "*" + "graphql": "*", + "graphql-sse": "^2.1.0", + "graphql-ws": "^5.11.3" }, "peerDependenciesMeta": { "graphql": { "optional": true + }, + "graphql-sse": { + "optional": true + }, + "graphql-ws": { + "optional": true } }, "engines": { diff --git a/packages/gqty/src/Cache/query.ts b/packages/gqty/src/Cache/query.ts index 5f8117e61..0eebe31e7 100644 --- a/packages/gqty/src/Cache/query.ts +++ b/packages/gqty/src/Cache/query.ts @@ -1,4 +1,4 @@ -import type { ExecutionResult } from 'graphql-ws'; +import type { ExecutionResult } from 'graphql'; import type { Cache } from '.'; /** Global query deduplication when cache instance is not provided. */ @@ -48,7 +48,9 @@ export const dedupePromise = < }; /** Retrieve active promises associated provided cache, useful for SSR. */ -export const getActivePromises = (cache?: Cache) => [ +export const getActivePromises = ( + cache?: Cache +): Promise[] => [ ...(deduplicationCache.get(cache ?? nullObjectKey)?.values() ?? []), ]; diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index a6c9538cf..fc87e65b5 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -15,8 +15,10 @@ import { createLegacyPrepareRender, LegacyPrepareRender, } from './prepareRender'; +import type { LegacyQueryFetcher } from './queryFetcher'; import { createRefetch, LegacyRefetch } from './refetch'; import { createLegacyResolved, LegacyResolved } from './resolved'; +import type { LegacySubscriptionClient } from './subscriptionsClient'; import { createLegacyTrack, LegacyTrack } from './track'; export type { @@ -56,6 +58,11 @@ export type CreateLegacyClientOptions = { __depthLimit?: number; }; +export type LegacyFetchers = { + queryFetcher?: LegacyQueryFetcher; + subscriptionClient?: LegacySubscriptionClient; +}; + /** * Subscribing to selections made by global accessors, exposed for testing * purpose. diff --git a/packages/gqty/src/Client/compat/queryFetcher.ts b/packages/gqty/src/Client/compat/queryFetcher.ts new file mode 100644 index 000000000..d9f479605 --- /dev/null +++ b/packages/gqty/src/Client/compat/queryFetcher.ts @@ -0,0 +1,7 @@ +import type { ExecutionResult } from 'graphql'; + +export type LegacyQueryFetcher> = ( + query: string, + variables: Record, + fetchOptions?: Omit +) => Promise> | ExecutionResult; diff --git a/packages/gqty/src/Client/compat/subscriptionsClient.ts b/packages/gqty/src/Client/compat/subscriptionsClient.ts new file mode 100644 index 000000000..8ba94b0f8 --- /dev/null +++ b/packages/gqty/src/Client/compat/subscriptionsClient.ts @@ -0,0 +1,40 @@ +import type { Promisable } from 'type-fest'; +import type { GQtyError } from '../../Error'; + +export type LegacySubscriptionClient = { + subscribe(opts: { + query: string; + variables: Record | undefined; + selections: Selection[]; + events: + | ((ctx: { + selections: Selection[]; + query: string; + variables: Record | undefined; + operationId: string; + }) => SubscribeEvents) + | SubscribeEvents; + cacheKey?: string; + }): Promisable<{ + unsubscribe: () => Promise; + operationId: string; + }>; + unsubscribe(selections: Selection[] | Set): Promise; + close(): Promise; + setConnectionParams( + connectionParams: + | (() => Promisable>) + | Record, + restartClient?: boolean + ): void; +}; + +export interface SubscribeEvents { + onData: (data: Record) => void; + onError: (payload: { + error: GQtyError; + data: Record | null; + }) => void; + onStart?: () => void; + onComplete?: () => void; +} diff --git a/packages/gqty/src/Client/debugger.ts b/packages/gqty/src/Client/debugger.ts index 61baf0729..da6bf0e49 100644 --- a/packages/gqty/src/Client/debugger.ts +++ b/packages/gqty/src/Client/debugger.ts @@ -4,11 +4,11 @@ import type { Selection } from '../Selection'; import type { FetchResult, QueryExtensions } from './resolveSelections'; export type DebugEvent = { - cache?: Cache; // cacheSnapshot - label?: string; // label - request: QueryPayload; // query, variables, operationName, type - result?: FetchResult; // executionResult, error(s) - selections: Set; // selections + cache?: Cache; + label?: string; + request: QueryPayload; + result?: FetchResult; + selections: Set; }; export type DebugEventListener = (event: DebugEvent) => void; diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index b8330035c..e406bc6ce 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,4 +1,10 @@ -import type { Client as SubscriptionsClient } from 'graphql-ws'; +import type { Client as SseClient } from 'graphql-sse'; +import type { + Client as WsClient, + ExecutionResult, + Sink, + SubscribePayload, +} from 'graphql-ws'; import { createSchemaAccessor } from '../Accessor'; import { Cache } from '../Cache'; import { @@ -13,7 +19,11 @@ import type { ScalarsEnumsHash, Schema, } from '../Schema'; -import { createLegacyClient, LegacyClient } from './compat/client'; +import { + createLegacyClient, + LegacyClient, + LegacyFetchers, +} from './compat/client'; import { createContext, CreateContextOptions } from './context'; import { createDebugger } from './debugger'; import { createResolvers, Resolvers } from './resolvers'; @@ -23,6 +33,7 @@ export { getFields, prepass, selectFields } from '../Helpers'; export * as useMetaStateHack from '../Helpers/useMetaStateHack'; export { pick } from '../Utils'; export type { + LegacyFetchers, LegacyHydrateCache, LegacyHydrateCacheOptions, LegacyInlineResolved, @@ -58,6 +69,8 @@ export type SchemaObjects = { [key in SchemaObjectKeys]: { __typename: key }; }; +export type SubscriptionClient = SseClient | WsClient; + export type FetchOptions = Omit & { fetcher: QueryFetcher; @@ -87,7 +100,7 @@ export type FetchOptions = Omit & { retryPolicy?: RetryOptions; /** Client implementation for GraphQL Subscriptions. */ - subscriber?: SubscriptionsClient; + subscriber?: SubscriptionClient; }; export type ClientOptions = { @@ -116,7 +129,13 @@ export type ClientOptions = { __depthLimit?: number; }; -export type Client = Persistors & +export type Client< + TSchema extends BaseGeneratedSchema, + // TODO: compat: remove in next major + _ObjectTypesNames extends string = never, + // TODO: compat: remove in next major + _ObjectTypes extends Record = never +> = Persistors & Resolvers & LegacyClient & { /** Global cache accessors. */ @@ -145,7 +164,63 @@ export const createClient = ({ scalars, schema, __depthLimit = 15, -}: ClientOptions): Client => { + + queryFetcher, + subscriptionClient, +}: ClientOptions & LegacyFetchers): Client => { + // TODO: compat: queryFetcher, remove in next major + fetcher ||= ({ query, variables }, fetchOptions) => + queryFetcher!(query, variables ?? {}, fetchOptions); + + // TODO: compat: subscriptionsClient, remove in next major + subscriber ||= { + subscribe< + TData = Record, + TExtensions = Record + >( + { query, variables }: SubscribePayload, + sink: Sink> + ) { + const maybePromise = subscriptionClient!.subscribe({ + query, + variables: variables ?? {}, + selections: [], + events: { + onComplete: () => { + sink.complete(); + }, + onData: (result) => { + sink.next(result); + }, + onError({ data, error }) { + if ((error && !error.graphQLErrors?.length) || !data) { + sink.error(error); + } else { + sink.next({ data: data as TData, errors: error.graphQLErrors }); + } + }, + }, + }); + + return () => { + if (maybePromise instanceof Promise) { + maybePromise.then(({ unsubscribe }) => { + unsubscribe(); + }); + } else { + (maybePromise as any).unsubscribe(); + } + }; + }, + dispose: () => { + subscriptionClient?.close(); + }, + terminate: () => { + subscriptionClient?.close(); + }, + on: () => () => {}, + }; + const normalizationOptions = normalization === true ? defaultNormalizationOptions @@ -171,7 +246,7 @@ export const createClient = ({ typeKeys: normalizationOptions?.schemaKeys, }; - /** Global scope for accessing the cache via `schema` property. */ + // Global scope for accessing the cache via `schema` property. const clientContext = createContext(defaultContextOptions); const resolvers = createResolvers({ @@ -217,5 +292,3 @@ export const createClient = ({ }), }; }; - -// TODO: Update fetcher in cli codegen to accept QueryPayload diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 453953dd9..cce3722bc 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -1,4 +1,6 @@ import type { ExecutionResult } from 'graphql'; +import type { Client as SseClient } from 'graphql-sse'; +import type { Client as WsClient } from 'graphql-ws'; import { MessageType, SubscribePayload } from 'graphql-ws'; import { CloseEvent, WebSocket } from 'ws'; import type { FetchOptions } from '.'; @@ -146,42 +148,52 @@ export const subscribeSelections = < extensions: { type, hash }, }; - { - const unsub = subscriber?.on('message', (message) => { - switch (message.type) { - case MessageType.ConnectionAck: { - unsub?.(); - onSubscribe?.(); - break; - } - } - }); - } - let subscriptionId: string | undefined; - { - const unsub = subscriber?.on('message', (message) => { - switch (message.type) { - case MessageType.ConnectionAck: { - break; - } - case MessageType.Subscribe: { - if (message.payload.extensions?.hash !== hash) return; - subscriptionId = message.id; + if (isWsClient(subscriber)) { + { + const unsub = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.ConnectionAck: { + unsub?.(); + onSubscribe?.(); + break; + } + } + }); + } - debug?.dispatch({ - cache, - label: `[id=${subscriptionId}] [create]`, - request: queryPayload, - selections, - }); + { + const unsub = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.ConnectionAck: { + break; + } + case MessageType.Subscribe: { + if (message.payload.extensions?.hash !== hash) return; + + subscriptionId = message.id; + + debug?.dispatch({ + cache, + label: `[id=${subscriptionId}] [create]`, + request: queryPayload, + selections, + }); - unsub?.(); - break; + unsub?.(); + break; + } } - } - }); + }); + } + } else if (isSseClient(subscriber)) { + // TODO: Get id via constructor#onMessage option, this requires + // modifications to the generated client. + subscriptionId = 'EventSource'; + onSubscribe?.(); + } else if (type === 'subscription') { + throw new GQtyError(`Please specify a subscriber for subscriptions.`); } const next = ({ data, errors, extensions }: ExecutionResult) => { @@ -348,7 +360,7 @@ const doFetch = async < const doSubscribeOnce = async < TData extends Record = Record >( - payload: SubscribePayload, + { query, variables, operationName }: SubscribePayload, { subscriber }: FetchOptions ) => { if (!subscriber) { @@ -359,28 +371,35 @@ const doSubscribeOnce = async < (resolve, reject) => { let result: any; - const unsubscribe = subscriber.subscribe(payload, { - next(data) { - result = data; - unsubscribe(); - }, - error(error) { - if (isCloseEvent(error)) { - resolve(result); - } else if (Array.isArray(error)) { - reject(GQtyError.fromGraphQLErrors(error)); - } else { - reject(error); - } + const unsubscribe = subscriber.subscribe( + { + query, + variables: variables ?? {}, + operationName: operationName ?? undefined, }, - complete() { - if (!result) { - throw new GQtyError(`Subscription completed without data`); - } + { + next(data) { + result = data; + unsubscribe(); + }, + error(error) { + if (isCloseEvent(error)) { + resolve(result); + } else if (Array.isArray(error)) { + reject(GQtyError.fromGraphQLErrors(error)); + } else { + reject(error); + } + }, + complete() { + if (!result) { + throw new GQtyError(`Subscription completed without data`); + } - resolve(result); - }, - }); + resolve(result); + }, + } + ); } ); }; @@ -397,4 +416,11 @@ export const isCloseEvent = (input: unknown): input is CloseEvent => { ); }; +const isWsClient = (client?: SseClient | WsClient): client is WsClient => { + return client !== undefined && typeof (client as WsClient).on === 'function'; +}; + +const isSseClient = (client?: SseClient | WsClient): client is SseClient => + client !== undefined && !isWsClient(client); + // TODO: Test unsubscribe on both subscription and fetch with concurrent subscribers. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17a8dc2f0..dfde2c799 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -890,6 +890,9 @@ importers: graphql: specifier: ^16.6.0 version: 16.6.0 + graphql-sse: + specifier: ^2.1.0 + version: 2.1.0(graphql@16.6.0) graphql-ws: specifier: ^5.11.3 version: 5.11.3(graphql@16.6.0) @@ -10637,7 +10640,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '*' + graphql: '>=0.11 <=16' dependencies: graphql: 16.6.0 @@ -17955,9 +17958,15 @@ packages: engines: {node: ^12.20.0 || >=14.13.0} peerDependencies: graphql: '*' + graphql-sse: ^2.1.0 + graphql-ws: ^5.11.3 peerDependenciesMeta: graphql: optional: true + graphql-sse: + optional: true + graphql-ws: + optional: true dependencies: '@gqty/utils': link:packages/utils/dist flatted: 3.2.7 From 40f1e4466c85a75e6e9c57018e0ba30510eb20e3 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 14 Mar 2023 19:14:54 +0800 Subject: [PATCH 016/122] compat: queryFetcher and subscriptionsClient --- packages/gqty/src/Accessor/index.ts | 7 +- packages/gqty/src/Accessor/resolve.ts | 4 +- packages/gqty/src/Client/compat/client.ts | 13 +- .../gqty/src/Client/compat/queryFetcher.ts | 8 + packages/gqty/src/Client/compat/resolved.ts | 179 +++------- .../src/Client/compat/subscriptionsClient.ts | 62 +++- packages/gqty/src/Client/index.ts | 107 ++---- packages/gqty/src/Client/resolveSelections.ts | 317 +++++++++--------- packages/gqty/src/Client/updateCaches.ts | 17 +- packages/gqty/test/cache.test.ts | 22 +- 10 files changed, 358 insertions(+), 378 deletions(-) diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index cababc33f..56c92a530 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -24,12 +24,9 @@ export function createSchemaAccessor( return () => context.cache.toJSON(); } - if (!Reflect.has(target, key)) return; - - const schemaKey = key as keyof TSchema; - if ( - !Reflect.get(target[schemaKey] as object, '__typename') || + !Reflect.has(target, key) || + !Reflect.get(target[key as keyof TSchema] as object, '__typename') || !context.schema[key] ) return; diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index e856bfd28..cd1f9b674 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -44,7 +44,7 @@ export const resolve = ( } const cache = - selection.parent === selection.root + selection.parent === selection.root && key !== '__typename' ? // The way we structure the cache for SWR requires special treatment // for 2nd level selections, e.g. query.hello, mutation.update()... etc. context.cache.get(cacheKeys.join('.'), context.cacheOptions) ?? { @@ -66,7 +66,7 @@ export const resolve = ( if ( !isUnion && selection.root !== selection && - selection.root !== selection.parent && + (selection.root !== selection.parent || key === '__typename') && data !== null ) { if (Array.isArray(data)) { diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index fc87e65b5..22de56b77 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -18,7 +18,7 @@ import { import type { LegacyQueryFetcher } from './queryFetcher'; import { createRefetch, LegacyRefetch } from './refetch'; import { createLegacyResolved, LegacyResolved } from './resolved'; -import type { LegacySubscriptionClient } from './subscriptionsClient'; +import type { LegacySubscriptionsClient } from './subscriptionsClient'; import { createLegacyTrack, LegacyTrack } from './track'; export type { @@ -31,8 +31,14 @@ export type { } from './inlineResolved'; export type { LegacyMutate, LegacyMutateHelpers } from './mutate'; export type { LegacyPrefetch } from './prefetch'; +export type { LegacyQueryFetcher } from './queryFetcher'; export type { LegacyRefetch } from './refetch'; export type { LegacyResolved, LegacyResolveOptions } from './resolved'; +export type { LegacySelection } from './selection'; +export type { + LegacySubscribeEvents, + LegacySubscriptionsClient, +} from './subscriptionsClient'; export type { LegacyTrack, LegacyTrackCallInfo, @@ -58,9 +64,10 @@ export type CreateLegacyClientOptions = { __depthLimit?: number; }; -export type LegacyFetchers = { +export type LegacyClientOptions = { queryFetcher?: LegacyQueryFetcher; - subscriptionClient?: LegacySubscriptionClient; + scalarsEnumsHash: ScalarsEnumsHash; + subscriptionsClient?: LegacySubscriptionsClient; }; /** diff --git a/packages/gqty/src/Client/compat/queryFetcher.ts b/packages/gqty/src/Client/compat/queryFetcher.ts index d9f479605..547420336 100644 --- a/packages/gqty/src/Client/compat/queryFetcher.ts +++ b/packages/gqty/src/Client/compat/queryFetcher.ts @@ -1,7 +1,15 @@ import type { ExecutionResult } from 'graphql'; +import type { QueryFetcher } from '../../Schema'; export type LegacyQueryFetcher> = ( query: string, variables: Record, fetchOptions?: Omit ) => Promise> | ExecutionResult; + +export const createLegacyQueryFetcher = + = Record>( + queryFetcher: LegacyQueryFetcher + ): QueryFetcher => + ({ query, variables = {} }, fetchOptions) => + queryFetcher(query, variables, fetchOptions) as ExecutionResult; diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index 703004cca..f5340dd17 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -1,16 +1,6 @@ -import type { QueryPayload } from 'gqty/Schema'; -import type { GraphQLError } from 'graphql'; -import { MessageType } from 'graphql-ws'; -import type { CloseEvent } from 'ws'; import type { BaseGeneratedSchema } from '..'; import { GQtyError, RetryOptions } from '../../Error'; -import { buildQuery } from '../../QueryBuilder'; -import { - FetchResult, - fetchSelections, - isCloseEvent, - QueryExtensions, -} from '../resolveSelections'; +import { fetchSelections, subscribeSelections } from '../resolveSelections'; import { updateCaches } from '../updateCaches'; import type { CreateLegacyMethodOptions } from './client'; import { convertSelection, type LegacySelection } from './selection'; @@ -110,7 +100,8 @@ export const createLegacyResolved = < cache, context: globalContext, debugger: debug, - fetchOptions: { fetcher, subscriber, retryPolicy }, + fetchOptions: { fetcher, retryPolicy }, + fetchOptions: clientFetchOptions, resolvers: { createResolver }, subscribeLegacySelections, }: CreateLegacyMethodOptions): LegacyResolved => { @@ -180,133 +171,55 @@ export const createLegacyResolved = < onNoCacheFound?.(); } - // Subscriptions - buildQuery( - new Set( - [...selections].filter(({ root: { key } }) => key === 'subscription') - ), - operationName - ).map( - ({ - query, - variables, - operationName, - extensions: { type, hash } = {}, - }) => { - if (!type) throw new GQtyError(`Invalid query type: ${type}`); - if (!hash) throw new GQtyError(`Expected query hash: ${hash}`); - - const payload: QueryPayload = { - query, - variables, - operationName, - extensions: { type, hash }, - }; - - let subscriptionId: string | undefined; - subscriber?.on('message', (message) => { - switch (message.type) { - case MessageType.Subscribe: { - if (message.payload.extensions?.hash !== hash) break; - - subscriptionId = message.id; - - debug?.dispatch({ - cache, - label: `[id=${subscriptionId}] [create]`, - request: payload, - selections, - }); - - break; - } + { + // Subscriptions + const unsubscribe = subscribeSelections( + new Set([...selections].filter((s) => s.root.key === 'subscription')), + ({ data, error, extensions }) => { + if (data) { + // Skip the error here, resolved uses callbacks. + updateCaches([{ data, extensions }], targetCaches); } - }); - - const _unsubscribe = subscriber?.subscribe( - { query, variables, operationName }, - { - next(result) { - result.extensions = payload.extensions; - - if (result.data != null) { - updateCaches([result as FetchResult], targetCaches); - } - - debug?.dispatch({ - cache, - label: subscriptionId - ? `[id=${subscriptionId}] [data]` - : undefined, - request: payload, - result: result as FetchResult, - selections, - }); - onSubscription?.({ - type: 'data', - data: dataFn() ?? (result as TData), - unsubscribe, - }); - }, - error(error: Error | readonly GraphQLError[] | CloseEvent) { - if (isCloseEvent(error)) { - unsubscribe(); - return this.complete(); - } - - const theError = Array.isArray(error) - ? GQtyError.fromGraphQLErrors(error) - : GQtyError.create(error); - - debug?.dispatch({ - cache, - label: subscriptionId - ? `[id=${subscriptionId}] [error]` - : undefined, - request: payload, - result: { error: theError }, - selections, - }); - - onSubscription?.({ - type: 'with-errors', - error: theError, - unsubscribe, - }); - }, - complete() { - debug?.dispatch({ - cache, - label: subscriptionId - ? `[id=${subscriptionId}] [unsubscribe]` - : undefined, - request: payload, - selections, - }); - - onSubscription?.({ - type: 'complete', - unsubscribe, - }); - }, + if (error) { + onSubscription?.({ + type: 'with-errors', + unsubscribe: async () => unsubscribe(), + data: dataFn() ?? (data as TData) ?? undefined, + error: GQtyError.create(error), + }); + } else if (data) { + onSubscription?.({ + type: 'data', + unsubscribe: async () => unsubscribe(), + data: dataFn() ?? (data as TData), + }); } - ); - - const unsubscribe = async () => _unsubscribe?.(); - - onSubscription?.({ - type: 'start', - unsubscribe, - }); - } - ); + }, + { + cache, + debugger: debug, + fetchOptions: clientFetchOptions, + operationName, + onSubscribe() { + onSubscription?.({ + type: 'start', + unsubscribe: async () => unsubscribe(), + }); + }, + onComplete() { + onSubscription?.({ + type: 'complete', + unsubscribe: async () => unsubscribe(), + }); + }, + } + ); + } // Queries and mutations await fetchSelections( - new Set( - [...selections].filter(({ root: { key } }) => key !== 'subscription') - ), + new Set([...selections].filter((s) => s.root.key !== 'subscription')), { debugger: debug, fetchOptions: { fetcher, retryPolicy: retry, ...fetchOptions }, diff --git a/packages/gqty/src/Client/compat/subscriptionsClient.ts b/packages/gqty/src/Client/compat/subscriptionsClient.ts index 8ba94b0f8..ed39f0d7d 100644 --- a/packages/gqty/src/Client/compat/subscriptionsClient.ts +++ b/packages/gqty/src/Client/compat/subscriptionsClient.ts @@ -1,7 +1,10 @@ +import type { ExecutionResult } from 'graphql'; +import type { Client, Sink, SubscribePayload } from 'graphql-ws'; import type { Promisable } from 'type-fest'; import type { GQtyError } from '../../Error'; +import type { LegacySelection as Selection } from './selection'; -export type LegacySubscriptionClient = { +export type LegacySubscriptionsClient = { subscribe(opts: { query: string; variables: Record | undefined; @@ -12,8 +15,8 @@ export type LegacySubscriptionClient = { query: string; variables: Record | undefined; operationId: string; - }) => SubscribeEvents) - | SubscribeEvents; + }) => LegacySubscribeEvents) + | LegacySubscribeEvents; cacheKey?: string; }): Promisable<{ unsubscribe: () => Promise; @@ -29,7 +32,7 @@ export type LegacySubscriptionClient = { ): void; }; -export interface SubscribeEvents { +export interface LegacySubscribeEvents { onData: (data: Record) => void; onError: (payload: { error: GQtyError; @@ -38,3 +41,54 @@ export interface SubscribeEvents { onStart?: () => void; onComplete?: () => void; } + +export const createLegacySubscriptionsClient = ( + subscriptionsClient: LegacySubscriptionsClient +): Client => ({ + subscribe: < + TData = Record, + TExtensions = Record + >( + { query, variables }: SubscribePayload, + sink: Sink> + ) => { + const maybePromise = subscriptionsClient.subscribe({ + query, + variables: variables ?? {}, + selections: [], + events: { + onComplete: () => { + sink.complete(); + }, + onData: (result) => { + sink.next(result); + }, + onError({ data, error }) { + // No data or unknown error + if ((error && !error.graphQLErrors?.length) || !data) { + sink.error(error.otherError ?? error); + } else { + sink.next({ data: data as TData, errors: error.graphQLErrors }); + } + }, + }, + }); + + return () => { + if (maybePromise instanceof Promise) { + maybePromise.then(({ unsubscribe }) => { + unsubscribe(); + }); + } else { + (maybePromise as any).unsubscribe(); + } + }; + }, + dispose: () => { + subscriptionsClient.close(); + }, + terminate: () => { + subscriptionsClient.close(); + }, + on: () => () => {}, +}); diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index e406bc6ce..6ff4df822 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,10 +1,5 @@ import type { Client as SseClient } from 'graphql-sse'; -import type { - Client as WsClient, - ExecutionResult, - Sink, - SubscribePayload, -} from 'graphql-ws'; +import type { Client as WsClient } from 'graphql-ws'; import { createSchemaAccessor } from '../Accessor'; import { Cache } from '../Cache'; import { @@ -22,8 +17,10 @@ import type { import { createLegacyClient, LegacyClient, - LegacyFetchers, + LegacyClientOptions, } from './compat/client'; +import { createLegacyQueryFetcher } from './compat/queryFetcher'; +import { createLegacySubscriptionsClient } from './compat/subscriptionsClient'; import { createContext, CreateContextOptions } from './context'; import { createDebugger } from './debugger'; import { createResolvers, Resolvers } from './resolvers'; @@ -33,7 +30,7 @@ export { getFields, prepass, selectFields } from '../Helpers'; export * as useMetaStateHack from '../Helpers/useMetaStateHack'; export { pick } from '../Utils'; export type { - LegacyFetchers, + LegacyClientOptions as LegacyFetchers, LegacyHydrateCache, LegacyHydrateCacheOptions, LegacyInlineResolved, @@ -41,9 +38,13 @@ export type { LegacyMutate, LegacyMutateHelpers, LegacyPrefetch, + LegacyQueryFetcher, LegacyRefetch, LegacyResolved, LegacyResolveOptions, + LegacySelection, + LegacySubscribeEvents, + LegacySubscriptionsClient, LegacyTrack, LegacyTrackCallInfo, LegacyTrackCallType, @@ -94,7 +95,7 @@ export type FetchOptions = Omit & { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: Exclude | 'cache-and-network'; + fetchPolicy?: Exclude; /** Default retry strategy upon fetch failure, configurable on query level. */ retryPolicy?: RetryOptions; @@ -129,13 +130,7 @@ export type ClientOptions = { __depthLimit?: number; }; -export type Client< - TSchema extends BaseGeneratedSchema, - // TODO: compat: remove in next major - _ObjectTypesNames extends string = never, - // TODO: compat: remove in next major - _ObjectTypes extends Record = never -> = Persistors & +export type Client = Persistors & Resolvers & LegacyClient & { /** Global cache accessors. */ @@ -145,7 +140,13 @@ export type Client< subscribeDebugEvents: ReturnType['subscribe']; }; -export const createClient = ({ +export const createClient = < + TSchema extends BaseGeneratedSchema, + // TODO: compat: remove in next major + _ObjectTypesNames extends string = never, + // TODO: compat: remove in next major + _ObjectTypes extends SchemaObjects = never +>({ cacheOptions: { maxAge = 100, normalization = true, @@ -160,66 +161,28 @@ export const createClient = ({ }, subscriber, ...fetchOptions - }, + } = {} as FetchOptions, scalars, schema, __depthLimit = 15, + ...legacyOptions +}: ClientOptions & LegacyClientOptions): Client => { + // TODO: compat: remove in next major + { + if (legacyOptions.queryFetcher) { + fetcher ??= createLegacyQueryFetcher(legacyOptions.queryFetcher); + } - queryFetcher, - subscriptionClient, -}: ClientOptions & LegacyFetchers): Client => { - // TODO: compat: queryFetcher, remove in next major - fetcher ||= ({ query, variables }, fetchOptions) => - queryFetcher!(query, variables ?? {}, fetchOptions); - - // TODO: compat: subscriptionsClient, remove in next major - subscriber ||= { - subscribe< - TData = Record, - TExtensions = Record - >( - { query, variables }: SubscribePayload, - sink: Sink> - ) { - const maybePromise = subscriptionClient!.subscribe({ - query, - variables: variables ?? {}, - selections: [], - events: { - onComplete: () => { - sink.complete(); - }, - onData: (result) => { - sink.next(result); - }, - onError({ data, error }) { - if ((error && !error.graphQLErrors?.length) || !data) { - sink.error(error); - } else { - sink.next({ data: data as TData, errors: error.graphQLErrors }); - } - }, - }, - }); + if (legacyOptions.subscriptionsClient) { + subscriber ??= createLegacySubscriptionsClient( + legacyOptions.subscriptionsClient + ); + } - return () => { - if (maybePromise instanceof Promise) { - maybePromise.then(({ unsubscribe }) => { - unsubscribe(); - }); - } else { - (maybePromise as any).unsubscribe(); - } - }; - }, - dispose: () => { - subscriptionClient?.close(); - }, - terminate: () => { - subscriptionClient?.close(); - }, - on: () => () => {}, - }; + if (legacyOptions.scalarsEnumsHash) { + scalars ??= legacyOptions.scalarsEnumsHash; + } + } const normalizationOptions = normalization === true diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index cce3722bc..03d6edf67 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -76,7 +76,7 @@ export const fetchSelections = < debug?.dispatch({ cache, - request: { query, variables, operationName }, + request: queryPayload, result, selections, }); @@ -87,6 +87,7 @@ export const fetchSelections = < ); export type SubscribeSelectionOptions = FetchSelectionsOptions & { + onComplete?: () => void; onSubscribe?: () => void; }; @@ -123,187 +124,197 @@ export const subscribeSelections = < fetchOptions: { subscriber, ...fetchOptions }, operationName, onSubscribe, + onComplete, }: SubscribeSelectionOptions ): Unsubscribe => { const unsubscribers = new Set<() => void>(); - buildQuery(selections, operationName).map( - ({ query, variables, operationName, extensions: { type, hash } = {} }) => { - if (!type) { - throw new GQtyError(`Invalid query type: ${type}`); - } - - if (!hash) { - throw new GQtyError(`Expected query hash.`); - } - - if (type === 'subscription' && !subscriber) { - throw new GQtyError(`Missing subscriber for subscriptions.`); - } - - const queryPayload: QueryPayload = { + Promise.all( + buildQuery(selections, operationName).map( + ({ query, variables, operationName, - extensions: { type, hash }, - }; + extensions: { type, hash } = {}, + }) => { + if (!type) { + throw new GQtyError(`Invalid query type: ${type}`); + } - let subscriptionId: string | undefined; + if (!hash) { + throw new GQtyError(`Expected query hash.`); + } - if (isWsClient(subscriber)) { - { - const unsub = subscriber?.on('message', (message) => { - switch (message.type) { - case MessageType.ConnectionAck: { - unsub?.(); - onSubscribe?.(); - break; - } - } - }); + if (type === 'subscription' && !subscriber) { + throw new GQtyError(`Missing subscriber for subscriptions.`); } - { - const unsub = subscriber?.on('message', (message) => { - switch (message.type) { - case MessageType.ConnectionAck: { - break; + const queryPayload: QueryPayload = { + query, + variables, + operationName, + extensions: { type, hash }, + }; + + let subscriptionId: string | undefined; + + if (isWsClient(subscriber)) { + { + const unsub = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.ConnectionAck: { + unsub?.(); + onSubscribe?.(); + break; + } } - case MessageType.Subscribe: { - if (message.payload.extensions?.hash !== hash) return; + }); + } + + { + const unsub = subscriber?.on('message', (message) => { + switch (message.type) { + case MessageType.ConnectionAck: { + break; + } + case MessageType.Subscribe: { + if (message.payload.extensions?.hash !== hash) return; - subscriptionId = message.id; + subscriptionId = message.id; - debug?.dispatch({ - cache, - label: `[id=${subscriptionId}] [create]`, - request: queryPayload, - selections, - }); + debug?.dispatch({ + cache, + label: `[id=${subscriptionId}] [create]`, + request: queryPayload, + selections, + }); - unsub?.(); - break; + unsub?.(); + break; + } } - } - }); + }); + } + } else if (isSseClient(subscriber)) { + // TODO: Get id via constructor#onMessage option, this requires + // modifications to the generated client. + subscriptionId = 'EventSource'; + onSubscribe?.(); + } else if (type === 'subscription') { + throw new GQtyError(`Please specify a subscriber for subscriptions.`); } - } else if (isSseClient(subscriber)) { - // TODO: Get id via constructor#onMessage option, this requires - // modifications to the generated client. - subscriptionId = 'EventSource'; - onSubscribe?.(); - } else if (type === 'subscription') { - throw new GQtyError(`Please specify a subscriber for subscriptions.`); - } - const next = ({ data, errors, extensions }: ExecutionResult) => { - if (data === undefined) return; + const next = ({ data, errors, extensions }: ExecutionResult) => { + if (data === undefined) return; - const result: FetchResult = { - data, - extensions: { ...extensions, ...queryPayload.extensions }, - }; + const result: FetchResult = { + data, + extensions: { ...extensions, ...queryPayload.extensions }, + }; - if (errors?.length) { - result.error = GQtyError.fromGraphQLErrors(errors); - } + if (errors?.length) { + result.error = GQtyError.fromGraphQLErrors(errors); + } - debug?.dispatch({ - cache, - label: subscriptionId ? `[id=${subscriptionId}] [data]` : undefined, - request: queryPayload, - result, - selections, - }); + debug?.dispatch({ + cache, + label: subscriptionId ? `[id=${subscriptionId}] [data]` : undefined, + request: queryPayload, + result, + selections, + }); - fn(result); - }; + fn(result); + }; - const error = (error: GQtyError) => { - if (error == null) { - throw new GQtyError(`Subscription sink closed without an error.`); - } + const error = (error: GQtyError) => { + if (error == null) { + throw new GQtyError(`Subscription sink closed without an error.`); + } - debug?.dispatch({ - cache, - label: subscriptionId ? `[id=${subscriptionId}] [error]` : undefined, - request: queryPayload, - selections, - }); + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [error]` + : undefined, + request: queryPayload, + selections, + }); - fn({ - error, - extensions: queryPayload.extensions, - }); - }; - - let dispose: (() => void) | undefined; - - // Dedupe - const promise = dedupePromise( - type === 'subscription' ? undefined : cache, - hash, - type === 'subscription' - ? () => - new Promise((complete) => { - dispose = subscriber!.subscribe(queryPayload, { - next, - error(err) { - if (Array.isArray(err)) { - error(GQtyError.fromGraphQLErrors(err)); - } else if (!isCloseEvent(err)) { - error(GQtyError.create(err)); - } - - this.complete(); - }, - complete() { - debug?.dispatch({ - cache, - label: subscriptionId - ? `[id=${subscriptionId}] [unsubscribe]` - : undefined, - request: queryPayload, - selections, - }); - - complete(); - }, - }); - }) - : () => - new Promise((complete) => { - const options: Parameters[1] = { - ...fetchOptions, - selections, - }; - - if (typeof AbortController !== 'undefined') { - const aborter = new AbortController(); - dispose = () => aborter.abort(); - options.signal = aborter.signal; - } + fn({ + error, + extensions: queryPayload.extensions, + }); + }; - doFetch(queryPayload, options) - .then(next, error) - .finally(complete); - }) - ); + let dispose: (() => void) | undefined; - if (dispose) { - subsRef.set(promise, { dispose, count: 1 }); - } else if (subsRef.get(promise)) { - subsRef.get(promise)!.count++; - } + // Dedupe + const promise = dedupePromise( + type === 'subscription' ? undefined : cache, + hash, + type === 'subscription' + ? () => + new Promise((complete) => { + dispose = subscriber!.subscribe(queryPayload, { + next, + error(err) { + if (Array.isArray(err)) { + error(GQtyError.fromGraphQLErrors(err)); + } else if (!isCloseEvent(err)) { + error(GQtyError.create(err)); + } + + this.complete(); + }, + complete() { + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [unsubscribe]` + : undefined, + request: queryPayload, + selections, + }); + + complete(); + }, + }); + }) + : () => + new Promise((complete) => { + const options: Parameters[1] = { + ...fetchOptions, + selections, + }; + + if (typeof AbortController !== 'undefined') { + const aborter = new AbortController(); + dispose = () => aborter.abort(); + options.signal = aborter.signal; + } + + doFetch(queryPayload, options) + .then(next, error) + .finally(complete); + }) + ); - unsubscribers.add(() => { - const ref = subsRef.get(promise); - if (ref && --ref.count <= 0) { - ref.dispose(); + if (dispose) { + subsRef.set(promise, { dispose, count: 1 }); + } else if (subsRef.get(promise)) { + subsRef.get(promise)!.count++; } - }); - } - ); + + unsubscribers.add(() => { + const ref = subsRef.get(promise); + if (ref && --ref.count <= 0) { + ref.dispose(); + } + }); + } + ) + ).finally(() => onComplete?.()); return () => { unsubscribers.forEach((fn) => fn()); diff --git a/packages/gqty/src/Client/updateCaches.ts b/packages/gqty/src/Client/updateCaches.ts index c22e6773c..d48ec155d 100644 --- a/packages/gqty/src/Client/updateCaches.ts +++ b/packages/gqty/src/Client/updateCaches.ts @@ -1,4 +1,5 @@ import type { GraphQLError } from 'graphql'; +import extend from 'just-extend'; import type { Cache, CacheObject, CacheRoot, CacheSetOptions } from '../Cache'; import { GQtyError } from '../Error'; import type { FetchResult } from './resolveSelections'; @@ -11,13 +12,21 @@ export const updateCaches = >( const errorSet = new Set(); for (const response of results) { - if (response === undefined) return; - const { data, error, extensions } = response; - const type = `${extensions?.type}`; + const type = extensions?.type; + + if (!type || typeof type !== 'string') { + if (process.env.NODE_ENV !== 'production') { + console.warn('[GQty] Missing extensions.type in query result.'); + } + + continue; + } if (data !== undefined) { - const newValues = { [type]: data as CacheObject } as CacheRoot; + const newValues = { + [type]: extend(true, {}, data) as CacheObject, + } as CacheRoot; for (const cache of caches) { cache.set(newValues, cacheSetOptions); diff --git a/packages/gqty/test/cache.test.ts b/packages/gqty/test/cache.test.ts index 4704af0fe..97921f616 100644 --- a/packages/gqty/test/cache.test.ts +++ b/packages/gqty/test/cache.test.ts @@ -18,6 +18,11 @@ describe('Cache#dataAccessors', () => { }, scalars: { String: true }, depthLimit: 15, + onSelect: () => {}, + notifyCacheUpdate: false, + shouldFetch: false, + hasCacheHit: false, + hasCacheMiss: false, } as const; /** @@ -84,6 +89,11 @@ describe('Cache#data', () => { }, scalars: { String: true }, depthLimit: 15, + onSelect: () => {}, + notifyCacheUpdate: false, + shouldFetch: false, + hasCacheHit: false, + hasCacheMiss: false, } as const; it('should work with selections', () => { @@ -292,7 +302,6 @@ describe('Cache#normalization', () => { } `); - // Should replace object when incoming fields mismatches. cache.set({ query: { otherQuery: { @@ -312,6 +321,8 @@ describe('Cache#normalization', () => { "normalized": { "A:1": { "__typename": "A", + "a": 1, + "b": 2, "c": 3, "id": 1, }, @@ -340,6 +351,8 @@ describe('Cache#normalization', () => { .toMatchInlineSnapshot(` { "__typename": "A", + "a": 1, + "b": 2, "c": 3, "id": 1, } @@ -398,7 +411,12 @@ describe('Cache#subscribe', () => { b: { __typename: 'B', id: 1, - a: { __typename: 'A', id: 1, a: 1 }, + a: expect.objectContaining({ + __typename: 'A', + id: 1, + a: 1, + // b: [Circular] + }), }, }, }); From 01a6e0f2e3ec5e9ceba5d035044a1ce01d967e4e Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 14 Mar 2023 19:16:07 +0800 Subject: [PATCH 017/122] fix: infinite render loop --- packages/gqty/src/Cache/normalization.ts | 7 +- packages/react/src/client.ts | 7 +- packages/react/src/common.ts | 2 +- packages/react/src/query/useQuery.ts | 147 ++++++++----- .../react/src/query/useTransactionQuery.ts | 199 +++--------------- packages/react/src/useThrottledAsync.ts | 152 +++++++++++++ packages/react/src/useWindowFocusEffect.ts | 4 +- packages/react/test/useQuery.test.tsx | 4 +- 8 files changed, 289 insertions(+), 233 deletions(-) create mode 100644 packages/react/src/useThrottledAsync.ts diff --git a/packages/gqty/src/Cache/normalization.ts b/packages/gqty/src/Cache/normalization.ts index 281668bc2..9080d438d 100644 --- a/packages/gqty/src/Cache/normalization.ts +++ b/packages/gqty/src/Cache/normalization.ts @@ -106,9 +106,10 @@ export const deepNormalizeObject = ( const id = options.identity(it); if (id && !seen.has(id)) { - // We always merge in normalizedObject(), replacement is done by replacing - // with an empty one beforehand. - options.store.get(id)?.$set({}); + // normalizedObject() always merges, uncomment the following line to + // perform replacements across queries. But this easily leads to infinite + // renders between racing fetches. + //options.store.get(id)?.$set({}); seen.add(id); } diff --git a/packages/react/src/client.ts b/packages/react/src/client.ts index cffd9e301..f0b1bd1e8 100644 --- a/packages/react/src/client.ts +++ b/packages/react/src/client.ts @@ -221,11 +221,14 @@ export function createReactClient( opts ); + // useTransactionQuery needs this + const useQuery = createUseQuery(client, opts); + return { - useQuery: createUseQuery(client, opts), + useQuery, useRefetch: createUseRefetch(client, opts), useLazyQuery: createUseLazyQuery(client, opts), - useTransactionQuery: createUseTransactionQuery(client, opts), + useTransactionQuery: createUseTransactionQuery(useQuery, opts), usePaginatedQuery: createUsePaginatedQuery(client, opts), useMutation: createUseMutation(client, opts), graphql: createGraphqlHOC(client, opts), diff --git a/packages/react/src/common.ts b/packages/react/src/common.ts index 90205a909..6942823f1 100644 --- a/packages/react/src/common.ts +++ b/packages/react/src/common.ts @@ -28,7 +28,7 @@ export const legacyFetchPolicyMap: Record< LegacyFetchPolicy, FetchOptions['fetchPolicy'] > = { - 'cache-and-network': 'cache-and-network', + 'cache-and-network': 'default', 'cache-first': 'default', 'network-only': 'no-cache', 'no-cache': 'no-store', diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 4e4c3fb7e..318c01efb 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -1,4 +1,4 @@ -import { useRerender } from '@react-hookz/web'; +import { usePrevious, useRerender, useUpdateEffect } from '@react-hookz/web'; import { BaseGeneratedSchema, GQtyClient, @@ -6,8 +6,13 @@ import { prepass, RetryOptions, } from 'gqty'; -import { useCallback, useEffect, useMemo, useState } from 'react'; -import type { OnErrorHandler } from '../common'; +import { useCallback, useEffect, useMemo } from 'react'; +import { + LegacyFetchPolicy, + OnErrorHandler, + translateFetchPolicy, +} from '../common'; +import { useThrottledAsync } from '../useThrottledAsync'; import { useWindowFocusEffect } from '../useWindowFocusEffect'; import type { ReactClientOptionsWithDefaults } from '../utils'; @@ -20,6 +25,8 @@ export interface UseQueryPrepareHelpers< readonly query: GeneratedSchema['query']; } export interface UseQueryOptions { + fetchPolicy?: LegacyFetchPolicy; + notifyOnNetworkStatusChange?: boolean; onError?: OnErrorHandler; operationName?: string; prepare?: (helpers: UseQueryPrepareHelpers) => void; @@ -46,7 +53,7 @@ export type Writeable = { -readonly [P in keyof T]: T[P] }; export type UseQueryReturnValue = GeneratedSchema['query'] & { $state: UseQueryState; - $refetch: () => Promise | void; + $refetch: () => Promise; }; export interface UseQuery { ( @@ -66,6 +73,8 @@ export const createUseQuery = }: ReactClientOptionsWithDefaults ): UseQuery => ({ + fetchPolicy = 'cache-first', + notifyOnNetworkStatusChange = true, onError, operationName, prepare, @@ -80,22 +89,41 @@ export const createUseQuery = resolve, selections, } = useMemo( - () => client.createResolver({ operationName, retryPolicy: retry }), - [operationName, retry] + () => + client.createResolver({ + fetchPolicy: translateFetchPolicy(fetchPolicy), + operationName, + retryPolicy: retry, + }), + [fetchPolicy, operationName, retry] + ); + + const [{ status, error }, { execute }, { promise }] = useThrottledAsync( + async () => { + try { + return await resolve(); + } catch (error) { + const theError = GQtyError.create(error); + + onError?.(theError); + + throw theError; + } finally { + // Reset these, or createResolver() each time and deal with the new resolve. + context.shouldFetch = false; + context.hasCacheHit = false; + context.hasCacheMiss = false; + } + } ); - const [error, setError] = useState(); - const [fetchPromise, setFetchPromise] = useState>(); if (suspense) { - if (error) throw error; - if (fetchPromise) throw fetchPromise; + if (error) throw GQtyError.create(error); + if (promise && status === 'loading') { + throw promise; + } } - // Reset these, or createResolver() each time and deal with the new resolve. - context.shouldFetch = false; - context.hasCacheHit = false; - context.hasCacheMiss = false; - if (prepare) { // TODO: See if `Error.captureStackTrace(error, useQuery);` is needed prepare({ prepass, query }); @@ -107,43 +135,52 @@ export const createUseQuery = } } - const fetchQuery = useCallback(async () => { - setError(undefined); - - try { - const fetchPromise = resolve(); - setFetchPromise(fetchPromise); - - await fetchPromise; - } catch (error) { - const theError = GQtyError.create(error); + const refetch = useCallback( + (force = false) => { + if (force) { + context.shouldFetch = true; + } else if (promise) { + return promise; + } - onError?.(theError); + const refetchPromise = execute(); + context.refechPromise = refetchPromise; - if (suspense) throw theError; + refetchPromise.catch(console.error).finally(() => { + context.refetchPromise = undefined; + }); - setError(theError); - } finally { - setFetchPromise(undefined); - } - }, [onError, resolve]); + return refetchPromise; + }, + [execute, promise] + ); // Invoke it on client side automatically. useEffect(() => { - fetchQuery(); - }, [fetchQuery]); + if (context.shouldFetch) { + refetch(); + } + }); // staleWhileRevalidate - useEffect(() => { - $refetch(); - }, [staleWhileRevalidate]); + const swrDiff = usePrevious(staleWhileRevalidate); + useUpdateEffect(() => { + if (staleWhileRevalidate && !Object.is(staleWhileRevalidate, swrDiff)) { + refetch(true); + } + }, [refetch, swrDiff]); { const render = useRerender(); // A rerender should be enough to trigger a soft check, fetch will // happen if any of the accessed cache value is stale. - useWindowFocusEffect(render, { enabled: refetchOnWindowVisible }); + useWindowFocusEffect( + () => { + refetch(); + }, + { enabled: refetchOnWindowVisible } + ); // Rerenders on cache changes from others useEffect(() => { @@ -156,27 +193,31 @@ export const createUseQuery = }, [selections, selections.size]); } - const $refetch = useCallback(() => { - const prevShouldFetch = context.shouldFetch; - context.shouldFetch = true; - const promise = fetchQuery(); - context.shouldFetch = prevShouldFetch; - - promise.catch(console.error); - - return promise; - }, [fetchQuery]); - return useMemo(() => { return new Proxy( Object.freeze({ - $refetch, - $state: { isLoading: fetchPromise !== undefined, error }, + $refetch: (force = true) => refetch(force), + $state: { + isLoading: + status === 'loading' && + (context.refetchPromise !== promise || + notifyOnNetworkStatusChange), + error: GQtyError.create(error), + }, }), { get: (target, key, proxy) => - Reflect.get(target, key, proxy) ?? Reflect.get(query, key), + Reflect.get(target, key, proxy) ?? + Reflect.get( + prepare + ? // Using global schema accessor prevents the second pass fetch + // essentially let `prepare` decides what data to fetch, data + // placeholder will always render in case of a cache miss. + client.schema.query + : query, + key + ), } ); - }, [query, $refetch, fetchPromise, error]); + }, [query, refetch, status, error]); }; diff --git a/packages/react/src/query/useTransactionQuery.ts b/packages/react/src/query/useTransactionQuery.ts index dd6b712c8..dc80f3bd8 100644 --- a/packages/react/src/query/useTransactionQuery.ts +++ b/packages/react/src/query/useTransactionQuery.ts @@ -1,24 +1,12 @@ import { - useDeepCompareEffect, useDocumentVisibility, useIntervalEffect, + useUpdateEffect, } from '@react-hookz/web'; -import { - $meta, - BaseGeneratedSchema, - GQtyClient, - GQtyError, - RetryOptions, - Selection, -} from 'gqty'; -import * as React from 'react'; - -import { - LegacyFetchPolicy, - OnErrorHandler, - translateFetchPolicy, -} from '../common'; +import type { BaseGeneratedSchema, GQtyError, RetryOptions } from 'gqty'; +import type { LegacyFetchPolicy, OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; +import type { UseQuery } from './useQuery'; export interface UseTransactionQueryState { data: TData | undefined; @@ -27,67 +15,6 @@ export interface UseTransactionQueryState { promise?: Promise; } -type UseTransactionQueryReducerAction = - | { type: 'cache-found'; data: TData } - | { type: 'success'; data: TData } - | { type: 'failure'; error: GQtyError } - | { type: 'loading'; promise: Promise } - | { type: 'skipped' }; - -function UseTransactionQueryReducer( - state: UseTransactionQueryState, - action: UseTransactionQueryReducerAction -): UseTransactionQueryState { - switch (action.type) { - case 'loading': { - if (state.promise === action.promise) return state; - - return { - data: state.data, - isCalled: true, - promise: action.promise, - }; - } - case 'success': { - return { - data: action.data, - isCalled: true, - }; - } - case 'cache-found': { - return { - data: action.data, - isCalled: true, - promise: state.promise, - }; - } - case 'failure': { - return { - data: state.data, - error: action.error, - isCalled: true, - }; - } - case 'skipped': { - if (!state.promise) return state; - - return { - data: state.data, - isCalled: true, - }; - } - } -} - -function InitUseTransactionQueryReducer< - TData ->(): UseTransactionQueryState { - return { - data: undefined, - isCalled: false, - }; -} - export type UseTransactionQueryOptions = { fetchPolicy?: LegacyFetchPolicy; skip?: boolean; @@ -118,7 +45,7 @@ export interface UseTransactionQuery { } export function createUseTransactionQuery( - client: GQtyClient, + useQuery: UseQuery, { defaults: { transactionFetchPolicy: defaultFetchPolicy, @@ -143,107 +70,39 @@ export function createUseTransactionQuery( variables, } = {} ) => { - type TCallback = typeof fn; - type TData = ReturnType; - - const [state, dispatch] = React.useReducer( - UseTransactionQueryReducer, - undefined, - InitUseTransactionQueryReducer - ) as [ - UseTransactionQueryState, - React.Dispatch> - ]; - - useDeepCompareEffect(async () => { - if (skip) { - return dispatch({ type: 'skipped' }); - } - - const selections = new Set(); - - let fetchPromise: Promise | undefined; - - const promise = client.resolve(({ query }) => fn(query, variables), { - awaitsFetch: false, - fetchPolicy: translateFetchPolicy(fetchPolicy), - onFetch(promise) { - fetchPromise = promise as Promise; - }, - onSelect(selection) { - selections.add(selection); - }, - operationName, - retryPolicy: retry, - }) as Promise; - - dispatch({ type: 'loading', promise }); - - try { - const cacheResult = await promise; - - if (fetchPromise === undefined) { - dispatch({ type: 'success', data: cacheResult }); - } else { - if (fetchPolicy === 'cache-and-network') { - dispatch({ type: 'cache-found', data: cacheResult }); - } - - const fetchResult = await fetchPromise; - - onCompleted?.(fetchResult); - dispatch({ type: 'success', data: fetchResult }); - } - } catch (error) { - const theError = GQtyError.create(error); - - onError?.(theError); - dispatch({ type: 'failure', error: theError }); + const query = useQuery({ + fetchPolicy, + notifyOnNetworkStatusChange, + operationName, + prepare: ({ query }) => (skip ? undefined : fn(query, variables)), + retry, + suspense, + }); + + useUpdateEffect(() => { + if (!query.$state.isLoading) { + onCompleted?.(fn(query, variables)); } + }, [query.$state.isLoading]); - if (fetchPolicy !== 'no-cache') { - return $meta(client.schema.query)?.context.cache.subscribe( - [...selections].map((s) => s.cacheKeys.join('.')), - () => { - dispatch({ - type: 'success', - data: fn(client.schema.query, variables), - }); - } - ); + useUpdateEffect(() => { + if (query.$state.error) { + onError?.(query.$state.error); } - }, [fn, skip, variables]); - - if (suspense) { - if (state.promise) throw state.promise; - if (state.error) throw state.error; - } + }, [query.$state.error]); const visible = useDocumentVisibility(); - // Polling won't fire onComplete and onError callbacks, it only updates - // the component state. - useIntervalEffect(async () => { - if (skip || state.promise || (!visible && !pollInBackground)) return; - - const promise = client.resolve(({ query }) => fn(query, variables), { - fetchPolicy: translateFetchPolicy(fetchPolicy), - operationName, - retryPolicy: retry, - }) as Promise; + useIntervalEffect(() => { + if (skip || query.$state.isLoading || (!visible && !pollInBackground)) + return; - if (notifyOnNetworkStatusChange) { - dispatch({ type: 'loading', promise }); - } - - try { - dispatch({ type: 'success', data: await promise }); - } catch (error) { - dispatch({ type: 'failure', error: GQtyError.create(error) }); - } + query.$refetch(); }, pollInterval); - return state; + return skip + ? { data: undefined, isCalled: false } + : { data: fn(query, variables), isCalled: true }; }; return useTransactionQuery; diff --git a/packages/react/src/useThrottledAsync.ts b/packages/react/src/useThrottledAsync.ts new file mode 100644 index 000000000..b293e1521 --- /dev/null +++ b/packages/react/src/useThrottledAsync.ts @@ -0,0 +1,152 @@ +import { useSafeState, useSyncedRef } from '@react-hookz/web'; +import { useMemo, useRef } from 'react'; + +export type AsyncStatus = 'loading' | 'success' | 'error' | 'not-executed'; + +export type AsyncState = + | { + status: 'not-executed'; + error: undefined; + result: Result; + } + | { + status: 'success'; + error: undefined; + result: Result; + } + | { + status: 'error'; + error: Error; + result: Result; + } + | { + status: AsyncStatus; + error: Error | undefined; + result: Result; + }; + +export interface UseAsyncActions { + /** + * Reset state to initial. + */ + reset: () => void; + /** + * Execute the async function manually. + */ + execute: (...args: Args) => Promise; +} + +export interface UseAsyncMeta { + /** + * Latest promise returned from the async function. + */ + promise: Promise | undefined; + /** + * List of arguments applied to the latest async function invocation. + */ + lastArgs: Args | undefined; +} + +/** + * **Modified version of `useAsync` in `@react-hookz/web`** + * + * Tracks the result and errors of the provided async function and provides + * handles to control its execution. + * + * Skips executions when an active promise is already in place. + * + * @param asyncFn Function that returns a promise. + * @param initialValue Value that will be set on initialisation before the async + * function is executed. + */ +export function useThrottledAsync( + asyncFn: (...params: Args) => Promise, + initialValue: Result +): [ + AsyncState, + UseAsyncActions, + UseAsyncMeta +]; +export function useThrottledAsync( + asyncFn: (...params: Args) => Promise, + initialValue?: Result +): [ + AsyncState, + UseAsyncActions, + UseAsyncMeta +]; +export function useThrottledAsync( + asyncFn: (...params: Args) => Promise, + initialValue?: Result +): [ + AsyncState, + UseAsyncActions, + UseAsyncMeta +] { + const [state, setState] = useSafeState>({ + status: 'not-executed', + error: undefined, + result: initialValue, + }); + const promiseRef = useRef>(); + const argsRef = useRef(); + + const methods = useSyncedRef({ + execute: (...params: Args) => { + if (promiseRef.current) return promiseRef.current; + + argsRef.current = params; + const promise = asyncFn(...params); + promiseRef.current = promise; + + setState((s) => ({ ...s, status: 'loading' })); + + promise + .then( + (result) => { + if (promise === promiseRef.current) { + setState((s) => ({ + ...s, + status: 'success', + error: undefined, + result, + })); + } + }, + (error: Error) => { + if (promise === promiseRef.current) { + setState((s) => ({ ...s, status: 'error', error })); + } + } + ) + .finally(() => { + if (promise === promiseRef.current) { + promiseRef.current = undefined; + } + }); + + return promise; + }, + reset: () => { + setState({ + status: 'not-executed', + error: undefined, + result: initialValue, + }); + promiseRef.current = undefined; + argsRef.current = undefined; + }, + }); + + return [ + state, + useMemo( + () => ({ + execute: (...args: Args) => methods.current.execute(...args), + reset: () => methods.current.reset(), + }), + [] + ), + { promise: promiseRef.current, lastArgs: argsRef.current }, + ]; +} diff --git a/packages/react/src/useWindowFocusEffect.ts b/packages/react/src/useWindowFocusEffect.ts index 9e646689a..6a109cc4c 100644 --- a/packages/react/src/useWindowFocusEffect.ts +++ b/packages/react/src/useWindowFocusEffect.ts @@ -16,11 +16,11 @@ export const useWindowFocusEffect = ( }; globalThis.addEventListener?.('visibilitychange', visibilityChangeFn); - globalThis.addEventListener?.('focus', fn); + globalThis.addEventListener?.('focus', visibilityChangeFn); return () => { globalThis.removeEventListener?.('visibilitychange', visibilityChangeFn); - globalThis.removeEventListener?.('focus', fn); + globalThis.removeEventListener?.('focus', visibilityChangeFn); }; }, [enabled, fn]); }; diff --git a/packages/react/test/useQuery.test.tsx b/packages/react/test/useQuery.test.tsx index 9e3d90563..d33ada308 100644 --- a/packages/react/test/useQuery.test.tsx +++ b/packages/react/test/useQuery.test.tsx @@ -2,7 +2,7 @@ import { act, renderHook } from '@testing-library/react-hooks'; import { createReactTestClient } from './utils'; describe('useQuery', () => { - it('should fetch without suspense', async () => { + test('should fetch without suspense', async () => { const { useQuery } = await createReactTestClient(); const { result, waitFor } = renderHook(() => { @@ -25,7 +25,7 @@ describe('useQuery', () => { expect(result.current.hello).toBe('hello world'); }); - it('should $refetch', async () => { + test('should $refetch', async () => { const { useQuery } = await createReactTestClient(); const { result, waitFor } = renderHook(() => { From d626e884a24015873d05a4e447e8d15c244dbe82 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 01:14:57 +0800 Subject: [PATCH 018/122] feat: separate Cache instantiation from client --- packages/cli/package.json | 1 + packages/cli/src/envelop.ts | 36 +- packages/cli/src/generate.ts | 348 ++++++++---------- packages/cli/test/generate.test.ts | 186 +++++++--- .../cli/test/inspectWriteGenerate.test.ts | 282 +++++++++++--- packages/cli/test/writeGenerate.test.ts | 60 ++- packages/gqty/src/Client/index.ts | 49 +-- packages/gqty/src/index.ts | 1 + packages/gqty/test/client.test.ts | 56 +-- packages/gqty/test/helpers.test.ts | 5 +- packages/gqty/test/interfaces-unions.test.ts | 7 +- packages/gqty/test/playground.test.ts | 4 +- packages/gqty/test/utils.ts | 1 + packages/react/test/utils.ts | 25 +- pnpm-lock.yaml | 8 + 15 files changed, 665 insertions(+), 404 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 7503840a6..a0472fe84 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "gqty": "workspace:^2.3.0", + "p-lazy": "^3.1.0", "undici": "^5.21.0" }, "devDependencies": { diff --git a/packages/cli/src/envelop.ts b/packages/cli/src/envelop.ts index 13e0aa69f..9345b3ed0 100644 --- a/packages/cli/src/envelop.ts +++ b/packages/cli/src/envelop.ts @@ -1,7 +1,8 @@ -import { LazyPromise } from 'gqty/Utils/promise'; import type { GraphQLSchema } from 'graphql'; +import PLazy from 'p-lazy'; +import type { defaultConfig, gqtyConfigPromise } from './config'; import type { GenerateOptions, TransformSchemaOptions } from './generate'; -import type { OnExistingFileConflict } from './writeGenerate'; +import type { OnExistingFileConflict, writeGenerate } from './writeGenerate'; export interface UseGenerateGQtyOptions extends GenerateOptions { /** @@ -27,19 +28,24 @@ export interface UseGenerateGQtyOptions extends GenerateOptions { export function useGenerateGQty(config?: UseGenerateGQtyOptions): { onSchemaChange(options: { schema: GraphQLSchema }): void; } { - const pluginDeps = LazyPromise(async () => { - const [{ writeGenerate }, { config: gqtyConfig }, { defaultConfig }] = - await Promise.all([ - import('./writeGenerate'), - import('./config').then((v) => v.gqtyConfigPromise), - import('./config'), - ]); - - return { - writeGenerate, - gqtyConfig, - defaultConfig, - }; + const pluginDeps = new PLazy<{ + writeGenerate: typeof writeGenerate; + gqtyConfig: Awaited['config']; + defaultConfig: typeof defaultConfig; + }>((resolve, reject) => { + return Promise.all([ + import('./writeGenerate'), + import('./config').then((v) => v.gqtyConfigPromise), + import('./config'), + ]) + .then( + ([{ writeGenerate }, { config: gqtyConfig }, { defaultConfig }]) => ({ + writeGenerate, + gqtyConfig, + defaultConfig, + }) + ) + .then(resolve, reject); }); return { diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 8c2c5ebab..cab17f6f2 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -5,7 +5,7 @@ import { ScalarsEnumsHash, Schema, SchemaUnionsKey, - Type, + Type } from 'gqty'; import type { GraphQLEnumType, @@ -15,7 +15,7 @@ import type { GraphQLObjectType, GraphQLScalarType, GraphQLSchema, - GraphQLUnionType, + GraphQLUnionType } from 'graphql'; import * as graphql from 'graphql'; import { defaultConfig, gqtyConfigPromise } from './config'; @@ -821,212 +821,190 @@ export async function generate( ); const javascriptSchemaCode = await format(` -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ -${hasUnions ? 'import { SchemaUnionsKey } from "gqty";' : ''} + /** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ -${typeDoc( - 'import("gqty").ScalarsEnumsHash' -)}export const scalarsEnumsHash = ${scalarsEnumsHashString}; + ${hasUnions ? 'import { SchemaUnionsKey } from "gqty";' : ''} -export const generatedSchema = {${generatedSchemaCodeString}}; + ${typeDoc( + 'import("gqty").ScalarsEnumsHash' + )}export const scalarsEnumsHash = ${scalarsEnumsHashString}; + + export const generatedSchema = {${generatedSchemaCodeString}}; `); - const schemaCode = await format( - ` -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - ${preImport} + const schemaCode = await format(` + /** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ - ${hasUnions ? 'import { SchemaUnionsKey } from "gqty";' : ''} + ${preImport} - ${await codegenResultPromise} + ${hasUnions ? 'import { SchemaUnionsKey } from "gqty";' : ''} - export${ - isJavascriptOutput ? ' declare' : '' - } const scalarsEnumsHash: import("gqty").ScalarsEnumsHash${ - isJavascriptOutput ? ';' : ` = ${scalarsEnumsHashString};` - } - export${isJavascriptOutput ? ' declare' : ''} const generatedSchema ${ - isJavascriptOutput ? ':' : '=' - } {${generatedSchemaCodeString}}${isJavascriptOutput ? '' : ' as const'}; + ${await codegenResultPromise} - ${typescriptTypes} - ` - ); + export${ + isJavascriptOutput ? ' declare' : '' + } const scalarsEnumsHash: import("gqty").ScalarsEnumsHash${ + isJavascriptOutput ? ';' : ` = ${scalarsEnumsHashString};` + } + export${isJavascriptOutput ? ' declare' : ''} const generatedSchema ${ + isJavascriptOutput ? ':' : '=' + } {${generatedSchemaCodeString}}${isJavascriptOutput ? '' : ' as const'}; - let reactClientCode = ''; - if (react) { - if (isJavascriptOutput) { - reactClientCode = ` - ${typeDoc( - 'import("@gqty/react").ReactClient' - )}const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false + ${typescriptTypes} + `); + + const reactClientCode = react + ? ` + ${ + isJavascriptOutput + ? `${typeDoc( + 'import("@gqty/react").ReactClient' + )}const reactClient = createReactClient(client, {` + : `const reactClient = createReactClient(client, {` } - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - ${subscriptions ? 'useSubscription,' : ''} - } = reactClient; - - export { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - ${subscriptions ? 'useSubscription,' : ''} - } - `.trim(); - } else { - reactClientCode = ` - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - ${subscriptions ? 'useSubscription,' : ''} - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false + } + }); + + const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, + ${subscriptions ? 'useSubscription,' : ''} + } = reactClient; + + export { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, + ${subscriptions ? 'useSubscription,' : ''} } - }); - - export { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - ${subscriptions ? 'useSubscription,' : ''} - } - `; + `.trim() + : ''; + + const clientCode = await format(` + /** + * GQty: You can safely modify this file based on your needs. + */ + + ${react ? `import { createReactClient } from "@gqty/react"` : ''} + ${ + subscriptions + ? `import { createClient as createSubscriptionsClient } from "graphql-ws"` + : '' + } + ${isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";'} + import { createClient, Cache } from "gqty"; + ${ + isJavascriptOutput + ? '' + : 'import type { GeneratedSchema } from "./schema.generated";' + } + import { generatedSchema, scalarsEnumsHash } from "./schema.generated"; + + ${queryFetcher} + + ${ + subscriptions + ? `const subscriptionsClient = + typeof window !== "undefined" ? + createSubscriptionsClient({ + lazy: true, + url: () => { + // Modify if needed + const url = new URL("${endpoint}", window.location.href); + url.protocol = url.protocol.replace('http', 'ws'); + return url.href; + } + }) : undefined;` + : '' } - } - const clientCode = await format( + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + + ${ + isJavascriptOutput + ? `${typeDoc( + 'import("gqty").GQtyClient' + )} + export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions: { + fetcher: queryFetcher, + ${subscriptions ? 'subscriber: subscriptionsClient' : ''} + }, + }); + ` + : ` + export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions:{ + fetcher: queryFetcher, + ${subscriptions ? 'subscriber: subscriptionsClient' : ''} + }, + }); ` -/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs - */ - - ${react ? `import { createReactClient } from "@gqty/react"` : ''} - ${ - subscriptions - ? `import { createClient as createSubscriptionsClient } from "graphql-ws"` - : '' - } - ${isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";'} - import { createClient } from 'gqty'; - ${ - isJavascriptOutput - ? '' - : 'import type { GeneratedSchema } from "./schema.generated";' - } - import { generatedSchema, scalarsEnumsHash } from "./schema.generated"; - - - ${queryFetcher} - - ${ - subscriptions - ? ` - const subscriptionsClient = - typeof window !== "undefined" ? - createSubscriptionsClient({ - lazy: true, - url: () => { - // Modify if needed - const url = new URL("${endpoint}", window.location.href); - url.protocol = url.protocol.replace('http', 'ws'); - return url.href; } - }) : undefined; - ` - : '' - } - ${ - isJavascriptOutput - ? `${typeDoc( - 'import("gqty").GQtyClient' - )}export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - ${subscriptions ? 'subscriber: subscriptionsClient' : ''} - }, - });` - : `export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions:{ - fetcher: queryFetcher, - ${subscriptions ? 'subscriber: subscriptionsClient' : ''} - }, - });` - } + // Core functions + const { resolve, subscribe, schema } = client; - const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + // Legacy functions + const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; + ${reactClientCode} - ${reactClientCode} + export { resolve, subscribe, schema, query, mutation, mutate, subscription, resolved, refetch, track }; + export * from "./schema.generated"; + `); - export * from "./schema.generated"; - ` - ); return { clientCode, - schemaCode, - javascriptSchemaCode, generatedSchema, - scalarsEnumsHash, isJavascriptOutput, + javascriptSchemaCode, + scalarsEnumsHash, + schemaCode, }; } diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index 5ec7a3507..d1679750e 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -38,7 +38,7 @@ test('basic functionality works', async () => { expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ // This should be included @@ -122,13 +122,13 @@ test('basic functionality works', async () => { expect(clientCode).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import { createClient as createSubscriptionsClient } from 'graphql-ws'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -169,20 +169,36 @@ test('basic functionality works', async () => { }) : undefined; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, subscriber: subscriptionsClient, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -222,6 +238,18 @@ test('basic functionality works', async () => { useSubscription, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); @@ -257,14 +285,7 @@ test('basic functionality works', async () => { expect(clientCode.includes('= createReactClient')).toBeTruthy(); - expect( - schemaCode - .split('\n') - .slice(3) - .join('\n') - .trim() - .startsWith(shouldBeIncluded) - ).toBeTruthy(); + expect(schemaCode.split('\n')[4]).toStrictEqual(shouldBeIncluded); }); test('custom scalars works', async () => { @@ -295,13 +316,13 @@ test('custom scalars works', async () => { expect(clientCode).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -329,19 +350,35 @@ test('custom scalars works', async () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -379,13 +416,25 @@ test('custom scalars works', async () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -575,7 +624,7 @@ describe('feature complete app', () => { expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ import { SchemaUnionsKey } from 'gqty'; @@ -1054,7 +1103,7 @@ test('prettier detects invalid code', async () => { con a; // invalid code `, }).catch((err) => err.message.split('\n')[0]) - ).resolves.toBe(`Unexpected keyword or identifier. (6:9)`); + ).resolves.toBe(`Unexpected keyword or identifier. (7:9)`); }); describe('mutation', () => { @@ -1090,7 +1139,7 @@ describe('mutation', () => { expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -1219,7 +1268,7 @@ describe('subscription', () => { expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -1356,13 +1405,13 @@ test('javascript output works', async () => { expect(clientCode).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import { createClient as createSubscriptionsClient } from 'graphql-ws'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1406,23 +1455,40 @@ test('javascript output works', async () => { }) : undefined; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + /** * @type {import("gqty").GQtyClient} */ + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, subscriber: subscriptionsClient, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - /** * @type {import("@gqty/react").ReactClient} */ @@ -1467,13 +1533,26 @@ test('javascript output works', async () => { useSubscription, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(javascriptSchemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ + import { SchemaUnionsKey } from 'gqty'; /** @@ -1548,7 +1627,7 @@ test('javascript output works', async () => { `); expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ import { SchemaUnionsKey } from 'gqty'; @@ -1673,13 +1752,13 @@ test('ignoreArgs transform', async () => { expect(clientCode).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1707,19 +1786,35 @@ test('ignoreArgs transform', async () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -1757,6 +1852,18 @@ test('ignoreArgs transform', async () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); @@ -1783,7 +1890,7 @@ test('ignoreArgs transform', async () => { `); expect(javascriptSchemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ /** @@ -1804,7 +1911,7 @@ test('ignoreArgs transform', async () => { `); expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -2020,7 +2127,7 @@ test('fields with default value works', async () => { expect(schemaCode).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ // This should be included @@ -2093,12 +2200,5 @@ test('fields with default value works', async () => { " `); - expect( - schemaCode - .split('\n') - .slice(3) - .join('\n') - .trim() - .startsWith(shouldBeIncluded) - ).toBeTruthy(); + expect(schemaCode.split('\n')[4]).toStrictEqual(shouldBeIncluded); }); diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index be5b25bdc..cbc247e98 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -55,13 +55,13 @@ test('basic inspectWriteGenerate functionality', async () => { ).replace(new RegExp(endpoint, 'g'), '/graphql') ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -89,19 +89,35 @@ test('basic inspectWriteGenerate functionality', async () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -139,6 +155,18 @@ test('basic inspectWriteGenerate functionality', async () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); @@ -149,7 +177,7 @@ test('basic inspectWriteGenerate functionality', async () => { }) ).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -250,13 +278,13 @@ describe('from file', () => { ) ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -284,19 +312,35 @@ describe('from file', () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -334,12 +378,24 @@ describe('from file', () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -443,13 +499,13 @@ describe('from file', () => { ) ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -477,19 +533,35 @@ describe('from file', () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -527,12 +599,24 @@ describe('from file', () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -635,13 +719,13 @@ describe('from file', () => { ) ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -669,19 +753,35 @@ describe('from file', () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -719,12 +819,24 @@ describe('from file', () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -871,13 +983,13 @@ describe('from multiple files', () => { ) ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -905,19 +1017,35 @@ describe('from multiple files', () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -955,12 +1083,24 @@ describe('from multiple files', () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; @@ -1123,13 +1263,13 @@ test('specify generateOptions to inspectWriteGenerate', async () => { generatedFileContentClient.replace(new RegExp(endpoint, 'g'), '/graphql') ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1157,19 +1297,35 @@ test('specify generateOptions to inspectWriteGenerate', async () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -1207,12 +1363,24 @@ test('specify generateOptions to inspectWriteGenerate', async () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ // This should be included @@ -1274,14 +1442,9 @@ test('specify generateOptions to inspectWriteGenerate', async () => { " `); - expect( - generatedFileContentSchema - .split('\n') - .slice(3) - .join('\n') - .trim() - .startsWith(shouldBeIncluded) - ).toBeTruthy(); + expect(generatedFileContentSchema.split('\n')[4]).toStrictEqual( + shouldBeIncluded + ); } finally { await tempDir.cleanup(); } @@ -1344,8 +1507,9 @@ describe('inspect headers', () => { expect(generatedFileContent).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ + // This should be included export type Maybe = T | null; @@ -1408,7 +1572,7 @@ describe('inspect headers', () => { expect( generatedFileContent .split('\n') - .slice(3) + .slice(4) .join('\n') .startsWith(shouldBeIncluded) ).toBeTruthy(); @@ -1469,13 +1633,13 @@ describe('CLI behavior', () => { ).replace(new RegExp(endpoint, 'g'), '/graphql') ).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1503,19 +1667,35 @@ describe('CLI behavior', () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -1553,6 +1733,18 @@ describe('CLI behavior', () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); @@ -1563,7 +1755,7 @@ describe('CLI behavior', () => { }) ).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 4711477b5..d1c4e82da 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -64,18 +64,13 @@ test('generates code and writes existing file', async () => { encoding: 'utf-8', }); - expect( - generatedContent - .split('\n') - .slice(3) - .join('\n') - .startsWith(shouldBeIncluded) - ).toBeTruthy(); + expect(generatedContent.split('\n')[4]).toStrictEqual(shouldBeIncluded); expect(generatedContent).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ + // This should be included export type Maybe = T | null; @@ -165,18 +160,15 @@ test('creates dir, generates code and writes new file', async () => { } ); - expect( - generatedContentSchema - .split('\n') - .slice(3) - .join('\n') - .startsWith(shouldBeIncluded) - ).toBeTruthy(); + expect(generatedContentSchema.split('\n')[4]).toStrictEqual( + shouldBeIncluded + ); expect(generatedContentSchema).toMatchInlineSnapshot(` "/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ + // This should be included export type Maybe = T | null; @@ -245,13 +237,13 @@ test('creates dir, generates code and writes new file', async () => { expect(generatedContentClient).toMatchInlineSnapshot(` "/** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; import type { QueryFetcher } from 'gqty'; - import { createClient } from 'gqty'; + import { createClient, Cache } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -279,19 +271,35 @@ test('creates dir, generates code and writes new file', async () => { return json; }; + const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } + ); + export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, + cache, fetchOptions: { fetcher: queryFetcher, }, }); + // Core functions + const { resolve, subscribe, schema } = client; + + // Legacy functions const { query, mutation, mutate, subscription, resolved, refetch, track } = client; - export { query, mutation, mutate, subscription, resolved, refetch, track }; - const { graphql, useQuery, @@ -329,6 +337,18 @@ test('creates dir, generates code and writes new file', async () => { prepareQuery, }; + export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + }; export * from './schema.generated'; " `); diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 6ff4df822..49a16f000 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,11 +1,7 @@ import type { Client as SseClient } from 'graphql-sse'; import type { Client as WsClient } from 'graphql-ws'; import { createSchemaAccessor } from '../Accessor'; -import { Cache } from '../Cache'; -import { - CacheNormalizationHandler, - defaultNormalizationHandler as defaultNormalizationOptions, -} from '../Cache/normalization'; +import type { Cache } from '../Cache'; import { createPersistors, Persistors } from '../Cache/persistence'; import type { RetryOptions } from '../Error'; import type { @@ -105,19 +101,7 @@ export type FetchOptions = Omit & { }; export type ClientOptions = { - /** - * Default cache options is an immediate expiry with a 5 minutes window of - * stale-while-revalidate. - */ - cacheOptions?: { - maxAge?: number; - staleWhileRevalidate?: number; - /** - * `false` to disable normalized cache, which usually means manual - * refetching after mutations. - */ - normalization?: boolean | CacheNormalizationHandler; - }; + cache: Cache; fetchOptions: FetchOptions; scalars: ScalarsEnumsHash; schema: Readonly; @@ -147,11 +131,7 @@ export const createClient = < // TODO: compat: remove in next major _ObjectTypes extends SchemaObjects = never >({ - cacheOptions: { - maxAge = 100, - normalization = true, - staleWhileRevalidate = 5 * 60 * 1000, - } = {}, + cache, fetchOptions: { fetcher, fetchPolicy = 'default', @@ -184,29 +164,16 @@ export const createClient = < } } - const normalizationOptions = - normalization === true - ? defaultNormalizationOptions - : normalization === false - ? undefined - : normalization; - - const clientCache = new Cache(undefined, { - maxAge, - normalization: normalizationOptions, - staleWhileRevalidate, - }); - // TODO: Defer creation until `@gqty/logger` is used. const debug = createDebugger(); const defaultContextOptions: CreateContextOptions = { - cache: clientCache, + cache, depthLimit: __depthLimit, fetchPolicy, scalars, schema, - typeKeys: normalizationOptions?.schemaKeys, + typeKeys: cache.normalizationOptions?.schemaKeys, }; // Global scope for accessing the cache via `schema` property. @@ -215,7 +182,7 @@ export const createClient = < const resolvers = createResolvers({ scalars, schema, - cache: clientCache, + cache, debugger: debug, fetchOptions: { fetcher, @@ -234,11 +201,11 @@ export const createClient = < ...resolvers, schema: accessor, subscribeDebugEvents: debug.subscribe, - ...createPersistors(clientCache), + ...createPersistors(cache), ...createLegacyClient({ accessor, - cache: clientCache, + cache, context: clientContext, debugger: debug, fetchOptions: { diff --git a/packages/gqty/src/index.ts b/packages/gqty/src/index.ts index 592613afb..d78f568cc 100644 --- a/packages/gqty/src/index.ts +++ b/packages/gqty/src/index.ts @@ -1,3 +1,4 @@ +export * from './Cache'; export * from './Client'; export type { Client as GQtyClient } from './Client'; export * from './Error'; diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 47b809e6f..d4315253f 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -1,5 +1,5 @@ import { $meta } from 'gqty/Accessor'; -import { GQtyError, prepass } from '../src'; +import { Cache, GQtyError, prepass } from '../src'; import { fetchSelections } from '../src/Client/resolveSelections'; import { updateCaches } from '../src/Client/updateCaches'; import { Selection } from '../src/Selection'; @@ -12,7 +12,7 @@ describe('core#resolve', () => { resolve, schema: { query }, } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { maxAge: 50 }, + cache: new Cache(undefined, { maxAge: 50 }), }); await expect( @@ -43,10 +43,7 @@ describe('core#resolve', () => { resolve, schema: { query }, } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { - maxAge: 50, - staleWhileRevalidate: 0, - }, + cache: new Cache(undefined, { maxAge: 50, staleWhileRevalidate: 0 }), }); await expect( @@ -92,10 +89,10 @@ describe('core#resolve', () => { undefined, undefined, { - cacheOptions: { + cache: new Cache(undefined, { maxAge: Infinity, staleWhileRevalidate: 0, - }, + }), } ); @@ -117,10 +114,10 @@ describe('core#resolve', () => { resolve, schema: { query }, } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { + cache: new Cache(undefined, { maxAge: Infinity, staleWhileRevalidate: 0, - }, + }), }); await expect( @@ -140,10 +137,10 @@ describe('core#resolve', () => { undefined, undefined, { - cacheOptions: { + cache: new Cache(undefined, { maxAge: 0, staleWhileRevalidate: 0, - }, + }), } ); @@ -159,37 +156,6 @@ describe('core#resolve', () => { resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) ).resolves.toBe('hello world'); }); - - it('cache-and-network', async () => { - const { - resolve, - schema: { query }, - } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { - maxAge: 50, - }, - }); - - await expect( - resolve(({ query }) => query.nFetchCalls, { - fetchPolicy: 'cache-and-network', - }) - ).resolves.toBe(1); - - await new Promise((resolve) => setTimeout(resolve, 100)); - - let promise: Promise | undefined; - resolve(({ query }) => query.nFetchCalls, { - awaitsFetch: false, - fetchPolicy: 'cache-and-network', - onFetch(p) { - promise = p; - }, - }); - expect(query.nFetchCalls).toBe(1); - await promise; - expect(query.nFetchCalls).toBe(2); - }); }); it('subscriptions', async () => { @@ -366,7 +332,7 @@ describe('compat', () => { undefined, undefined, undefined, - { cacheOptions: { maxAge: Infinity } } + { cache: new Cache(undefined, { maxAge: Infinity }) } ); const resolveFn = () => { const human = query.human({ @@ -405,7 +371,7 @@ describe('compat', () => { undefined, undefined, undefined, - { cacheOptions: { maxAge: Infinity } } + { cache: new Cache(undefined, { maxAge: Infinity }) } ); const resolveFn = () => { const human = query.human({ diff --git a/packages/gqty/test/helpers.test.ts b/packages/gqty/test/helpers.test.ts index a77e06559..158574ee9 100644 --- a/packages/gqty/test/helpers.test.ts +++ b/packages/gqty/test/helpers.test.ts @@ -1,4 +1,5 @@ import { + Cache, castNotSkeleton, castNotSkeletonDeep, getArrayFields, @@ -1268,7 +1269,7 @@ describe('get fields', () => { undefined, undefined, undefined, - { cacheOptions: { normalization: false } } + { cache: new Cache(undefined, { normalization: false }) } ); await resolved(() => { @@ -1321,7 +1322,7 @@ describe('prefetch', () => { undefined, undefined, undefined, - { cacheOptions: { maxAge: 100 } } + { cache: new Cache(undefined, { maxAge: 100 }) } ); const resultPromise = prefetch((query) => query.time); diff --git a/packages/gqty/test/interfaces-unions.test.ts b/packages/gqty/test/interfaces-unions.test.ts index 93830b91d..0760b28b4 100644 --- a/packages/gqty/test/interfaces-unions.test.ts +++ b/packages/gqty/test/interfaces-unions.test.ts @@ -1,9 +1,8 @@ +import { Cache } from 'gqty'; import { createTestClient } from './utils'; const testClientPromise = createTestClient(undefined, undefined, undefined, { - cacheOptions: { - normalization: true, - }, + cache: new Cache(undefined, { normalization: true }), }); let testClient: Awaited; @@ -154,7 +153,7 @@ describe('interfaces and unions', () => { undefined, undefined, undefined, - { cacheOptions: { normalization: false } } + { cache: new Cache(undefined, { normalization: true }) } ); const nodeResult = await resolved(() => { diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 6eb5f4665..72a7f21c8 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -1,4 +1,4 @@ -import { selectFields } from '../src'; +import { Cache, selectFields } from '../src'; import { assignSelections, setCache } from '../src/Accessor'; import { createTestClient } from './utils'; @@ -13,7 +13,7 @@ describe('playground', () => { resolved, schema: cache, } = await createTestClient(undefined, undefined, undefined, { - cacheOptions: { normalization: false }, + cache: new Cache(undefined, { normalization: true }), }); await resolved(() => query.human().sons.map((v) => selectFields(v))); diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index b53ea61c3..e7be73445 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -564,6 +564,7 @@ export const createTestClient = async ( const testClient = Object.assign( createGQtyClient({ + cache: new Cache(undefined, { normalization: true }), ...clientConfig, schema: deepAssign(generatedSchema, [addedToGeneratedSchema]) as Schema, fetchOptions: { diff --git a/packages/react/test/utils.ts b/packages/react/test/utils.ts index cbca31725..0bee9b945 100644 --- a/packages/react/test/utils.ts +++ b/packages/react/test/utils.ts @@ -1,5 +1,6 @@ import '@testing-library/jest-dom/extend-expect'; import { + Cache, ClientOptions, createClient, QueryFetcher, @@ -105,6 +106,7 @@ export const createReactTestClient = async ( type Mutation { sendNotification(message: String!): Boolean! humanMutation(nameArg: String!): Human + renameHuman(name: String!, newName: String!): Human } type Subscription { newNotification: String! @@ -153,10 +155,10 @@ export const createReactTestClient = async ( return null; }, async throw() { - throw Error('expected error'); + throw new Error('expected error'); }, async throw2() { - throw Error('expected error 2'); + throw new Error('expected error 2'); }, time() { return new Date().toISOString(); @@ -184,6 +186,19 @@ export const createReactTestClient = async ( humanMutation(_root, { nameArg }: { nameArg: string }) { return createHuman(nameArg); }, + renameHuman( + _root, + { name, newName }: { name: string; newName: string } + ) { + if (!humanIds[name]) { + throw new Error(`Human ${name} not found`); + } + + humanIds[newName] = humanIds[name]; + delete humanIds[name]; + + return createHuman(newName); + }, }, Subscription: { newNotification: { @@ -270,6 +285,7 @@ export const createReactTestClient = async ( mutation: { sendNotification(args: { message: string }): boolean; humanMutation: (args?: { nameArg?: string }) => Human; + renameHuman: (args: { name: string; newName: string }) => Human; }; subscription: { newNotification: string | null | undefined; @@ -278,6 +294,11 @@ export const createReactTestClient = async ( const core = Object.assign( createClient({ + cache: new Cache(undefined, { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + }), schema: merge(generatedSchema, [addedToGeneratedSchema]) as Schema, scalars: scalarsEnumsHash, fetchOptions: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dfde2c799..e99541396 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -734,6 +734,9 @@ importers: gqty: specifier: workspace:^2.3.0 version: link:../gqty/dist + p-lazy: + specifier: ^3.1.0 + version: 3.1.0 undici: specifier: 5.7.0 version: 5.7.0 @@ -14230,6 +14233,10 @@ packages: engines: {node: '>=4'} dev: false + /p-lazy@3.1.0: + resolution: {integrity: sha512-sCJn0Cdahs6G6SX9+DUihVFUhrzDEduzE5xeViVBGtoqy5dBWko7W8T6Kk6TjR2uevRXJO7CShfWrqdH5s3w3g==} + engines: {node: '>=8'} + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -17947,6 +17954,7 @@ packages: dependencies: gqty: link:packages/gqty/dist graphql: 17.0.0-alpha.2 + p-lazy: 3.1.0 undici: 5.7.0 dev: true From 8547e2edcb2b05ebd9696515e8a756cd2a7c276a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 01:16:58 +0800 Subject: [PATCH 019/122] chore: compat and optimized normalization --- packages/gqty/package.json | 5 +- packages/gqty/src/Accessor/resolve.ts | 31 +- packages/gqty/src/Cache/index.ts | 237 +++++---- packages/gqty/src/Cache/normalization.ts | 137 +++--- packages/gqty/src/Client/compat/client.ts | 2 +- .../src/Client/compat/subscriptionsClient.ts | 173 +++++-- packages/gqty/src/Client/compat/track.ts | 4 +- packages/gqty/src/Client/context.ts | 5 +- packages/gqty/src/Client/resolveSelections.ts | 104 ++-- packages/gqty/src/Client/resolvers.ts | 202 ++++---- packages/gqty/src/Error/index.ts | 21 +- packages/gqty/src/Helpers/deepCopy.ts | 26 +- packages/gqty/src/Helpers/index.ts | 1 + packages/gqty/src/Helpers/select.ts | 31 +- packages/gqty/src/Helpers/variables.ts | 1 + packages/gqty/src/Utils/index.ts | 1 - packages/gqty/src/Utils/object.ts | 3 + packages/gqty/src/Utils/promise.ts | 115 ----- packages/gqty/test/subscriptions.test.ts | 2 +- packages/gqty/test/utils.ts | 50 +- packages/subscriptions/.browserslistrc | 1 + packages/subscriptions/CHANGELOG.md | 129 +++++ packages/subscriptions/LICENSE | 24 + packages/subscriptions/README.md | 3 + packages/subscriptions/jest.config.js | 1 + packages/subscriptions/package.json | 63 +++ packages/subscriptions/src/index.ts | 168 +++++++ .../subscriptions/src/subscription/client.ts | 462 ++++++++++++++++++ .../src/subscription/protocol.ts | 13 + packages/subscriptions/src/utils.ts | 26 + packages/subscriptions/test/index.test.ts | 5 + packages/subscriptions/test/tsconfig.json | 15 + packages/subscriptions/tsconfig.json | 3 + 33 files changed, 1482 insertions(+), 582 deletions(-) create mode 100644 packages/gqty/src/Helpers/variables.ts delete mode 100644 packages/gqty/src/Utils/promise.ts create mode 100644 packages/subscriptions/.browserslistrc create mode 100644 packages/subscriptions/CHANGELOG.md create mode 100644 packages/subscriptions/LICENSE create mode 100644 packages/subscriptions/README.md create mode 100644 packages/subscriptions/jest.config.js create mode 100644 packages/subscriptions/package.json create mode 100644 packages/subscriptions/src/index.ts create mode 100644 packages/subscriptions/src/subscription/client.ts create mode 100644 packages/subscriptions/src/subscription/protocol.ts create mode 100644 packages/subscriptions/src/utils.ts create mode 100644 packages/subscriptions/test/index.test.ts create mode 100644 packages/subscriptions/test/tsconfig.json create mode 100644 packages/subscriptions/tsconfig.json diff --git a/packages/gqty/package.json b/packages/gqty/package.json index abde9fd3d..588d54d18 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -48,7 +48,10 @@ "just-memoize": "^2.2.0", "just-safe-get": "^4.2.0", "just-safe-set": "^4.2.1", - "object-hash": "^3.0.0" + "multidict": "^1.0.3", + "object-hash": "^3.0.0", + "p-defer": "^3.0.0", + "p-lazy": "^3.1.0" }, "devDependencies": { "@size-limit/preset-small-lib": "^8.2.4", diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index cd1f9b674..73fdf32f6 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -11,7 +11,7 @@ import { Type, } from '../Schema'; import type { Selection } from '../Selection'; -import { deepAssign, isObject } from '../Utils'; +import { isObject } from '../Utils'; import type { Meta } from './meta'; import { $meta, $setMeta } from './meta'; import { createSkeleton, isSkeleton } from './skeleton'; @@ -115,7 +115,8 @@ export const resolve = ( if (data === undefined) { data = createSkeleton(() => ({})); - // Getting an array of an object, not interacting with array items. + // User is currently getting the array itself, not array items. We wrap the + // skeleton object with a makeshift array. if (isArray && !isNumericSelection) { data = createSkeleton(() => [data]); } @@ -141,9 +142,16 @@ export const resolve = ( cache.data = data; // Subscribe to cache changes at root level, child accessors should have new - // values reflected after cache updates. Listeners created this way have no - // way to be garbage collected, but the number of accessed root keys are - // assumed to be manageable. + // values reflected after cache updates. Listeners created this way cannot be + // garbage collected along with the throwaway proxies, unsubscribing the last + // one each time we access this root key. + // + // This is only useful when users hold on to an accessor while being updated. + // If accessors are read from top-level, data is read again from the cache and + // new data is already reflected. + // + // Accessor objects may be cached in the future, then these subscriptions will + // become an essential part of the system. if (selection.parent === selection.root) { const listenerCacheKey = `__accessorCacheListeners.${cacheKeys.join('/')}`; @@ -153,7 +161,8 @@ export const resolve = ( [cacheKeys.join('.')], (cache) => { if (isObject(cache) && isObject(data)) { - deepAssign(data, [get(cache, cacheKeys.join('.'))]); + // FIXME: This deshells norbjs + // deepAssign(data, [get(cache, cacheKeys.join('.'))]); } } ); @@ -477,7 +486,7 @@ const arrayProxyHandler: ProxyHandler = { return value; }, set(_, key, value, proxy) { - if (typeof key === 'symbol' || +key !== +key) { + if (typeof key === 'symbol' || (key !== 'length' && +key !== +key)) { throw new GQtyError(`Invalid array assignment.`); } @@ -501,6 +510,14 @@ export const createArrayAccessor = < meta: Meta ) => { if (!Array.isArray(meta.cache.data)) { + if (process.env.NODE_ENV !== 'production') { + console.warn( + 'Received invalid cache data for array accessor.', + meta, + meta.context.cache.toJSON() + ); + } + throw new GQtyError(`Cache data must be an array.`); } diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index 19867b0ad..e879ea992 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -1,4 +1,5 @@ import set from 'just-safe-set'; +import { MultiDict } from 'multidict'; import { isSkeleton } from '../Accessor/skeleton'; import { deepCopy, FrailMap, select } from '../Helpers'; import type { GeneratedSchemaObject } from '../Schema'; @@ -33,9 +34,15 @@ export type CacheObject = { export type CacheLeaf = string | number | boolean | null | undefined; export type CacheOptions = { - maxAge?: number; - normalization?: boolean | CacheNormalizationHandler; - staleWhileRevalidate?: number; + readonly maxAge?: number; + + /** + * `false` to disable normalized cache, which usually means manual + * refetching after mutations. + */ + readonly normalization?: boolean | CacheNormalizationHandler; + + readonly staleWhileRevalidate?: number; }; export type CacheDataContainer = { @@ -79,33 +86,47 @@ export type CacheSetOptions = { // TODO: Simple cache eviction: evict(type: string, field: string) {} export class Cache { #maxAge = Infinity; + get maxAge() { + return this.#maxAge; + } - #staleWhileRevalidate = 0; + #staleWhileRevalidate: number = 0; + get staleWhileRevalidate() { + return this.#staleWhileRevalidate; + } - #data = new FrailMap(); + #normalizationOptions?: CacheNormalizationHandler; + get normalizationOptions() { + return this.#normalizationOptions; + } - #normalizationHandler?: CacheNormalizationHandler; + /** + * The actual data cache. Cache keys are formatted as the first 2 layer of + * the selection path, e.g. `['query', 'user']` for `query.user`. + * + * This enables a cache expiry/eviction strategy based on top-level queries. + */ + #data = new FrailMap(); /** Look up table for normalized objects. */ - #normalizedObjects = new FrailMap< - string, - NormalizedObjectShell - >(); + #normalizedObjects = new Map>(); constructor( data?: CacheSnapshot, { maxAge = Infinity, - staleWhileRevalidate = 3600, + staleWhileRevalidate = 5 * 30 * 1000, normalization, }: CacheOptions = {} ) { - this.#maxAge = maxAge; - this.#staleWhileRevalidate = staleWhileRevalidate; + this.#maxAge = Math.max(maxAge, 0); + this.#staleWhileRevalidate = Math.max(staleWhileRevalidate, 0); if (normalization) { - this.#normalizationHandler = - normalization === true ? defaultNormalizationHandler : normalization; + this.#normalizationOptions = + normalization === true + ? defaultNormalizationHandler + : Object.freeze({ ...normalization }); } if (data) { @@ -115,7 +136,7 @@ export class Cache { restore(data: CacheSnapshot) { const { query, mutation, subscription, normalizedObjects } = - importCacheSnapshot(data, this.#normalizationHandler) ?? {}; + importCacheSnapshot(data, this.normalizationOptions) ?? {}; this.#normalizedObjects = normalizedObjects ?? new FrailMap(); this.#data = new FrailMap(); @@ -123,83 +144,79 @@ export class Cache { this.set({ query, mutation, subscription }, { skipNotify: true }); } + /** Subscription paths and it's listener function. */ #subscriptions = new Map(); /** Subscription paths that reached a normalized object. */ - #normalizedSubscriptions = new WeakMap< - CacheObject, - Map - >(); + #normalizedSubscriptions = new MultiDict(); /** Subscribe to cache changes. */ subscribe(paths: string[], fn: CacheListener) { const pathsSnapshot = Object.freeze([...paths]); - const unsubFns = new Set<() => void>(); this.#subscriptions.set(pathsSnapshot, fn); - unsubFns.add(() => this.#subscriptions.delete(pathsSnapshot)); + this.#subscribeNormalized(paths, fn); - // Normalized - { - const store = this.#normalizedObjects; - const subs = this.#normalizedSubscriptions; - const getId = this.#normalizationHandler?.identity; - if (getId) { - const scanNorbjs = (node: CacheNode, path: string[] = []) => { - for (const item of Array.isArray(node) ? node : [node]) { - if (!isCacheObject(item)) break; - - const id = getId(item); - if (id && store.has(id)) { - const sub = ( - subs.get(item) ?? new Map() - ).set(pathsSnapshot, fn); - - subs.set(item, sub); - - unsubFns.add(() => { - sub.delete(pathsSnapshot); - }); - } - - if (path.length > 0) { - scanNorbjs(item[path.shift()!], path); - } - } - }; + return () => { + this.#subscriptions.delete(pathsSnapshot); + this.#normalizedSubscriptions.delete(fn); + }; + } + + #subscribeNormalized(paths: readonly string[], fn: CacheListener) { + const getId = this.normalizationOptions?.identity; + if (!getId) return; - for (const path of paths) { - const [type, field, ...parts] = path.split('.'); + const store = this.#normalizedObjects; + const nsubs = this.#normalizedSubscriptions; - // Skip normalizations for out-of-spec paths to avoid pitfalls - if (!type || !field) continue; + nsubs.delete(fn); - scanNorbjs(this.get(`${type}.${field}`)?.data, parts); + for (const path of paths) { + const [type, field, ...parts] = path.split('.'); + select(this.get(`${type}.${field}`)?.data, parts, (node) => { + const id = getId(node); + if (id && store.has(id) && isCacheObject(node)) { + nsubs.set(node, fn); } - } - } - return () => { - unsubFns.forEach((unsub) => unsub()); - }; + return node; + }); + } } + // FIXME // This is pretty inefficient, but maintaining an indexed tree is too much // effort right now. Accepting PRs. #notifySubscribers = (value: CacheRoot) => { - const ref = { - memo: undefined as any, - get current() { - return this.memo ?? (this.memo = deepCopy(value)); - }, - }; + // Collect all relevant listeners from both path selections and + // normalized objects in a unique Set. + const listeners = new Set(); + const subs = this.#subscriptions; + const nsubs = this.#normalizedSubscriptions; + const getId = this.normalizationOptions?.identity; for (const [paths, notify] of this.#subscriptions) { for (const path of paths) { const parts = path.split('.'); - const node = select(value, parts); + const node = select(value, parts, (node) => { + // Normalized subscriptions + if (getId?.(node) && isCacheObject(node)) { + // If already subscribed, notify it. + nsubs.get(node)?.forEach((notify) => { + listeners.add(notify); + }); + + // Otherwise, subscribe it for future cross-triggering. Current + // invocation can be skipped because normal path traversion goes + // down to single properties and is more accurate. + nsubs.set(node, notify); + } + + return node; + }); - // Notify and breaks when something is hit + // Notify and breaks when one of the path hits if ( Array.isArray(node) ? (node as unknown[]) @@ -207,21 +224,54 @@ export class Cache { .some((item) => item !== undefined) : node !== undefined ) { - notify(ref.current); + listeners.add(notify); break; } } } - // Normalized - if (this.#normalizationHandler) { + // Re-calculate normalized subscriptions of relevant objects when we have + // normalization enabled. + if (getId) { + // Normalized objects reachable by all subscribers, these subscribers + // should also subscribe to these objects. Since we have no idea what had + // been replaced by the current call to `cache.set()`, these subscription + // paths has to re-subscribe from scratch to remove those no longer + // relevant. + const norbjs = new Set(); + + // Crawl value to find all normalized objects crawl(value, (node) => { - if (isCacheObject(node)) { - this.#normalizedSubscriptions - .get(node) - ?.forEach((notify) => notify(ref.current)); + if (getId(node) && isCacheObject(node)) { + norbjs.add(node); } }); + + const resubscribingListeners = new Set(); + + for (const norbj of norbjs) { + for (const listener of nsubs.get(norbj) ?? []) { + listeners.add(listener); + resubscribingListeners.add(listener); + } + } + + // Resubscribe + for (const listener of resubscribingListeners) { + for (const [paths, _listener] of subs) { + if (listener === _listener) { + this.#subscribeNormalized(paths, listener); + } + } + } + } + + // Invoke all reachable listeners with a snapshot of value. + if (listeners.size > 0) { + const valueSnapshot = deepCopy(value); + for (const notify of listeners) { + notify(valueSnapshot); + } } }; @@ -237,6 +287,9 @@ export class Cache { * Caching accessors by cache values is broken with normalization enabled. * Different selection paths leading to the same normalized object overwrites * each other, along with the selection inside. + * + * Current workaround is to cache selection children in parents, preventing + * excessive selection object creation. */ #selectionAccessors = new WeakMap(); @@ -299,14 +352,14 @@ export class Cache { * Example value: `{ query: { foo: "bar" } }` */ set(values: CacheRoot, { skipNotify = false }: CacheSetOptions = {}) { - const age = this.#maxAge; - const swr = this.#staleWhileRevalidate; + const age = this.maxAge; + const swr = this.staleWhileRevalidate; const now = Date.now(); // Normalize incoming data before merging. - if (this.#normalizationHandler) { + if (this.normalizationOptions) { values = deepNormalizeObject(values, { - ...this.#normalizationHandler, + ...this.normalizationOptions, store: this.#normalizedObjects, }); } @@ -317,11 +370,23 @@ export class Cache { clearTimeout(this.#data.get(cacheKey)?.timeout); - const dataContainer: CacheDataContainer = { - data, - expiresAt: age + now, - swrBefore: age + swr + now, - }; + const dataContainer: CacheDataContainer = + // Mutation and subscription results should be returned right away for + // immediate use. Their responses are only meaningful to a cache with + // normalization enabled, where it updates subscribing clients. + // We force a short expiration to let it survives the next render, + // then leave it up for GC. + type === 'mutation' || type === 'subscription' + ? { + data, + expiresAt: now + 100, + swrBefore: now, + } + : { + data, + expiresAt: age + now, + swrBefore: age + swr + now, + }; if (isFinite(age + swr)) { const timeout = setTimeout( @@ -361,8 +426,8 @@ export class Cache { } ); - if (this.#normalizationHandler) { - return exportCacheSnapshot(snapshot, this.#normalizationHandler); + if (this.normalizationOptions) { + return exportCacheSnapshot(snapshot, this.normalizationOptions); } else { return snapshot; } diff --git a/packages/gqty/src/Cache/normalization.ts b/packages/gqty/src/Cache/normalization.ts index 9080d438d..c221072b1 100644 --- a/packages/gqty/src/Cache/normalization.ts +++ b/packages/gqty/src/Cache/normalization.ts @@ -1,7 +1,6 @@ import type { CacheNode, CacheObject } from '.'; import { GQtyError } from '../Error'; import { deepAssign } from '../Utils'; -import { crawl } from './crawl'; import { isCacheObject } from './utils'; const refKey = Symbol('__ref'); @@ -96,41 +95,34 @@ export const deepNormalizeObject = ( data: TData, options: NormalizatioOptions ): TData => { - const seen = new Set(); + return walk(data); - return crawl(data, (it, key, obj) => { - if (!isCacheObject(it)) return; - - // Replace normalized objects across queries, but merge multiple occurrances - // of the same object within a query. - const id = options.identity(it); - - if (id && !seen.has(id)) { - // normalizedObject() always merges, uncomment the following line to - // perform replacements across queries. But this easily leads to infinite - // renders between racing fetches. - //options.store.get(id)?.$set({}); + function walk(input: T, depth = 0): T { + if (depth < 15 && input && typeof input === 'object') { + for (const [key, value] of Object.entries(input)) { + (input as Record)[key] = walk(value, depth + 1); + } - seen.add(id); + if (!Array.isArray(input) && isCacheObject(input)) { + const id = options.identity(input); + if (id) { + const norbj = normalizeObject(input, options); + if (norbj) { + return norbj as T; + } + } + } } - const norbj = normalizeObject(it, options); - if (norbj === undefined) return; - - (obj as any)[key] = norbj; - - if (seen.has(norbj)) return; - seen.add(norbj); - - return [norbj, 0, []]; - }); + return input; + } }; export type CacheNormalizationHandler = { /** * To disable normalization for a particular object, return undefined. */ - identity(value: CacheObject): string | undefined; + identity(value: CacheNode): string | undefined; onConflict?( /** Existing value */ @@ -142,49 +134,66 @@ export type CacheNormalizationHandler = { schemaKeys?: Record; }; -export const defaultNormalizationHandler: CacheNormalizationHandler = { - identity(value) { - if (!value || typeof value !== 'object') return; +export const defaultNormalizationHandler: CacheNormalizationHandler = + Object.freeze({ + identity(value) { + if (!value || typeof value !== 'object' || Array.isArray(value)) return; - const identityFields = [value.__typename, value.id ?? value._id]; + const identityFields = [value.__typename, value.id ?? value._id]; - if (identityFields.some((field) => field === undefined)) return; + if (identityFields.some((field) => field === undefined)) return; - return identityFields.join(':'); - }, - onConflict(existing, incoming) { - if (Array.isArray(existing) && Array.isArray(incoming)) { - if (existing.length === incoming.length) { - for (const [k, a] of existing.entries()) { - const b = incoming[k]; - if (isCacheObject(a) && isCacheObject(b)) { - Object.assign(a, b); - } + return identityFields.join(':'); + }, + onConflict(existing, incoming) { + const mergeObjects = (a: CacheObject, b: CacheObject) => { + const result = { ...a, ...b }; + + if (isNormalizedObjectShell(a)) { + a.$set(result); + return a; + } else if (isNormalizedObjectShell(b)) { + b.$set(result); + return b; } - } else { - // Replace the values, but keep the original array reference. - existing.splice(0, existing.length, ...incoming); - } - return existing; - } - // else if (isCacheObject(existing) && isCacheObject(incoming)) { - // /** - // * Object subsets further closer to leaf nodes will replace objects closer - // * to root, we should blindly merge them in the same fetch. - // * - // * Replacements via isSubsetOf() may happen between fetches, not within. - // */ - // if (isSubsetOf(existing, incoming) || isSubsetOf(incoming, existing)) { - // return { ...incoming, ...existing }; - // } else { - // return incoming; - // } - // } - - return; - }, -}; + return result; + }; + + if (Array.isArray(existing) && Array.isArray(incoming)) { + if (existing.length === incoming.length) { + return; + // for (const [k, a] of existing.entries()) { + // const b = incoming[k]; + // if (isCacheObject(a) && isCacheObject(b)) { + // existing[k] = mergeObjects(a, b); + // } + // } + } else { + // Replace the values, but keep the original array reference. + existing.splice(0, existing.length, ...incoming); + } + return existing; + } else if (isCacheObject(existing) && isCacheObject(incoming)) { + return mergeObjects(existing, incoming); + } + // else if (isCacheObject(existing) && isCacheObject(incoming)) { + // /** + // * Object subsets further closer to leaf nodes will replace objects closer + // * to root, we should blindly merge them in the same fetch. + // * + // * Replacements via isSubsetOf() may happen between fetches, not within. + // */ + // if (isSubsetOf(existing, incoming) || isSubsetOf(incoming, existing)) { + // return { ...incoming, ...existing }; + // } else { + // return incoming; + // } + // } + + return; + }, + }); export const isSubsetOf = (a: CacheObject, b: CacheObject) => { for (const [key, value] of Object.entries(a)) { diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index 22de56b77..ae1184a29 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -66,7 +66,7 @@ export type CreateLegacyClientOptions = { export type LegacyClientOptions = { queryFetcher?: LegacyQueryFetcher; - scalarsEnumsHash: ScalarsEnumsHash; + scalarsEnumsHash?: ScalarsEnumsHash; subscriptionsClient?: LegacySubscriptionsClient; }; diff --git a/packages/gqty/src/Client/compat/subscriptionsClient.ts b/packages/gqty/src/Client/compat/subscriptionsClient.ts index ed39f0d7d..5f1914101 100644 --- a/packages/gqty/src/Client/compat/subscriptionsClient.ts +++ b/packages/gqty/src/Client/compat/subscriptionsClient.ts @@ -1,10 +1,21 @@ import type { ExecutionResult } from 'graphql'; -import type { Client, Sink, SubscribePayload } from 'graphql-ws'; +import { + Client, + ConnectionAckMessage, + Event, + EventListener, + MessageType, + Sink, + SubscribeMessage, + SubscribePayload, +} from 'graphql-ws'; import type { Promisable } from 'type-fest'; -import type { GQtyError } from '../../Error'; +import { GQtyError } from '../../Error'; import type { LegacySelection as Selection } from './selection'; -export type LegacySubscriptionsClient = { +export type LegacySubscriptionsClient< + TData extends Record = Record +> = { subscribe(opts: { query: string; variables: Record | undefined; @@ -15,7 +26,7 @@ export type LegacySubscriptionsClient = { query: string; variables: Record | undefined; operationId: string; - }) => LegacySubscribeEvents) + }) => LegacySubscribeEvents) | LegacySubscribeEvents; cacheKey?: string; }): Promisable<{ @@ -32,63 +43,121 @@ export type LegacySubscriptionsClient = { ): void; }; -export interface LegacySubscribeEvents { - onData: (data: Record) => void; - onError: (payload: { - error: GQtyError; - data: Record | null; - }) => void; +export interface LegacySubscribeEvents< + TData extends Record = Record +> { + onData: (data: TData) => void; + onError: (payload: { error: GQtyError; data: TData | null }) => void; onStart?: () => void; onComplete?: () => void; } export const createLegacySubscriptionsClient = ( subscriptionsClient: LegacySubscriptionsClient -): Client => ({ - subscribe: < - TData = Record, - TExtensions = Record - >( - { query, variables }: SubscribePayload, - sink: Sink> - ) => { - const maybePromise = subscriptionsClient.subscribe({ - query, - variables: variables ?? {}, - selections: [], - events: { - onComplete: () => { - sink.complete(); - }, - onData: (result) => { - sink.next(result); - }, - onError({ data, error }) { - // No data or unknown error - if ((error && !error.graphQLErrors?.length) || !data) { - sink.error(error.otherError ?? error); - } else { - sink.next({ data: data as TData, errors: error.graphQLErrors }); - } +): Client => { + const listeners = new Map void>>(); + const dispatchEvent = (event: Event, ...args: unknown[]) => { + const listenersSet = listeners.get(event); + + if (listenersSet) { + for (const listener of listenersSet) { + listener(...args); + } + } + }; + + const client = { + subscribe: < + TData = Record, + TExtensions = Record + >( + payload: SubscribePayload, + sink: Sink> + ) => { + const maybePromise = subscriptionsClient.subscribe({ + query: payload.query, + variables: payload.variables ?? {}, + selections: [], + events: { + onStart: () => { + dispatchEvent('message', { + type: MessageType.ConnectionAck, + } satisfies ConnectionAckMessage); + }, + onComplete: () => { + sink.complete(); + }, + onData: (data) => { + sink.next({ + data: data as TData, + }); + }, + onError({ data, error }) { + // No data or unknown error + if ((error && !error.graphQLErrors?.length) || !data) { + sink.error(error.otherError ?? error); + } else { + sink.next({ + data: data as TData, + errors: error.graphQLErrors, + }); + } + }, }, - }, - }); + }); + + let unsubscribe: (() => void) | undefined; - return () => { if (maybePromise instanceof Promise) { - maybePromise.then(({ unsubscribe }) => { - unsubscribe(); + maybePromise.then(({ operationId, unsubscribe: _unsubscribe }) => { + unsubscribe = _unsubscribe; + + dispatchEvent('message', { + id: operationId, + type: MessageType.Subscribe, + payload, + } satisfies SubscribeMessage); }); } else { - (maybePromise as any).unsubscribe(); + const sub = maybePromise as Awaited; + + unsubscribe = sub.unsubscribe; + + dispatchEvent('message', { + id: sub.operationId, + type: MessageType.Subscribe, + payload, + } satisfies SubscribeMessage); } - }; - }, - dispose: () => { - subscriptionsClient.close(); - }, - terminate: () => { - subscriptionsClient.close(); - }, - on: () => () => {}, -}); + + return () => { + if (unsubscribe === undefined) { + throw new GQtyError(`Subscription has not started yet.`); + } + + unsubscribe(); + sink.complete(); + }; + }, + dispose: () => { + subscriptionsClient.close(); + }, + terminate: () => { + subscriptionsClient.close(); + }, + on(event: E, listener: EventListener) { + // Just for convenience + const untypedListener = listener as (...args: unknown[]) => void; + const listenersSet = listeners.get(event) ?? new Set(); + + listenersSet.add(untypedListener); + listeners.set(event, listenersSet); + + return () => { + listenersSet.delete(untypedListener); + }; + }, + }; + + return client; +}; diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index 12c118454..94d1b1133 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -34,14 +34,14 @@ export const createLegacyTrack = < >({ cache, context: globalContext, - resolvers: { createSubscriber }, + resolvers: { createResolver }, subscribeLegacySelections, }: CreateLegacyMethodOptions) => { const track: LegacyTrack = ( fn, { onError, operationName, refetch = false } = {} ) => { - const { context, selections, subscribe } = createSubscriber({ + const { context, selections, subscribe } = createResolver({ fetchPolicy: refetch ? 'no-cache' : 'default', operationName, }); diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index b6bb40666..aa1347bb0 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -61,10 +61,11 @@ export const createContext = ({ const now = Date.now(); const { data, expiresAt: age = Infinity } = cacheNode ?? {}; - // Suggest a fetch on a stale or missing cache. + // Suggests a fetch on a stale or missing cache. + // // We add a minimum of 100 ms delay for caches with immedidate staleness, // this prevents components from infinite rendering loop. - this.shouldFetch ||= data === undefined || age < now; + this.shouldFetch ||= data === undefined || age < now - 100; this.hasCacheHit ||= data !== undefined; // Missing cache always notify on cache updates. diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 03d6edf67..f88ecc2ef 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -74,6 +74,7 @@ export const fetchSelections = < result.error = GQtyError.fromGraphQLErrors(errors); } + // FIXME: Defer logging until after cache update debug?.dispatch({ cache, request: queryPayload, @@ -121,7 +122,7 @@ export const subscribeSelections = < { cache, debugger: debug, - fetchOptions: { subscriber, ...fetchOptions }, + fetchOptions: { subscriber }, operationName, onSubscribe, onComplete, @@ -137,13 +138,8 @@ export const subscribeSelections = < operationName, extensions: { type, hash } = {}, }) => { - if (!type) { - throw new GQtyError(`Invalid query type: ${type}`); - } - - if (!hash) { - throw new GQtyError(`Expected query hash.`); - } + if (!type) throw new GQtyError(`Invalid query type: ${type}`); + if (!hash) throw new GQtyError(`Expected query hash.`); if (type === 'subscription' && !subscriber) { throw new GQtyError(`Missing subscriber for subscriptions.`); @@ -241,64 +237,43 @@ export const subscribeSelections = < selections, }); - fn({ - error, - extensions: queryPayload.extensions, - }); + fn({ error, extensions: queryPayload.extensions }); }; let dispose: (() => void) | undefined; // Dedupe - const promise = dedupePromise( - type === 'subscription' ? undefined : cache, - hash, - type === 'subscription' - ? () => - new Promise((complete) => { - dispose = subscriber!.subscribe(queryPayload, { - next, - error(err) { - if (Array.isArray(err)) { - error(GQtyError.fromGraphQLErrors(err)); - } else if (!isCloseEvent(err)) { - error(GQtyError.create(err)); - } - - this.complete(); - }, - complete() { - debug?.dispatch({ - cache, - label: subscriptionId - ? `[id=${subscriptionId}] [unsubscribe]` - : undefined, - request: queryPayload, - selections, - }); - - complete(); - }, - }); - }) - : () => - new Promise((complete) => { - const options: Parameters[1] = { - ...fetchOptions, - selections, - }; - - if (typeof AbortController !== 'undefined') { - const aborter = new AbortController(); - dispose = () => aborter.abort(); - options.signal = aborter.signal; + const promise = dedupePromise(cache, hash, () => { + return new Promise((complete) => { + dispose = subscriber!.subscribe>( + queryPayload, + { + next, + error(err) { + if (Array.isArray(err)) { + error(GQtyError.fromGraphQLErrors(err)); + } else if (!isCloseEvent(err)) { + error(GQtyError.create(err)); } - doFetch(queryPayload, options) - .then(next, error) - .finally(complete); - }) - ); + this.complete(); + }, + complete() { + debug?.dispatch({ + cache, + label: subscriptionId + ? `[id=${subscriptionId}] [unsubscribe]` + : undefined, + request: queryPayload, + selections, + }); + + complete(); + }, + } + ); + }); + }); if (dispose) { subsRef.set(promise, { dispose, count: 1 }); @@ -309,9 +284,18 @@ export const subscribeSelections = < unsubscribers.add(() => { const ref = subsRef.get(promise); if (ref && --ref.count <= 0) { - ref.dispose(); + // Put this in the back of event loop, after current active + // promises to prevent excessive re-subscriptions. + setTimeout(() => { + // Dispose only if no one else join the game till now. + if (ref.count <= 0) { + ref.dispose(); + } + }); } }); + + return promise; } ) ).finally(() => onComplete?.()); diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 8e4536cbc..262465545 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -7,7 +7,11 @@ import type { Selection } from '../Selection'; import { pick } from '../Utils/pick'; import { createContext, SchemaContext } from './context'; import type { Debugger } from './debugger'; -import { fetchSelections, subscribeSelections } from './resolveSelections'; +import { + fetchSelections, + subscribeSelections, + Unsubscribe, +} from './resolveSelections'; import { updateCaches } from './updateCaches'; export type CreateResolversOptions = { @@ -24,12 +28,12 @@ export type CreateResolversOptions = { }; export type Resolvers = { - /** Create parts used by `resolve()`, useful for deferring fetches. */ + /** + * Create internal parts for `resolve()` and `subscribe()`, useful for + * custom fetching logics. The React package uses this funciton. + */ createResolver: CreateResolverFn; - /** Create parts used by `subscribe()`, useful for deferring subscriptions. */ - createSubscriber: CreateSubscriberFn; - /** * Query, mutation and subscription in a promise. * @@ -66,15 +70,8 @@ export type CreateResolverFn = ( context: SchemaContext; resolve: () => Promise; selections: Set; -}; - -export type CreateSubscriberFn = ( - options?: SubscribeOptions -) => { - accessor: TSchema; - context: SchemaContext; - selections: Set; subscribe: (callbacks?: { + onComplete?: () => void; onError?: (error: Error | GQtyError) => void; onNext?: (value: unknown) => void; }) => () => void; @@ -200,11 +197,12 @@ export const createResolvers = ({ parentContext, }: CreateResolversOptions): Resolvers => { const createResolver = ({ - fetchPolicy = defaultFetchPolicy ?? 'default', - operationName, + fetchPolicy = defaultFetchPolicy, onSelect, + onSubscribe, + operationName, retryPolicy = defaultRetryPoliy, - }: ResolveOptions = {}) => { + }: SubscribeOptions = {}) => { const selections = new Set(); const context = createContext({ cache: clientCache, @@ -233,57 +231,30 @@ export const createResolvers = ({ } return fetchSelections(selections, { + cache: context.cache, debugger: debug, fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, operationName, - }) - .then((results) => { - updateCaches( - results, - fetchPolicy !== 'no-store' && context.cache !== clientCache - ? [context.cache, clientCache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } - ); + }).then((results) => { + updateCaches( + results, + fetchPolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); - return results; - }) - .finally(() => { - selections.clear(); - }); + return results; + }); }; - return { accessor, context, resolve, selections }; - }; - - const createSubscriber = ({ - fetchPolicy = defaultFetchPolicy, - onSelect, - onSubscribe, - operationName, - retryPolicy = defaultRetryPoliy, - }: SubscribeOptions = {}) => { - const selections = new Set(); - const context = createContext({ - cache: clientCache, - depthLimit, - fetchPolicy, - onSelect(selection, cache) { - onSelect?.(selection, cache); - selections.add(selection); - }, - scalars, - schema, - }); - const accessor = createSchemaAccessor(context); - const subscribe = ({ + onComplete, onError, onNext, - }: { - onError?: (error: Error | GQtyError) => void; - onNext?: (value: unknown) => void; - } = {}) => { + }: Parameters< + ReturnType>['subscribe'] + >[0] = {}) => { const unsubscibers = new Set<() => void>(); const unsubscribe = () => { for (const unsubscribe of unsubscibers) { @@ -291,58 +262,92 @@ export const createResolvers = ({ } }; + // Subscribe to cache changes, re-rendering is triggered separately from + // the actual fetch / subscription. if (onNext) { - const unsub = context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - onNext + const unsubscribe = context.cache.subscribe( + [...selections].map((s) => s.cacheKeys.join('.')), + (data) => onNext({ data }) ); - unsubscibers.add(unsub); + unsubscibers.add(unsubscribe); } - const unsub = subscribeSelections( - selections, - ({ data, error, extensions }) => { - if (error) { - onError?.(error); + const subscriptionSelections = new Set(); + const promises: Promise[] = []; - // Discard data here because of how generators work - if (data !== undefined) { - } - } else if (data !== undefined) { - updateCaches( - [{ data, error, extensions }], - fetchPolicy !== 'no-store' && context.cache !== clientCache - ? [context.cache, clientCache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } - ); - } else { - // Fetches responded, subscriptions closed, but cache subscription is - // still active. + // fetch query and mutation. + if (context.shouldFetch) { + // resolve() takes the original set, remove subscriptions from it. + for (const selection of selections) { + if (selection.root.key === 'subscription') { + selections.delete(selection); + subscriptionSelections.add(selection); } - }, - { - debugger: debug, - fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, - operationName, - onSubscribe() { - onSubscribe?.(unsubscribe); - }, } - ); - unsubscibers.add(unsub); + promises.push(resolve()); + } + + // Add it back, subscribe() AsyncGenerator needs it. + for (const selection of subscriptionSelections) { + selections.add(selection); + } + + // Subscriptions should disregard context.shouldFetch(), always subscribe + // for changes. + { + const promise = new Promise((resolve, reject) => { + const unsubscribe: Unsubscribe = subscribeSelections( + subscriptionSelections, + ({ data, error, extensions }) => { + if (error) { + onError?.(error); + + // Discard data here because of how generators work + if (data !== undefined) { + } + + reject(error); + } else if (data !== undefined) { + updateCaches( + [{ data, error, extensions }], + fetchPolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + } else { + // Fetches responded, subscriptions closed, but cache subscription is + // still active. + } + }, + { + cache: context.cache, + debugger: debug, + fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, + operationName, + onSubscribe: () => onSubscribe?.(unsubscribe), + onComplete: () => resolve(), + } + ); + + unsubscibers.add(unsubscribe); + }); + + promises.push(promise); + } + + Promise.allSettled(promises).finally(onComplete); return unsubscribe; }; - return { accessor, context, selections, subscribe }; + return { accessor, context, resolve, selections, subscribe }; }; return { createResolver, - createSubscriber, resolve: async (fn, options) => { const { accessor, resolve, selections } = createResolver(options); @@ -362,12 +367,9 @@ export const createResolvers = ({ return dataFn(); }, - /** - * Initiates selected queries, mutations and subscriptions, then subscribes - * to caches changes until the generator is closed. - */ + subscribe: (fn, { onSubscribe, ...options } = {}): AsyncGenerator => { - const { accessor, selections, subscribe } = createSubscriber({ + const { accessor, selections, subscribe } = createResolver({ ...options, onSubscribe: (unsubscribe) => { onSubscribe?.(() => { @@ -391,7 +393,9 @@ export const createResolvers = ({ }, }); - // Assuming selections are cached, otherwise uncomment the following line. + // Assuming child selections are cached and reused in subsequent + // selections, otherwise uncomment the following line to prevent + // excessive duplicated selections. //context.onSelect = undefined; let deferred: diff --git a/packages/gqty/src/Error/index.ts b/packages/gqty/src/Error/index.ts index 503686c7f..39231b36c 100644 --- a/packages/gqty/src/Error/index.ts +++ b/packages/gqty/src/Error/index.ts @@ -46,20 +46,13 @@ export class GQtyError extends Error { } static fromGraphQLErrors(errors: readonly GraphQLError[]) { - return errors.length > 1 - ? new GQtyError( - `GraphQL Errors${ - process.env.NODE_ENV === 'production' - ? '' - : ', please check .graphQLErrors property' - }`, - { - graphQLErrors: errors, - } - ) - : new GQtyError(errors[0].message, { - graphQLErrors: errors, - }); + return new GQtyError( + (errors.length === 1 && errors[0].message) || + (process.env.NODE_ENV === 'production' + ? `GraphQL Errors` + : 'GraphQL Errors, please check .graphQLErrors property'), + { graphQLErrors: errors } + ); } } diff --git a/packages/gqty/src/Helpers/deepCopy.ts b/packages/gqty/src/Helpers/deepCopy.ts index 51c54b376..1c889faec 100644 --- a/packages/gqty/src/Helpers/deepCopy.ts +++ b/packages/gqty/src/Helpers/deepCopy.ts @@ -1,24 +1,4 @@ -export const deepCopy = (value: T, seen = new WeakSet()): Readonly => { - if (typeof value == 'object' && value !== null) { - if (seen.has(value)) { - return value; - } +import { parse, stringify } from 'flatted'; - seen.add(value); - - if (Array.isArray(value)) { - return value.map((value) => deepCopy(value, seen)) as T; - } - - let data = value as any; - if (typeof data.toJSON === 'function') { - data = data.toJSON(); - } - - return Object.fromEntries( - Object.entries(data).map(([key, value]) => [key, deepCopy(value, seen)]) - ) as T; - } - - return value; -}; +export const deepCopy = (value: T): Readonly => + Object.freeze(parse(stringify(value))); diff --git a/packages/gqty/src/Helpers/index.ts b/packages/gqty/src/Helpers/index.ts index 832c77b19..7646bd726 100644 --- a/packages/gqty/src/Helpers/index.ts +++ b/packages/gqty/src/Helpers/index.ts @@ -5,3 +5,4 @@ export * from './getFields'; export * from './prepass'; export * from './select'; export * from './selectFields'; +export * from './variables'; diff --git a/packages/gqty/src/Helpers/select.ts b/packages/gqty/src/Helpers/select.ts index ac924b88f..f97ad007a 100644 --- a/packages/gqty/src/Helpers/select.ts +++ b/packages/gqty/src/Helpers/select.ts @@ -1,20 +1,35 @@ import type { CacheNode } from '../Cache'; /** - * Similar to _.get() but dots goes into arrays. - * - * JSONata, JSONPath and JMESPath does similar things but they're overkill here. + * Similar to _.get() but dots goes into arrays, JSONata, JSONPath and JMESPath + * does similar things but overkill. */ -export function select(node: CacheNode, path: string[]): CacheNode { - if (node == null || typeof node !== 'object' || path.length === 0) { +export function select( + node: CacheNode, + path: string[], + /** + * Optional callback, invoked each time a path segment can be successfully + * traversed downwards. The callback can return a new node value to replace + * the current node, return `undefined` to essentially terminate the + * traversal. + */ + onNext?: (node: CacheNode, path: string[]) => CacheNode +): CacheNode { + const probedNode = onNext ? onNext(node, path) : node; + + if (path.length === 0) { return node; } + // Exit when there are still sub-paths but scalars are reached + else if (probedNode == null || typeof probedNode !== 'object') { + return undefined; + } - if (Array.isArray(node)) { - return node.map((item) => select(item, path)); + if (Array.isArray(probedNode)) { + return probedNode.map((item) => select(item, path, onNext)); } const [key, ...rest] = path; - return select(node[key], rest); + return select(probedNode[key], rest, onNext); } diff --git a/packages/gqty/src/Helpers/variables.ts b/packages/gqty/src/Helpers/variables.ts new file mode 100644 index 000000000..46dfe9971 --- /dev/null +++ b/packages/gqty/src/Helpers/variables.ts @@ -0,0 +1 @@ +export type Variables = T extends (args: infer V) => any ? V : never; diff --git a/packages/gqty/src/Utils/index.ts b/packages/gqty/src/Utils/index.ts index bef0c7d35..7627542e1 100644 --- a/packages/gqty/src/Utils/index.ts +++ b/packages/gqty/src/Utils/index.ts @@ -7,4 +7,3 @@ export function isEmptyObject(obj: object) { export * from './object'; export * from './pick'; -export * from './promise'; diff --git a/packages/gqty/src/Utils/object.ts b/packages/gqty/src/Utils/object.ts index ff0ed6c21..521057ef6 100644 --- a/packages/gqty/src/Utils/object.ts +++ b/packages/gqty/src/Utils/object.ts @@ -15,6 +15,9 @@ export const isObjectWithType = ( v: unknown ): v is T => isPlainObject(v) && typeof v.__typename === 'string'; +/** + * Similar to `just-extend(true, ...)` but circular references aware. + */ export function deepAssign( target: object, sources: (object | undefined | null)[], diff --git a/packages/gqty/src/Utils/promise.ts b/packages/gqty/src/Utils/promise.ts deleted file mode 100644 index a1d919afb..000000000 --- a/packages/gqty/src/Utils/promise.ts +++ /dev/null @@ -1,115 +0,0 @@ -export class PLazy extends Promise { - private _promise?: Promise; - - constructor( - private _executor: ( - resolve: (value: ValueType) => void, - reject: (err: unknown) => void - ) => void - ) { - super((resolve: (v?: any) => void) => resolve()); - } - - then: Promise['then'] = (onFulfilled, onRejected) => - (this._promise ||= new Promise(this._executor)).then( - onFulfilled, - onRejected - ); - - catch: Promise['catch'] = (onRejected) => - (this._promise ||= new Promise(this._executor)).catch(onRejected); - - finally: Promise['finally'] = (onFinally) => - (this._promise ||= new Promise(this._executor)).finally(onFinally); -} - -export function LazyPromise( - fn: () => Value | Promise -): Promise { - return new PLazy((resolve, reject) => { - try { - Promise.resolve(fn()).then(resolve, (err) => { - if (err instanceof Error && Error.captureStackTrace) - Error.captureStackTrace(err, LazyPromise); - - reject(err); - }); - } catch (err) { - if (err instanceof Error && Error.captureStackTrace) - Error.captureStackTrace(err, LazyPromise); - - reject(err); - } - }); -} - -export interface DeferredPromise { - promise: Promise; - resolve: (value: T) => void; - reject: (reason: unknown) => void; - - value: { - current?: PromiseSettledResult; - }; -} - -export function createDeferredPromise( - timeoutTime?: number -): DeferredPromise { - const resolve = (value: T) => { - timeout != null && clearTimeout(timeout); - - valueRef.current ||= { status: 'fulfilled', value }; - - middlePromiseResolve({ - value, - resolved: true, - }); - }; - - const reject = (err: unknown) => { - timeout != null && clearTimeout(timeout); - - valueRef.current ||= { status: 'rejected', reason: err }; - - middlePromiseResolve({ - value: err, - resolved: false, - }); - }; - - const valueRef: { current?: PromiseSettledResult } = {}; - - let middlePromiseResolve!: (value: { - value: unknown; - resolved: boolean; - }) => void; - const MiddlePromise = new Promise<{ - value: unknown; - resolved: boolean; - }>((resolve) => { - middlePromiseResolve = resolve; - }); - - const promise = LazyPromise(async () => { - const { resolved, value } = await MiddlePromise; - - if (resolved) return value as T; - - throw value; - }); - - let timeout: ReturnType | undefined; - if (timeoutTime != null) { - timeout = setTimeout(() => { - reject(Error(`Timed out after ${timeoutTime}ms.`)); - }, timeoutTime); - } - - return { - promise, - resolve, - reject, - value: valueRef, - }; -} diff --git a/packages/gqty/test/subscriptions.test.ts b/packages/gqty/test/subscriptions.test.ts index 5a5372981..a284c4a7b 100644 --- a/packages/gqty/test/subscriptions.test.ts +++ b/packages/gqty/test/subscriptions.test.ts @@ -1,4 +1,4 @@ -import { createDeferredPromise } from '../src/Utils'; +import createDeferredPromise from 'p-defer'; import { createTestClient } from './utils'; describe('core#resolve', () => { diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index e7be73445..0ef165441 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -1,10 +1,11 @@ import { createClient as createWsClient } from 'graphql-ws'; +import PLazy from 'p-lazy'; import { createTestApp, gql, TestApp } from 'test-utils'; import type { PartialDeep } from 'type-fest'; import { WebSocket } from 'ws'; import { gqtyConfigPromise } from '../../cli/src/config'; import { generate } from '../../cli/src/generate'; -import { QueryFetcher, Schema, SchemaUnionsKey } from '../src'; +import { Cache, QueryFetcher, Schema, SchemaUnionsKey } from '../src'; import { ClientOptions, createClient as createGQtyClient } from '../src/Client'; import { deepAssign } from '../src/Utils'; @@ -557,8 +558,8 @@ export const createTestClient = async ( subscriptionsClient && TeardownPromises.push( - LazyPromise(() => { - subscriptionsClient.terminate(); + new PLazy((resolve) => { + resolve(subscriptionsClient.terminate()); }) ); @@ -599,46 +600,3 @@ export function expectConsoleWarn( return { spy, consoleWarn }; } - -export class PLazy extends Promise { - private _promise?: Promise; - - constructor( - private _executor: ( - resolve: (value: ValueType) => void, - reject: (err: unknown) => void - ) => void - ) { - super((resolve: (v?: any) => void) => resolve()); - } - - then: Promise['then'] = (onFulfilled, onRejected) => - (this._promise ||= new Promise(this._executor)).then( - onFulfilled, - onRejected - ); - - catch: Promise['catch'] = (onRejected) => - (this._promise ||= new Promise(this._executor)).catch(onRejected); - - finally: Promise['finally'] = (onFinally) => - (this._promise ||= new Promise(this._executor)).finally(onFinally); -} - -export function LazyPromise( - fn: () => Value | Promise -): Promise { - return new PLazy((resolve, reject) => { - try { - Promise.resolve(fn()).then(resolve, (err) => { - if (err instanceof Error) Error.captureStackTrace(err, LazyPromise); - - reject(err); - }); - } catch (err) { - if (err instanceof Error) Error.captureStackTrace(err, LazyPromise); - - reject(err); - } - }); -} diff --git a/packages/subscriptions/.browserslistrc b/packages/subscriptions/.browserslistrc new file mode 100644 index 000000000..c863becca --- /dev/null +++ b/packages/subscriptions/.browserslistrc @@ -0,0 +1 @@ +node 10 \ No newline at end of file diff --git a/packages/subscriptions/CHANGELOG.md b/packages/subscriptions/CHANGELOG.md new file mode 100644 index 000000000..608d9c673 --- /dev/null +++ b/packages/subscriptions/CHANGELOG.md @@ -0,0 +1,129 @@ +# @gqty/subscriptions + +## 2.0.1 + +### Patch Changes + +- f6277a4: Don't force unsubscribe in cleanup functions + +## 2.0.0 + +### Patch Changes + +- Updated dependencies [3586c45] +- Updated dependencies [3586c45] + - gqty@2.0.0 + +## 1.0.2 + +### Patch Changes + +- 1fc2672: add "sideEffects: false" for improved tree-shaking +- Updated dependencies [1fc2672] + - gqty@1.1.2 + +## 1.0.1 + +### Patch Changes + +- 3784c2b: release +- Updated dependencies [3784c2b] + - gqty@1.0.1 + +## 1.0.12 + +### Patch Changes + +- 3f08372: publish fork +- Updated dependencies [3f08372] + - gqty@2.0.15 + +## 1.0.11 + +### Patch Changes + +- af6a437: - Rename `gqtyConfig` to `GQtyConfig` (so it's consistent with the new logo) + - Rename `gqtyError` to `GQtyError` + - Remove `endpoint` option from the configuration, and instead always defaults to introspection one + - It's confusing why theres two of them, and the user can change it later by modifying the file anyway +- Updated dependencies [4a3d5ef] +- Updated dependencies [af6a437] + - gqty@2.0.13 + +## 1.0.10 + +### Patch Changes + +- Updated dependencies [65c4d32] + - gqty@2.0.10 + +## 1.0.9 + +### Patch Changes + +- Updated dependencies [6a9269f] + - gqty@2.0.9 + +## 1.0.8 + +### Patch Changes + +- Updated dependencies [c74442e] +- Updated dependencies [d78f2ab] +- Updated dependencies [0ffaa9d] + - gqty@2.0.8 + +## 1.0.7 + +### Patch Changes + +- Updated dependencies [ff66195] +- Updated dependencies [63fd3ea] +- Updated dependencies [40d2101] + - gqty@2.0.7 + +## 1.0.6 + +### Patch Changes + +- 173e11d: add subscriptions to events +- Updated dependencies [173e11d] +- Updated dependencies [c613410] + - gqty@2.0.6 + +## 1.0.5 + +### Patch Changes + +- Updated dependencies [6fef085] + - gqty@2.0.5 + +## 1.0.4 + +### Patch Changes + +- Updated dependencies [2bf4ce2] + - gqty@2.0.4 + +## 1.0.3 + +### Patch Changes + +- 27f9ece: set "graphql" as optional peerDependency +- Updated dependencies [27f9ece] + - gqty@2.0.3 + +## 1.0.2 + +### Patch Changes + +- Updated dependencies [c06ef80] + - gqty@2.0.2 + +## 1.0.1 + +### Patch Changes + +- a57cab4: official beta v2 publish +- Updated dependencies [a57cab4] + - gqty@2.0.1 diff --git a/packages/subscriptions/LICENSE b/packages/subscriptions/LICENSE new file mode 100644 index 000000000..559a108a4 --- /dev/null +++ b/packages/subscriptions/LICENSE @@ -0,0 +1,24 @@ +# The MIT License (MIT) + +Copyright © 2021 GQty + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the “Software”), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/subscriptions/README.md b/packages/subscriptions/README.md new file mode 100644 index 000000000..c2c19027d --- /dev/null +++ b/packages/subscriptions/README.md @@ -0,0 +1,3 @@ +# @gqty/subscription + +## Visit [https://gqty.dev/docs/client/subscriptions](https://gqty.dev/docs/client/subscriptions) diff --git a/packages/subscriptions/jest.config.js b/packages/subscriptions/jest.config.js new file mode 100644 index 000000000..6e155aacb --- /dev/null +++ b/packages/subscriptions/jest.config.js @@ -0,0 +1 @@ +module.exports = require('test-utils/jest.config.js').default; diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json new file mode 100644 index 000000000..149c26ffc --- /dev/null +++ b/packages/subscriptions/package.json @@ -0,0 +1,63 @@ +{ + "name": "@gqty/subscriptions", + "version": "2.0.1", + "homepage": "https://gqty.dev", + "repository": { + "type": "git", + "url": "https://github.com/gqty-dev/gqty.git" + }, + "author": "PabloSzx ", + "sideEffects": false, + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs" + }, + "./*": { + "require": "./dist/*.js", + "import": "./dist/*.mjs" + } + }, + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist", + "src" + ], + "scripts": { + "build": "bob-esbuild build", + "dev": "bob-esbuild watch", + "prepare": "bob-esbuild build", + "postpublish": "gh-release", + "start": "bob-esbuild watch", + "test": "jest" + }, + "dependencies": { + "isomorphic-ws": "^5.0.0", + "ws": "^8.13.0" + }, + "devDependencies": { + "@types/node": "^18.15.1", + "@types/ws": "^8.5.4", + "bob-esbuild-cli": "^4.0.0", + "esbuild": "^0.17.10", + "gqty": "workspace:^2.3.0", + "graphql": "^16.6.0", + "test-utils": "workspace:^0.1.0", + "tslib": "^2.5.0", + "typescript": "^4.9.5" + }, + "peerDependencies": { + "gqty": "workspace:^2.0.0", + "graphql": "*" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } + }, + "publishConfig": { + "directory": "dist" + } +} diff --git a/packages/subscriptions/src/index.ts b/packages/subscriptions/src/index.ts new file mode 100644 index 000000000..db638d40e --- /dev/null +++ b/packages/subscriptions/src/index.ts @@ -0,0 +1,168 @@ +import { + GQtyError, + LegacySelection as Selection, + LegacySubscribeEvents as SubscribeEvents, + LegacySubscriptionsClient as SubscriptionsClient, +} from 'gqty'; + +import { + Client, + ClientOptions, + OperationCallback, +} from './subscription/client'; + +export interface SubscriptionsClientOptions extends ClientOptions { + wsEndpoint: string | (() => string | Promise); +} + +export type PossiblePromise = Promise | T; + +type SubContext = { + selections: Selection[]; + query: string; + variables: Record | undefined; + operationId: string; +}; + +export function createSubscriptionsClient({ + wsEndpoint, + ...options +}: SubscriptionsClientOptions): SubscriptionsClient { + const wsClient = + typeof wsEndpoint === 'string' + ? new Client(wsEndpoint, options) + : Promise.resolve() + .then(wsEndpoint) + .then((wsEndpoint) => new Client(wsEndpoint, options)); + + const subscriptionsSelections: Map> = new Map(); + + const eventsReference = new WeakMap< + ((ctx: SubContext) => SubscribeEvents) | SubscribeEvents, + OperationCallback + >(); + + return { + subscribe({ query, variables, events, cacheKey, selections }) { + let operationId: string = 'NO_ID'; + const ctx: SubContext = { + query, + variables, + operationId, + selections, + }; + + wsClient; + + return wsClient instanceof Promise + ? Promise.resolve() + .then(() => wsClient) + .then(execSubscribe) + : execSubscribe(wsClient); + + function execSubscribe( + wsSubClient: Client + ): ReturnType { + let callback: OperationCallback | undefined; + + if (!(callback = eventsReference.get(events))) { + const { onData, onError, onComplete, onStart } = + typeof events === 'function' ? events(ctx) : events; + + callback = function ({ payload, operationId }) { + ctx.operationId = operationId; + switch (payload) { + case 'start': + onStart?.(); + break; + case 'complete': + subscriptionsSelections.delete(operationId); + onComplete?.(); + break; + default: + const { data, errors } = payload; + if (errors?.length) { + onError({ + data, + error: GQtyError.fromGraphQLErrors(errors), + }); + } else if (data) { + onData(data); + } + } + }; + eventsReference.set(events, callback); + } + + const operationIdPromise = wsSubClient.createSubscription( + query, + variables, + callback, + cacheKey + ); + + if (operationIdPromise instanceof Promise) { + return operationIdPromise.then((id) => { + ctx.operationId = operationId = id; + return returnSub(id); + }); + } else { + ctx.operationId = operationId = operationIdPromise; + return returnSub(operationId); + } + + function returnSub(operationId: string) { + const unsubscribe = async () => { + await wsSubClient.unsubscribe(operationId); + subscriptionsSelections.delete(operationId); + }; + subscriptionsSelections.set(operationId, new Set(selections)); + + return { + unsubscribe, + operationId, + }; + } + } + }, + async unsubscribe(selections) { + const client = await wsClient; + let promises: Promise[] = []; + const operationIds: string[] = []; + + checkOperations: for (const [ + operationId, + operationSelections, + ] of subscriptionsSelections.entries()) { + for (const selection of selections) { + if (operationSelections.has(selection)) { + operationIds.push(operationId); + promises.push(client.unsubscribe(operationId)); + subscriptionsSelections.delete(operationId); + continue checkOperations; + } + } + } + + if (promises.length) await Promise.all(promises); + + return operationIds; + }, + async close() { + const client = await wsClient; + client.close(); + }, + async setConnectionParams(connectionParams, restartClient) { + const client = await wsClient; + + client.connectionInitPayload = + typeof connectionParams === 'function' + ? await connectionParams() + : connectionParams; + + if (restartClient && client.socket) { + client.close(true); + } + }, + }; +} diff --git a/packages/subscriptions/src/subscription/client.ts b/packages/subscriptions/src/subscription/client.ts new file mode 100644 index 000000000..72df0e33a --- /dev/null +++ b/packages/subscriptions/src/subscription/client.ts @@ -0,0 +1,462 @@ +// Based on https://github.com/mercurius-js/mercurius/blob/master/lib/subscription-client.js + +import type { GraphQLError } from 'graphql'; +import WebSocket from 'isomorphic-ws'; + +import { createDeferredPromise, DeferredPromise, GQLResponse } from '../utils'; +import { + GQL_COMPLETE, + GQL_CONNECTION_ACK, + GQL_CONNECTION_ERROR, + GQL_CONNECTION_INIT, + GQL_CONNECTION_KEEP_ALIVE, + GQL_DATA, + GQL_ERROR, + GQL_START, + GQL_STOP, + GRAPHQL_WS, +} from './protocol'; + +export type OperationHandlerPayload = GQLResponse | 'start' | 'complete'; + +export interface OperationCallbackArg { + operationId: string; + payload: OperationHandlerPayload; +} + +export type OperationCallback = (arg: OperationCallbackArg) => void; + +export interface Operation { + started: boolean; + options: { + query: string; + variables?: Record; + }; + callbacks: Set; + handler: (data: OperationHandlerPayload) => void; + extensions?: { type: string; payload: unknown }[]; +} + +export interface ClientOptions { + /** + * Should the websocket connection try to reconnect + * + * @default true + */ + reconnect?: boolean; + /** + * Amount of reconnection attempts + * + * @default Infinity + */ + maxReconnectAttempts?: number; + connectionCallback?: () => void; + failedConnectionCallback?: (payload: unknown) => Promise; + failedReconnectCallback?: () => void; + connectionInitPayload?: + | (() => Promise> | Record) + | Record; + + headers?: Record; + /** + * Controls when should the connection be established. + * + * `false`: Establish a connection immediately. + * + * `true`: Establish a connection on first subscribe and close on last unsubscribe. + * + * @default true + */ + lazy?: boolean; +} + +export class Client { + subscriptionQueryMap: Record; + + socket: WebSocket | null; + headers; + uri; + operationId; + ready; + operations: Map; + operationsCount: Record; + tryReconnect; + maxReconnectAttempts; + reconnectAttempts; + connectionCallback; + failedConnectionCallback; + failedReconnectCallback; + connectionInitPayload; + closedByUser?: boolean; + reconnecting?: boolean; + reconnectTimeoutId?: ReturnType; + lazy; + + connectedPromise: DeferredPromise; + socketReady: DeferredPromise | undefined; + + constructor( + uri: string, + { + headers = {}, + reconnect = true, + maxReconnectAttempts = Infinity, + connectionCallback, + failedConnectionCallback, + failedReconnectCallback, + connectionInitPayload = {}, + lazy = true, + }: ClientOptions + ) { + this.uri = uri; + this.socket = null; + this.operationId = 0; + this.ready = false; + this.operations = new Map(); + this.operationsCount = {}; + this.lazy = lazy; + + this.subscriptionQueryMap = {}; + + this.headers = headers; + this.tryReconnect = reconnect; + this.maxReconnectAttempts = maxReconnectAttempts; + this.reconnectAttempts = 0; + this.connectionCallback = connectionCallback; + this.failedConnectionCallback = failedConnectionCallback; + this.failedReconnectCallback = failedReconnectCallback; + this.connectionInitPayload = connectionInitPayload; + + if (!lazy) this.connect(); + + this.connectedPromise = createDeferredPromise(); + } + + connect() { + if (this.socket !== null) return; + + this.socket = new WebSocket(this.uri, [GRAPHQL_WS], { + headers: this.headers, + }); + const readyPromise = (this.socketReady = createDeferredPromise()); + + this.socket.onopen = async () => { + if (this.socket && this.socket.readyState === WebSocket.OPEN) { + try { + const payload = + typeof this.connectionInitPayload === 'function' + ? await this.connectionInitPayload() + : this.connectionInitPayload; + this.sendMessage(null, GQL_CONNECTION_INIT, payload); + readyPromise.resolve(true); + } catch (err) { + this.close(this.tryReconnect, false); + readyPromise.resolve(false); + } + } else { + readyPromise.resolve(false); + } + }; + + this.socket.onclose = () => { + if (!this.closedByUser) { + this.close(this.tryReconnect, false); + } + readyPromise.resolve(false); + }; + + this.socket.onerror = () => {}; + + this.socket.onmessage = async ({ data }) => { + await this.handleMessage(data.toString('utf-8')); + }; + } + + close(tryReconnect = false, closedByUser = true) { + this.closedByUser = closedByUser; + this.ready = false; + this.connectedPromise.resolve(Error('Socket closed!')); + + if (this.socket !== null) { + if (closedByUser) { + this.unsubscribeAll(); + } + + this.socket.close(); + this.socket = null; + this.reconnecting = false; + + if (tryReconnect) { + this.connectedPromise = createDeferredPromise(); + + for (const operationId of this.operations.keys()) { + const operation = this.operations.get(operationId); + + if (operation) { + this.operations.set(operationId, { + ...operation, + started: false, + }); + } + } + + this.reconnect(); + } + } + } + + getReconnectDelay() { + const delayMs = 100 * Math.pow(2, this.reconnectAttempts); + + return Math.min(delayMs, 10000); + } + + reconnect() { + if ( + this.reconnecting || + this.reconnectAttempts > this.maxReconnectAttempts + ) { + return this.failedReconnectCallback && this.failedReconnectCallback(); + } + + this.reconnectAttempts++; + this.reconnecting = true; + + const delay = this.getReconnectDelay(); + + this.reconnectTimeoutId = setTimeout(() => { + this.connect(); + }, delay); + } + + async unsubscribe(operationId: string, forceUnsubscribe = false) { + let count = this.operationsCount[operationId]; + count--; + + if (count === 0 || forceUnsubscribe) { + this.operationsCount[operationId] = 0; + + this.operations.delete(operationId); + + await this.sendMessage(operationId, GQL_STOP, null); + + if (this.lazy) { + const self = this; + + setTimeout(() => { + if (self.operations.size === 0 && this.socket) { + self.close(); + } + }, 2000); + } + } else { + this.operationsCount[operationId] = count; + } + } + + unsubscribeAll() { + for (const operationId of this.operations.keys()) { + this.unsubscribe(operationId, true).catch(console.error); + } + } + + sendMessage( + operationId: number | string | null, + type: string, + payload: unknown = {}, + extensions?: unknown + ) { + return new Promise(async (resolve, reject) => { + try { + if (this.socketReady) { + const isOk = await this.socketReady.promise; + + if (!isOk) return resolve(); + } + + if (!this.socket) return resolve(); + + this.socket.send( + JSON.stringify({ + id: operationId, + type, + payload, + extensions, + }), + (err) => { + if (err) console.error(err); + + resolve(); + } + ); + setTimeout(resolve, 200); + } catch (err) { + reject(err); + } + }); + } + + async handleMessage(message: string) { + let data; + let operationId; + let operation; + + try { + data = JSON.parse(message); + operationId = data.id; + } catch (e) { + throw new Error( + `Invalid message received: "${message}" Message must be JSON parsable.` + ); + } + + if (operationId) { + operation = this.operations.get(operationId); + } + + switch (data.type) { + case GQL_CONNECTION_ACK: + this.reconnecting = false; + this.ready = true; + this.reconnectAttempts = 0; + this.connectedPromise.resolve(); + + for (const operationId of this.operations.keys()) { + this.startOperation(operationId).catch(console.error); + } + + if (this.connectionCallback) { + this.connectionCallback(); + } + + break; + case GQL_DATA: + if (operation) operation.handler(data.payload); + break; + case GQL_ERROR: + if (operation) { + operation.handler({ + data: null, + errors: [{ message: data.payload } as GraphQLError], + }); + this.operations.delete(operationId); + } + break; + case GQL_COMPLETE: + if (operation) { + operation.handler('complete'); + this.operations.delete(operationId); + } + break; + case GQL_CONNECTION_ERROR: + this.close(this.tryReconnect, false); + if (this.failedConnectionCallback) { + await this.failedConnectionCallback(data.payload); + } + break; + case GQL_CONNECTION_KEEP_ALIVE: + break; + default: + throw new Error(`Invalid message type: "${data.type}"`); + } + } + + async startOperation(operationId: string) { + try { + await this.connectedPromise.promise; + + const operation = this.operations.get(operationId); + if (!operation) throw Error('Operation not found, ' + operationId); + + const { started, options, extensions } = operation; + + if (!started) { + if (!this.ready) return; + + this.operations.set(operationId, { + ...operation, + started: true, + }); + await this.sendMessage(operationId, GQL_START, options, extensions); + } + } finally { + } + } + + createSubscription( + query: string, + variables: Record | undefined, + publish: OperationCallback, + subscriptionString?: string + ): Promise | string { + if (!this.socket) this.connect(); + + subscriptionString ||= JSON.stringify({ + query, + variables, + }); + + let operationId = this.subscriptionQueryMap[subscriptionString]; + + let startPromise: Promise | undefined; + + try { + let existingOperation: Operation | undefined; + if ( + operationId && + (existingOperation = this.operations.get(operationId)) + ) { + existingOperation.callbacks.add(publish); + this.operationsCount[operationId] = + this.operationsCount[operationId] + 1; + return operationId; + } + + operationId = String(++this.operationId); + + const callbacks = new Set([publish]); + + function handler(payload: OperationHandlerPayload) { + const event: OperationCallbackArg = { + operationId, + payload, + }; + for (const cb of callbacks) { + try { + cb(event); + } catch (err) { + console.error(err); + } + } + } + + const operation: Operation = { + started: false, + options: { query, variables }, + handler, + callbacks, + }; + + this.operations.set(operationId, operation); + + startPromise = this.startOperation(operationId); + this.operationsCount[operationId] = 1; + + this.subscriptionQueryMap[subscriptionString] = operationId; + + return startPromise.then(() => operationId); + } finally { + function start() { + setTimeout(() => { + publish({ + operationId, + payload: 'start', + }); + }, 0); + } + + if (startPromise) startPromise.then(start); + else start(); + } + } +} diff --git a/packages/subscriptions/src/subscription/protocol.ts b/packages/subscriptions/src/subscription/protocol.ts new file mode 100644 index 000000000..7a7b3d0a2 --- /dev/null +++ b/packages/subscriptions/src/subscription/protocol.ts @@ -0,0 +1,13 @@ +export const GQL_CONNECTION_INIT = 'connection_init'; // Client -> Server +export const GQL_CONNECTION_ACK = 'connection_ack'; // Server -> Client +export const GQL_CONNECTION_ERROR = 'connection_error'; // Server -> Client +export const GQL_CONNECTION_KEEP_ALIVE = 'ka'; // Server -> Client + +export const GQL_CONNECTION_TERMINATE = 'connection_terminate'; // Client -> Server +export const GQL_START = 'start'; // Client -> Server +export const GQL_DATA = 'data'; // Server -> Client +export const GQL_ERROR = 'error'; // Server -> Client +export const GQL_COMPLETE = 'complete'; // Server -> Client +export const GQL_STOP = 'stop'; // Client -> Server + +export const GRAPHQL_WS = 'graphql-ws'; diff --git a/packages/subscriptions/src/utils.ts b/packages/subscriptions/src/utils.ts new file mode 100644 index 000000000..3614b7e11 --- /dev/null +++ b/packages/subscriptions/src/utils.ts @@ -0,0 +1,26 @@ +import type { GraphQLError } from 'graphql'; + +export interface DeferredPromise { + promise: Promise; + resolve: (value: T) => void; + reject: (reason: unknown) => void; +} + +export function createDeferredPromise(): DeferredPromise { + let resolve: (value: T) => void = undefined as any; + let reject: (reason: unknown) => void = undefined as any; + const promise = new Promise((resolveFn: any, rejectFn) => { + resolve = resolveFn; + reject = rejectFn; + }); + + return { + promise, + resolve, + reject, + }; +} + +export type GQLResponse< + T extends Record = Record +> = { data: T | null; errors?: GraphQLError[] }; diff --git a/packages/subscriptions/test/index.test.ts b/packages/subscriptions/test/index.test.ts new file mode 100644 index 000000000..d3e51d9d2 --- /dev/null +++ b/packages/subscriptions/test/index.test.ts @@ -0,0 +1,5 @@ +test('works', () => { + expect(1).toBe(1); +}); + +export {}; diff --git a/packages/subscriptions/test/tsconfig.json b/packages/subscriptions/test/tsconfig.json new file mode 100644 index 000000000..ac7849a7a --- /dev/null +++ b/packages/subscriptions/test/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "es2019", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "jsx": "react", + "baseUrl": ".", + "paths": { + "gqty": ["../../gqty/src/index.ts"], + "gqty/*": ["../../gqty/src/*"] + } + }, + "include": ["**/*.ts", "**/*.tsx"] +} diff --git a/packages/subscriptions/tsconfig.json b/packages/subscriptions/tsconfig.json new file mode 100644 index 000000000..4082f16a5 --- /dev/null +++ b/packages/subscriptions/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig.json" +} From b0ce1998e535ddbe71752cce6b9eab7109baa4a4 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 01:17:24 +0800 Subject: [PATCH 020/122] fix: react hooks --- examples/ez-react-next/src/gqty/index.ts | 2 +- examples/github/src/gqty/index.ts | 2 +- examples/react/api/ez.generated.ts | 1 + examples/react/api/graphql.ts | 64 +- examples/react/api/server.ts | 4 +- examples/react/open-browser.mjs | 23 - examples/react/package.json | 25 +- examples/react/src/components/client.ts | 24 +- examples/react/src/graphql/gqty.ts | 90 +- .../react/src/graphql/schema.generated.ts | 3 +- examples/react/src/pages/emptyArrays.tsx | 2 +- examples/react/src/pages/index.tsx | 131 +- examples/react/src/pages/normalized.tsx | 32 +- examples/react/src/pages/pagination.tsx | 1 + .../src/pages/pagination_infinite_scroll.tsx | 12 +- examples/react/src/pages/ssr.tsx | 29 +- .../react/src/pages/transactionQuery2.tsx | 9 +- examples/react/src/pages/uploadFile.tsx | 2 +- examples/vite-example/src/gqty/index.ts | 2 +- integration/graphql-17/src/gqty.ts | 2 +- .../graphql-17/src/schema.generated.ts | 2 +- packages/react/package.json | 1 + packages/react/src/mutation/useMutation.ts | 75 +- packages/react/src/query/hoc.tsx | 5 +- packages/react/src/query/useLazyQuery.ts | 23 +- packages/react/src/query/usePaginatedQuery.ts | 199 +- packages/react/src/query/useQuery.ts | 176 +- packages/react/src/query/useRefetch.ts | 47 +- .../react/src/query/useTransactionQuery.ts | 3 - .../react/src/subscription/useSubscription.ts | 34 +- packages/react/src/useWindowFocusEffect.ts | 2 + packages/react/test/useMutation.test.tsx | 114 + packages/react/test/useQuery.test.tsx | 2 +- pnpm-lock.yaml | 2485 ++--------------- 34 files changed, 997 insertions(+), 2631 deletions(-) delete mode 100644 examples/react/open-browser.mjs create mode 100644 packages/react/test/useMutation.test.tsx diff --git a/examples/ez-react-next/src/gqty/index.ts b/examples/ez-react-next/src/gqty/index.ts index 601ce9b0e..942731a37 100644 --- a/examples/ez-react-next/src/gqty/index.ts +++ b/examples/ez-react-next/src/gqty/index.ts @@ -1,5 +1,5 @@ /** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createLogger } from '@gqty/logger'; diff --git a/examples/github/src/gqty/index.ts b/examples/github/src/gqty/index.ts index 963ab204d..796313849 100644 --- a/examples/github/src/gqty/index.ts +++ b/examples/github/src/gqty/index.ts @@ -1,5 +1,5 @@ /** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import 'dotenv/config'; diff --git a/examples/react/api/ez.generated.ts b/examples/react/api/ez.generated.ts index c3b92f6ea..eea406d6d 100644 --- a/examples/react/api/ez.generated.ts +++ b/examples/react/api/ez.generated.ts @@ -159,6 +159,7 @@ export type PageInfo = { export type ConnectionArgs = { first?: InputMaybe; after?: InputMaybe; + /** @deprecated asd */ last?: InputMaybe; before?: InputMaybe; }; diff --git a/examples/react/api/graphql.ts b/examples/react/api/graphql.ts index ccf6eb1e2..9f0da26af 100644 --- a/examples/react/api/graphql.ts +++ b/examples/react/api/graphql.ts @@ -1,3 +1,4 @@ +import { faker } from '@faker-js/faker'; import { useGenerateGQty } from '@gqty/cli/envelop'; import { CreateApp } from '@graphql-ez/fastify'; import { ezAltairIDE } from '@graphql-ez/plugin-altair/static'; @@ -6,10 +7,8 @@ import { ezDataLoader, InferDataLoader } from '@graphql-ez/plugin-dataloader'; import { ezSchema } from '@graphql-ez/plugin-schema'; import { ezUpload } from '@graphql-ez/plugin-upload'; import { ezWebSockets } from '@graphql-ez/plugin-websockets'; -import { faker } from '@faker-js/faker'; import { StrictInMemoryPubSub } from 'graphql-ez/pubsub'; -import _ from 'lodash'; -import { JsonDB } from 'node-json-db'; +import { Config, JsonDB } from 'node-json-db'; import type { Dog, Human } from './ez.generated'; const pubsub = new StrictInMemoryPubSub<{ @@ -50,8 +49,13 @@ export const { const OwnerLoader = registerDataLoader('DogOwner', (DataLoader) => { return new DataLoader(async (keys: readonly string[]) => { - const dogOwners: Record = db.getData('/dogOwners'); - const humans = _.keyBy(db.getData('/humans') as Array, 'id'); + const dogOwners: Record = await db.getData('/dogOwners'); + const humans = await db.getData('/humans').then((humans: Human[]) => + humans.reduce((acum, human) => { + acum[human.id] = human; + return acum; + }, {} as Record) + ); return keys.map((key) => { return humans[dogOwners[key]]; }); @@ -60,15 +64,13 @@ const OwnerLoader = registerDataLoader('DogOwner', (DataLoader) => { const HumanDogsLoader = registerDataLoader('HumanDogs', (DataLoader) => { return new DataLoader(async (keys: readonly string[]) => { - const dogOwners: Record = db.getData('/dogOwners'); + const dogOwners: Record = await db.getData('/dogOwners'); - const dogs = db.getData('/dogs'); + const dogs = await db.getData('/dogs'); const humanDogs = Object.entries(dogOwners).reduce( (acum, [dogId, humanId]) => { - _.defaults(acum, { - [humanId]: [], - }); + acum[humanId] ??= []; const dog = dogs.find((v: Dog) => v.id == dogId); if (dog) acum[humanId].push(dog); @@ -93,7 +95,7 @@ declare module 'graphql-ez' { export const sleep = (amount: number) => new Promise((resolve) => setTimeout(resolve, amount)); -const db = new JsonDB('db.json', true, true, '/'); +const db = new JsonDB(new Config('db.json', true, true, '/')); // seed(2021); @@ -110,34 +112,16 @@ const paginatedData: { db.push('/paginatedData', paginatedData, true); const initialDogs = [ - { - id: 1, - name: 'a', - }, - { - id: 2, - name: 'b', - }, - { - id: 3, - name: 'c', - }, - { - id: 4, - name: 'd', - }, + { id: 1, name: 'a' }, + { id: 2, name: 'b' }, + { id: 3, name: 'c' }, + { id: 4, name: 'd' }, ]; db.push('/dogs', initialDogs, true); const initialHumans = [ - { - id: 1, - name: 'g', - }, - { - id: 2, - name: 'h', - }, + { id: 1, name: 'g' }, + { id: 2, name: 'h' }, ]; db.push('/humans', initialHumans, true); @@ -290,11 +274,13 @@ registerResolvers({ } throw Error('nTries=' + nTries); }, - human1() { - return db.getData('/humans')[0]; + async human1() { + const humans = await db.getData('/humans'); + return humans[0]; }, - human1Other() { - return db.getData('/humans')[0]; + async human1Other() { + const humans = await db.getData('/humans'); + return humans[0]; }, paginatedHumans(_root, { input: { after, first, last, before } }) { let nodes: { id: string; name: string }[]; diff --git a/examples/react/api/server.ts b/examples/react/api/server.ts index fe66b75d8..acc14dc61 100644 --- a/examples/react/api/server.ts +++ b/examples/react/api/server.ts @@ -1,5 +1,5 @@ -import Fastify from 'fastify'; import FastifyNext from '@fastify/nextjs'; +import Fastify from 'fastify'; import ms from 'ms'; import { dirname, resolve } from 'path'; import { fileURLToPath } from 'url'; @@ -31,6 +31,6 @@ app } }); -app.listen(4141, '0.0.0.0', (err) => { +app.listen({ host: '0.0.0.0', port: 3000 }, (err) => { if (err) throw err; }); diff --git a/examples/react/open-browser.mjs b/examples/react/open-browser.mjs deleted file mode 100644 index b8de8091b..000000000 --- a/examples/react/open-browser.mjs +++ /dev/null @@ -1,23 +0,0 @@ -import { differenceInMinutes } from 'date-fns'; -import { existsSync, readFileSync, writeFileSync } from 'fs'; -import open from 'open'; - -const lastOpenBrowserDateFile = './last-browser-open'; - -if (existsSync(lastOpenBrowserDateFile)) { - const date = new Date( - readFileSync(lastOpenBrowserDateFile, { - encoding: 'utf-8', - }) - ); - - if (Math.abs(differenceInMinutes(date, new Date())) > 30) { - open('http://localhost:4141', {}).catch(console.error); - } -} else { - open('http://localhost:4141', {}).catch(console.error); -} - -writeFileSync(lastOpenBrowserDateFile, new Date().toISOString(), { - encoding: 'utf-8', -}); diff --git a/examples/react/package.json b/examples/react/package.json index 4dd75a0be..e43a74795 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -4,8 +4,7 @@ "private": true, "scripts": { "build-example": "next build", - "dev": "concurrently --raw \"pnpm dev:server\" \"wait-on -s 1 tcp:4141 && node ./open-browser.mjs\"", - "dev:server": "bob-tsm --watch=api api/server.ts", + "dev": "bob-tsm --watch=api api/server.ts", "build": "next build", "start": "bob-tsm --node-env=prod api/server.ts" }, @@ -18,6 +17,7 @@ "@gqty/cli": "workspace:^3.3.0", "@gqty/logger": "workspace:^2.0.2", "@gqty/react": "workspace:^2.1.1", + "@gqty/subscriptions": "workspace:^2.0.1", "@graphql-ez/fastify": "^0.12.0", "@graphql-ez/plugin-altair": "^0.11.0", "@graphql-ez/plugin-codegen": "^0.8.0", @@ -25,37 +25,28 @@ "@graphql-ez/plugin-schema": "^0.9.0", "@graphql-ez/plugin-upload": "^0.8.0", "@graphql-ez/plugin-websockets": "^0.11.0", - "@react-native-async-storage/async-storage": "^1.17.12", - "@types/extract-files": "^8.1.1", + "@react-hookz/web": "^22.0.0", "date-fns": "^2.29.3", - "extract-files": "13.0.0", - "fastify": "^4.11.0", + "extract-files": "^13.0.0", + "fastify": "^4.15.0", "framer-motion": "^6.5.1", "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", "graphql-ez": "^0.16.0", "graphql-upload": "^13.0.0", - "graphql-ws": "^5.11.3", - "localforage": "^1.10.0", - "lodash": "^4.17.21", - "ms": "^3.0.0-canary.1", + "ms": "^2.1.3", "next": "^12.3.4", "node-json-db": "^2.1.5", - "open": "^8.4.2", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-error-boundary": "^4.0.7", "react-intersection-observer": "^9.4.3", - "react-native": "^0.71.4", - "react-ssr-prepass": "^1.5.0", - "react-use": "^17.4.0", - "serialize-error": "^11.0.0", - "use-error-boundary": "^2.0.6" + "serialize-error": "^11.0.0" }, "devDependencies": { "@babel/core": "^7.21.0", "@babel/preset-env": "^7.20.2", "@fastify/nextjs": "^9.2.0", + "@types/extract-files": "^8.1.1", "@types/graphql-upload": "^16.0.0", "@types/lodash": "^4.14.191", "@types/node": "^18.15.5", diff --git a/examples/react/src/components/client.ts b/examples/react/src/components/client.ts index 2514046d2..0d127d82c 100644 --- a/examples/react/src/components/client.ts +++ b/examples/react/src/components/client.ts @@ -1,7 +1,6 @@ import { createLogger } from '@gqty/logger'; - import { createReactClient } from '@gqty/react'; -import { client, GeneratedSchema } from '../graphql/gqty'; +import { cache, client, GeneratedSchema } from '../graphql/gqty'; export const { useTransactionQuery, @@ -30,4 +29,23 @@ if (typeof window !== 'undefined') { logger.start(); } -export const { refetch } = client; +// Core functions +const { resolve, subscribe, schema } = client; + +// Legacy functions +const { query, mutation, mutate, subscription, resolved, refetch, track } = + client; + +export { + cache, + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +}; diff --git a/examples/react/src/graphql/gqty.ts b/examples/react/src/graphql/gqty.ts index 3417fbc8d..513bbfadb 100644 --- a/examples/react/src/graphql/gqty.ts +++ b/examples/react/src/graphql/gqty.ts @@ -1,25 +1,58 @@ /** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * This generated client is deliberately left untouched after new core to serve + * as a testing point for backwards compatibility. */ -import { createClient, QueryFetcher } from 'gqty'; -import { createClient as createSubscriptionsClient } from 'graphql-ws'; +import { createSubscriptionsClient } from '@gqty/subscriptions'; +import extractFiles from 'extract-files/extractFiles.mjs'; +import isExtractableFile from 'extract-files/isExtractableFile.mjs'; +import { Cache, createClient, LegacyQueryFetcher as QueryFetcher } from 'gqty'; import { generatedSchema, GeneratedSchema, scalarsEnumsHash, + SchemaObjectTypes, + SchemaObjectTypesNames, } from './schema.generated'; -const queryFetcher: QueryFetcher = async function ({ - query, - variables, - operationName, -}) { - const response = await fetch( +const queryFetcher: QueryFetcher = async function (query, variables) { + const endpoint = typeof window === 'undefined' - ? 'http://localhost:4141/api/graphql' - : '/api/graphql', - { + ? 'http://localhost:3000/api/graphql' + : '/api/graphql'; + const { files, clone } = extractFiles( + { query, variables }, + isExtractableFile + ); + + if (files.size > 0) { + const formData = new FormData(); + + formData.append('operations', JSON.stringify(clone)); + formData.append( + 'map', + JSON.stringify( + [...files.values()].reduce((prev, paths, i) => { + prev[i + 1] = paths; + return prev; + }, {} as Record) + ) + ); + + let i = 0; + for (const [file] of files) { + formData.append(`${++i}`, file as File); + } + + const response = await fetch(endpoint, { + method: 'POST', + body: formData, + mode: 'cors', + }); + + return await response.json(); + } else { + const response = await fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -27,22 +60,18 @@ const queryFetcher: QueryFetcher = async function ({ body: JSON.stringify({ query, variables, - operationName, }), mode: 'cors', - } - ); - - const json = await response.json(); + }); - return json; + return await response.json(); + } }; const subscriptionsClient = typeof window !== 'undefined' ? createSubscriptionsClient({ - lazy: true, - url: () => { + wsEndpoint: () => { // Modify if needed const url = new URL('/api/graphql', window.location.href); url.protocol = url.protocol.replace('http', 'ws'); @@ -53,13 +82,22 @@ const subscriptionsClient = }) : undefined; -export const client = createClient({ +export const cache = new Cache(undefined, { + maxAge: Infinity, + // staleWhileRevalidate: 60 * 5000, + normalization: true, +}); + +export const client = createClient< + GeneratedSchema, + SchemaObjectTypesNames, + SchemaObjectTypes +>({ + cache, schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - subscriber: subscriptionsClient, - }, + scalarsEnumsHash, + queryFetcher, + subscriptionsClient, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = diff --git a/examples/react/src/graphql/schema.generated.ts b/examples/react/src/graphql/schema.generated.ts index 18fa66626..af6e96f2a 100644 --- a/examples/react/src/graphql/schema.generated.ts +++ b/examples/react/src/graphql/schema.generated.ts @@ -1,5 +1,5 @@ /** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ import { SchemaUnionsKey } from 'gqty'; @@ -31,6 +31,7 @@ export interface ConnectionArgs { after?: InputMaybe; before?: InputMaybe; first?: InputMaybe; + /** @deprecated asd */ last?: InputMaybe; } diff --git a/examples/react/src/pages/emptyArrays.tsx b/examples/react/src/pages/emptyArrays.tsx index c3b2fe82b..c9dc8d480 100644 --- a/examples/react/src/pages/emptyArrays.tsx +++ b/examples/react/src/pages/emptyArrays.tsx @@ -28,7 +28,7 @@ export default graphql( }, { suspense: { - fallback: 'Loadingasd...', + fallback: 'Loading...', }, } ); diff --git a/examples/react/src/pages/index.tsx b/examples/react/src/pages/index.tsx index 158df5583..8a283e24f 100644 --- a/examples/react/src/pages/index.tsx +++ b/examples/react/src/pages/index.tsx @@ -1,81 +1,98 @@ -import { Suspense, useReducer } from 'react'; - -import { query } from '../graphql/gqty'; -import NormalizedPage from './normalized'; +import { Button, HStack, Stack, Text } from '@chakra-ui/react'; +import { selectFields } from 'gqty'; +import { FunctionComponent, Suspense, useReducer } from 'react'; import { graphql, useQuery, useRefetch, useTransactionQuery, } from '../components/client'; -import { selectFields } from 'gqty'; -import { Button, Stack, Text } from '@chakra-ui/react'; +import NormalizedPage from './normalized'; -const Comp = graphql(function Asd() { - const queryFromHook = useQuery({}); - const { data } = useTransactionQuery( - (query) => { - return query.dogs.map((dog) => { - return { - dogName: dog.name, - owner: dog.owner?.__typename ? 'has owner 😁' : 'no owner 😔', - }; - }); - }, - { - skip: false, - } - ); +let nRenders = 0; - const [n, dispatch] = useReducer( - (state: number, action: 'add' | 'substact') => { - return action === 'add' ? ++state : --state; - }, - 1 - ); +const Comp: FunctionComponent<{ queryFromHook: ReturnType }> = + graphql(function Asd({ queryFromHook }) { + const { data } = useTransactionQuery( + (query) => { + return query.dogs.map((dog) => { + return { + dogName: dog.name, + owner: dog.owner?.__typename ? 'has owner 😁' : 'no owner 😔', + }; + }); + }, + { skip: false } + ); - const typename = queryFromHook.__typename; + const [n, dispatch] = useReducer( + (state: number, action: 'add' | 'substact') => { + return action === 'add' ? ++state : --state; + }, + 1 + ); - const refetch = useRefetch(); + const typename = queryFromHook.__typename; - try { - query.paginatedHumans({ - input: { - first: 10, - }, - }).__typename; - } catch (err) {} + const refetch = useRefetch(); - return ( - - Time: {queryFromHook.time} + try { + queryFromHook.paginatedHumans({ + input: { + first: 10, + }, + }).__typename; + } catch (err) {} - {typename} + return ( + + + + Depth: {n} + + + - {JSON.stringify(selectFields(query.dogs, '*', n), null, 2)} + {typename} - Depth: {n} - - + + {JSON.stringify(selectFields(queryFromHook.dogs, '*', n), null, 2)} + + - useTransactionQuery: "{JSON.stringify(data, null, 2)}" + + - - - ); -}); + useTransactionQuery: "{JSON.stringify(data, null, 2)}" + + + ); + }); export default function Index() { + const query = useQuery({ + suspense: false, + refetchOnWindowVisible: true, + }); + return ( - - + + Time: {query.time} + Render: {++nRenders} + + + + + + ); } diff --git a/examples/react/src/pages/normalized.tsx b/examples/react/src/pages/normalized.tsx index 0002c521a..ebeb1aa76 100644 --- a/examples/react/src/pages/normalized.tsx +++ b/examples/react/src/pages/normalized.tsx @@ -8,20 +8,20 @@ export default function NormalizedPage() { staleWhileRevalidate: true, }); - const [renameDog] = useMutation((mutation) => { + const [renameDog] = useMutation((mutation, { name }: { name: string }) => { const dog = mutation.renameDog({ id: '1', - name: 'z', + name, }); dog?.id; dog?.name; }); - const [renameHuman] = useMutation((mutation) => { + const [renameHuman] = useMutation((mutation, { name }: { name: string }) => { const human = mutation.renameHuman({ id: '1', - name: 'x', + name, }); human?.id; @@ -30,11 +30,29 @@ export default function NormalizedPage() { return ( + + + {query.time} - - + - {JSON.stringify(selectFields(query.humans, '*', 2), null, 2)} + {JSON.stringify(selectFields(query.humans, '*', 3), null, 2)} ); diff --git a/examples/react/src/pages/pagination.tsx b/examples/react/src/pages/pagination.tsx index ff291dd78..3aafa7aa0 100644 --- a/examples/react/src/pages/pagination.tsx +++ b/examples/react/src/pages/pagination.tsx @@ -64,6 +64,7 @@ export default function Page() { endCursor, hasNextPage, hasPreviousPage, + isLoading, }, null, 2 diff --git a/examples/react/src/pages/pagination_infinite_scroll.tsx b/examples/react/src/pages/pagination_infinite_scroll.tsx index 058ee7fb7..d233f1424 100644 --- a/examples/react/src/pages/pagination_infinite_scroll.tsx +++ b/examples/react/src/pages/pagination_infinite_scroll.tsx @@ -1,8 +1,6 @@ -import { useInView } from 'react-intersection-observer'; -import { useDebounce } from 'react-use'; - import { Stack, Text } from '@chakra-ui/react'; - +import { useDebouncedEffect } from '@react-hookz/web'; +import { useInView } from 'react-intersection-observer'; import { usePaginatedQuery } from '../components/client'; import { ConnectionArgs } from '../graphql/gqty'; @@ -46,7 +44,7 @@ export default function Page() { threshold: 0, }); - useDebounce( + useDebouncedEffect( () => { if (!isLoading && inView && data?.hasNextPage && data.endCursor) { fetchMore({ @@ -55,8 +53,8 @@ export default function Page() { }); } }, - 100, - [inView, data, fetchMore] + [inView, data, fetchMore], + 100 ); return ( diff --git a/examples/react/src/pages/ssr.tsx b/examples/react/src/pages/ssr.tsx index f06f97aa0..9cc9fe175 100644 --- a/examples/react/src/pages/ssr.tsx +++ b/examples/react/src/pages/ssr.tsx @@ -1,5 +1,5 @@ import { PropsWithServerCache } from '@gqty/react'; - +import type { GetServerSideProps } from 'next'; import { graphql, prepareReactRender, @@ -7,22 +7,23 @@ import { } from '../components/client'; import { default as RefetchPage } from './refetch'; -import type { GetServerSideProps } from 'next'; +// FIXME: Time component should not re-render on hydration -export const getServerSideProps: GetServerSideProps = - async ({}) => { - const { cacheSnapshot } = await prepareReactRender( - <> - - - ); +export const getServerSideProps: GetServerSideProps< + PropsWithServerCache +> = async () => { + const { cacheSnapshot } = await prepareReactRender( + <> + + + ); - return { - props: { - cacheSnapshot, - }, - }; + return { + props: { + cacheSnapshot, + }, }; +}; export default graphql( function SSRPage({ cacheSnapshot }: PropsWithServerCache) { diff --git a/examples/react/src/pages/transactionQuery2.tsx b/examples/react/src/pages/transactionQuery2.tsx index c6a06c039..6d120d11c 100644 --- a/examples/react/src/pages/transactionQuery2.tsx +++ b/examples/react/src/pages/transactionQuery2.tsx @@ -1,3 +1,4 @@ +import { Stack, Text } from '@chakra-ui/react'; import { useTransactionQuery } from '../components/client'; let nRenders = 0; @@ -13,9 +14,9 @@ export default function TransactionQuery2() { ); return ( -
- {++nRenders} - query2 {JSON.stringify(data)} -
+ + Renders: {++nRenders} + query2 {JSON.stringify(data)} + ); } diff --git a/examples/react/src/pages/uploadFile.tsx b/examples/react/src/pages/uploadFile.tsx index a0e8c951d..cf0753a01 100644 --- a/examples/react/src/pages/uploadFile.tsx +++ b/examples/react/src/pages/uploadFile.tsx @@ -1,4 +1,4 @@ -import { Input, Stack, Text } from '@chakra-ui/react'; +import { Input, Stack } from '@chakra-ui/react'; import { ChangeEvent, useState } from 'react'; import { useMutation } from '../components/client'; diff --git a/examples/vite-example/src/gqty/index.ts b/examples/vite-example/src/gqty/index.ts index 1cfd006a1..a2e5b9e58 100644 --- a/examples/vite-example/src/gqty/index.ts +++ b/examples/vite-example/src/gqty/index.ts @@ -1,5 +1,5 @@ /** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import { createReactClient } from '@gqty/react'; diff --git a/integration/graphql-17/src/gqty.ts b/integration/graphql-17/src/gqty.ts index 9200011f3..686e19e0a 100644 --- a/integration/graphql-17/src/gqty.ts +++ b/integration/graphql-17/src/gqty.ts @@ -1,5 +1,5 @@ /** - * GQTY: You can safely modify this file and Query Fetcher based on your needs + * GQty: You can safely modify this file based on your needs. */ import type { QueryFetcher } from 'gqty'; diff --git a/integration/graphql-17/src/schema.generated.ts b/integration/graphql-17/src/schema.generated.ts index 7f0546e67..1a38c6472 100644 --- a/integration/graphql-17/src/schema.generated.ts +++ b/integration/graphql-17/src/schema.generated.ts @@ -1,5 +1,5 @@ /** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY */ export type Maybe = T | null; diff --git a/packages/react/package.json b/packages/react/package.json index aa2bdbcf2..4bb3cca0a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -76,6 +76,7 @@ "dependencies": { "@react-hookz/web": "^22.0.0", "p-debounce": "^4.0.0", + "p-defer": "^3.0.0", "react-ssr-prepass": "^1.5.0", "use-sync-external-store": "^1.2.0" }, diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index bb41d0f33..a99800128 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -80,13 +80,15 @@ export const createUseMutation = ( ? undefined : Parameters>[1]; - const [data, setData] = React.useState(); - const [error, setError] = React.useState(); - const [fetchPromise, setFetchPromise] = React.useState>(); + const [state, setState] = React.useState<{ + data?: TData; + error?: GQtyError; + promise?: Promise; + }>({}); if (suspense) { - if (fetchPromise) throw fetchPromise; - if (error) throw error; + if (state.promise) throw state.promise; + if (state.error) throw state.error; } const mutate = React.useCallback( @@ -98,60 +100,55 @@ export const createUseMutation = ( throw new GQtyError(`Please specify a mutation function.`); } - setError(undefined); - - const promise = resolve( - ({ mutation }) => { - if (mutation === undefined) { - throw new GQtyError(`Mutation is not defined in the schema.`); + try { + const promise = resolve( + ({ mutation }) => { + if (mutation === undefined) { + throw new GQtyError(`Mutation is not defined in the schema.`); + } + + return fn(mutation, args as TArgs); + }, + { + fetchPolicy: noCache ? 'no-store' : 'no-cache', + retryPolicy: retry, } + ).then((data) => { + const refetchPromise = Promise.all( + refetchQueries.map((v) => refetch(v)) + ); - return fn(mutation, args as TArgs); - }, - { - fetchPolicy: noCache ? 'no-store' : 'no-cache', - retryPolicy: retry, - } - ).then((data) => { - const refetchPromise = Promise.all( - refetchQueries.map((v) => refetch(v)) - ); - - return awaitRefetchQueries ? refetchPromise.then(() => data) : data; - }) as Promise; + return awaitRefetchQueries ? refetchPromise.then(() => data) : data; + }) as Promise; - setFetchPromise(promise); + setState({ promise }); - try { const data = await promise; - const refetchPromise = Promise.all( - refetchQueries.map((v) => refetch(v)) - ); - - if (awaitRefetchQueries) { - await refetchPromise; - } - onCompleted?.(data); - setData(data); + setState({ data }); return data; } catch (error) { const theError = GQtyError.create(error); onError?.(theError); - setError(theError); + setState({ error: theError }); throw theError; - } finally { - setFetchPromise(undefined); } }, [mutationFn, noCache, retry, refetchQueries, awaitRefetchQueries] ); - return Object.freeze([mutate, { data, error, isLoading: !!fetchPromise }]); + return Object.freeze([ + mutate, + Object.freeze({ + data: state.data, + error: state.error, + isLoading: state.promise !== undefined, + }), + ]); }; return useMutation; diff --git a/packages/react/src/query/hoc.tsx b/packages/react/src/query/hoc.tsx index 80fe5191d..a028436e9 100644 --- a/packages/react/src/query/hoc.tsx +++ b/packages/react/src/query/hoc.tsx @@ -43,10 +43,7 @@ export function createGraphqlHOC( accessor: { query, mutation, subscription }, context, resolve, - } = createResolver({ - operationName, - retryPolicy: retry, - }); + } = createResolver({ operationName, retryPolicy: retry }); const unsubscribe = subscribeLegacySelections((selection, cache) => { context.onSelect?.(selection, cache); }); diff --git a/packages/react/src/query/useLazyQuery.ts b/packages/react/src/query/useLazyQuery.ts index 380e2b6f1..d8c546c74 100644 --- a/packages/react/src/query/useLazyQuery.ts +++ b/packages/react/src/query/useLazyQuery.ts @@ -105,7 +105,7 @@ export interface UseLazyQuery { } export function createUseLazyQuery( - client: GQtyClient, + { resolve }: GQtyClient, { defaults: { retry: defaultRetry, @@ -156,24 +156,25 @@ export function createUseLazyQuery( let innerFetchPromise: Promise | undefined; try { - const fetchPromise = client - .resolve(({ query }) => resolveFn(query, args as TArgs), { + const fetchPromise = resolve( + ({ query }) => resolveFn(query, args as TArgs), + { awaitsFetch: false, fetchPolicy: translateFetchPolicy(fetchPolicy), onFetch(promise) { innerFetchPromise = promise as Promise; }, retryPolicy: retry, - }) - .then((data) => { - const typedData = data as TData; + } + ).then((data) => { + const typedData = data as TData; - if (fetchPolicy === 'cache-and-network') { - dispatch({ type: 'cache-found', data: typedData }); - } + if (fetchPolicy === 'cache-and-network') { + dispatch({ type: 'cache-found', data: typedData }); + } - return innerFetchPromise ?? typedData; - }); + return innerFetchPromise ?? typedData; + }); dispatch({ type: 'loading', promise: fetchPromise }); diff --git a/packages/react/src/query/usePaginatedQuery.ts b/packages/react/src/query/usePaginatedQuery.ts index ad2f63eea..b6456d4b3 100644 --- a/packages/react/src/query/usePaginatedQuery.ts +++ b/packages/react/src/query/usePaginatedQuery.ts @@ -112,7 +112,7 @@ export interface UsePaginatedQuery { export const createUsePaginatedQuery = ( - { createResolver }: GQtyClient, + { createResolver, resolve }: GQtyClient, { defaults: { paginatedQueryFetchPolicy: defaultFetchPolicy, @@ -139,7 +139,6 @@ export const createUsePaginatedQuery = const { accessor: { query }, context, - resolve, selections, } = React.useMemo( () => @@ -151,103 +150,175 @@ export const createUsePaginatedQuery = [hookFetchPolicy, operationName, retry] ); - const [fetchPromise, setFetchPromise] = React.useState>(); - const [error, setError] = React.useState(); - const [data, setData] = React.useState(); - const [args, setArgs] = React.useState(initialArgs); + // Debounce to skip one render on mount, when the cache is already fresh. + const [state, setState] = React.useState<{ + data?: TData; + args: TArgs; + promise?: Promise; + error?: GQtyError; + }>({ + args: initialArgs, + }); if (suspense) { - if (fetchPromise) throw fetchPromise; - if (error) throw error; + if (state.promise) throw state.promise; + if (state.error) throw state.error; } - const fetchMore = React.useCallback( + const mergeData = React.useCallback( + (incoming: TData) => + merge?.({ + data: { + existing: state.data, + incoming, + }, + uniqBy, + sortBy, + }) ?? incoming, + [merge] + ); + + const fetchData = React.useCallback( async ( - newArgs?: - | ((data: FetchMoreCallbackArgs) => TArgs) - | TArgs, + args: TArgs, fetchPolicy: PaginatedQueryFetchPolicy = hookFetchPolicy ) => { - setError(undefined); - setFetchPromise(undefined); - selections.clear(); + const promise = resolve(({ query }) => fn(query, args, coreHelpers), { + fetchPolicy: translateFetchPolicy(fetchPolicy), + operationName, + retryPolicy: retry, + onSelect(selection, cache) { + context.onSelect(selection, cache); + }, + }) as Promise; - { - const data = dataFn(); + if (!context.shouldFetch) { + state.data = mergeData(fn(query, args, coreHelpers)); - if (!context.shouldFetch) { - const mergedData = mergeData(data); - setData(mergedData); - return mergedData; - } + return state.data; + } - if (fetchPolicy === 'cache-and-network' && context.hasCacheHit) { - setData(mergeData(data)); - } + if (hookFetchPolicy === 'cache-and-network' && context.hasCacheHit) { + state.data = mergeData(fn(query, args, coreHelpers)); } - const promise = resolve().then(dataFn); + state.promise = promise; - setFetchPromise(promise); + promise.finally(() => { + if (state.promise === promise) { + state.promise = undefined; + } + }); - try { - const currentData = mergeData(await promise); + return promise; + }, + [ + context, + coreHelpers, + fn, // fn almost guaranteed to change on every render + hookFetchPolicy, + mergeData, + operationName, + query, + retry, + ] + ); - setData(currentData); + // Call it once on first render + React.useState(() => { + if (skip) return setState(({ args }) => ({ args })); - return currentData; - } catch (error) { - const theError = GQtyError.create(error); + const promise = fetchData(initialArgs); - setError(theError); + promise + .then( + (data) => { + setTimeout(() => { + setState(({ args }) => ({ args, data })); + }, 1000); + }, + (error) => { + setState(({ args }) => ({ + args, + error: GQtyError.create(error), + })); + } + ) + .finally(() => { + context.shouldFetch = false; + }); - throw theError; + if (context.shouldFetch) { + if (suspense) { + throw promise; + } else { + setState(({ args }) => ({ args, promise })); } + } + }); - function dataFn() { - const newArgsValue = - typeof newArgs === 'function' - ? newArgs({ existingData: data, existingArgs: args }) - : newArgs; + // Re-render when normalized objects are updated, also resubscribe on + // selection change to pick up newly fetched normalized objects. + React.useEffect(() => { + if (skip || selections.size === 0) return; - setArgs(newArgsValue); + return context.cache.subscribe( + [...selections].map((s) => s.cacheKeys.join('.')), + () => setState((state) => ({ ...state })) + ); + }, [selections.size]); - return fn(query, newArgsValue, coreHelpers); - } + const fetchMore = React.useCallback( + async ( + newArgs?: + | ((data: FetchMoreCallbackArgs) => TArgs) + | TArgs, + fetchPolicy?: PaginatedQueryFetchPolicy + ) => { + const currentArgs = + typeof newArgs === 'function' + ? newArgs({ existingData: state.data, existingArgs: state.args }) + : newArgs ?? state.args; - function mergeData(incomingData: TData) { - return ( - merge?.({ - data: { - incoming: incomingData, - existing: data, - }, - uniqBy, - sortBy, - }) ?? incomingData - ); + try { + const promise = fetchData(currentArgs, fetchPolicy); + // setState((state) => ({ ...state, promise })); + + const data = await promise.then(mergeData); + setState(({ args }) => ({ args, data })); + + return data; + } catch (e) { + const error = GQtyError.create(e); + setState(({ args }) => ({ args, error })); + + throw error; } }, - [context, fn, hookFetchPolicy, data, args] + [fetchData] ); - // Invoke fetchMore once with initialArgs - React.useEffect(() => { - if (!skip) fetchMore(initialArgs); - }, [skip, fetchMore, initialArgs]); - // Subscribe to cache change React.useEffect(() => { return context.cache.subscribe( [...selections].map((s) => s.cacheKeys.join('.')), () => { - setData(fn(query, args, coreHelpers)); + setState((state) => ({ + ...state, + data: fn(query, state.args, coreHelpers), + })); } ); - }, [fn, args, selections.size]); + }, [fn, state, selections.size]); return React.useMemo( - () => ({ data, args, fetchMore, isLoading: fetchPromise === undefined }), - [data, args, fetchMore, fetchPromise] + () => + Object.freeze({ + args: state.args, + data: state.data, + fetchMore, + isLoading: state.promise !== undefined, + }), + [state.args, state.data, fetchMore, state.promise] ); }; diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 318c01efb..fd3cfe525 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -1,4 +1,10 @@ -import { usePrevious, useRerender, useUpdateEffect } from '@react-hookz/web'; +import { + useDebouncedCallback, + usePrevious, + useRerender, + useThrottledState, + useUpdateEffect, +} from '@react-hookz/web'; import { BaseGeneratedSchema, GQtyClient, @@ -6,13 +12,13 @@ import { prepass, RetryOptions, } from 'gqty'; +import pDefer from 'p-defer'; import { useCallback, useEffect, useMemo } from 'react'; import { LegacyFetchPolicy, OnErrorHandler, translateFetchPolicy, } from '../common'; -import { useThrottledAsync } from '../useThrottledAsync'; import { useWindowFocusEffect } from '../useWindowFocusEffect'; import type { ReactClientOptionsWithDefaults } from '../utils'; @@ -83,85 +89,123 @@ export const createUseQuery = staleWhileRevalidate = defaultStaleWhileRevalidate, suspense = defaultSuspense, } = {}) => { + const render = useRerender(); + const debouncedRender = useDebouncedCallback(render, [render], 50); + const cacheMode = useMemo( + () => translateFetchPolicy(fetchPolicy), + [fetchPolicy] + ); const { accessor: { query }, context, resolve, + subscribe, selections, } = useMemo( () => client.createResolver({ - fetchPolicy: translateFetchPolicy(fetchPolicy), + fetchPolicy: cacheMode, operationName, retryPolicy: retry, }), [fetchPolicy, operationName, retry] ); - const [{ status, error }, { execute }, { promise }] = useThrottledAsync( - async () => { - try { - return await resolve(); - } catch (error) { - const theError = GQtyError.create(error); + const [state, setState] = useThrottledState<{ + error?: GQtyError; + promise?: Promise; + }>({}, 50); - onError?.(theError); + // With `prepare`, selections are only collected within the provided + // function. Accessing other properties in the proxy should not trigger + // further fetches. + if (prepare) { + context.shouldFetch = false; - throw theError; - } finally { - // Reset these, or createResolver() each time and deal with the new resolve. - context.shouldFetch = false; - context.hasCacheHit = false; - context.hasCacheMiss = false; - } + prepare({ prepass, query }); + + // When using prepare with suspense, the promise should be thrown + // immediately. + if (context.shouldFetch && suspense) { + throw client.resolve(({ query }) => prepare({ prepass, query }), { + fetchPolicy: cacheMode, + operationName, + retryPolicy: retry, + }); } - ); + } if (suspense) { - if (error) throw GQtyError.create(error); - if (promise && status === 'loading') { - throw promise; - } + if (state.error) throw state.error; + + // Prevents excessive suspense fallback, throws only on empty cache. + if (state.promise && !context.hasCacheHit) throw state.promise; } - if (prepare) { - // TODO: See if `Error.captureStackTrace(error, useQuery);` is needed - prepare({ prepass, query }); + // Normal fetch + useEffect(() => { + if (state.promise !== undefined) return; + + const { resolve, reject, promise } = pDefer(); - // Assuming the fetch always fulfills selections in prepare(), otherwise - // this may cause an infinite render loop. - if (suspense && context.shouldFetch) { - throw resolve(); + if (context.shouldFetch && notifyOnNetworkStatusChange) { + setState({ promise }); } - } + + return subscribe({ + onNext: () => debouncedRender(), + onError(error) { + const theError = GQtyError.create(error); + + onError?.(theError); + setState({ error: theError }); + reject(theError); + }, + onComplete() { + context.shouldFetch = false; + context.hasCacheHit = false; + context.hasCacheMiss = false; + context.notifyCacheUpdate = cacheMode !== 'default'; + + setState({}); + resolve(); + }, + }); + }, [context.shouldFetch]); const refetch = useCallback( - (force = false) => { - if (force) { + async (force = false) => { + if (!force && !context.shouldFetch) return; + if (state.promise !== undefined) return; + + try { + context.notifyCacheUpdate = true; context.shouldFetch = true; - } else if (promise) { - return promise; - } - const refetchPromise = execute(); - context.refechPromise = refetchPromise; + const promise = resolve(); - refetchPromise.catch(console.error).finally(() => { - context.refetchPromise = undefined; - }); + if (notifyOnNetworkStatusChange) { + setState({ promise }); + } + + await promise; + } catch (e) { + const error = GQtyError.create(e); - return refetchPromise; + onError?.(error); + setState({ error }); + } finally { + context.shouldFetch = false; + context.hasCacheHit = false; + context.hasCacheMiss = false; + context.notifyCacheUpdate = cacheMode !== 'default'; + + setState({}); + } }, - [execute, promise] + [context.shouldFetch, operationName, selections] ); - // Invoke it on client side automatically. - useEffect(() => { - if (context.shouldFetch) { - refetch(); - } - }); - // staleWhileRevalidate const swrDiff = usePrevious(staleWhileRevalidate); useUpdateEffect(() => { @@ -171,39 +215,21 @@ export const createUseQuery = }, [refetch, swrDiff]); { - const render = useRerender(); - // A rerender should be enough to trigger a soft check, fetch will // happen if any of the accessed cache value is stale. - useWindowFocusEffect( - () => { - refetch(); - }, - { enabled: refetchOnWindowVisible } - ); - - // Rerenders on cache changes from others - useEffect(() => { - if (selections.size === 0) return; - - return context.cache.subscribe( - [...selections].map(({ cacheKeys }) => cacheKeys.join('.')), - render - ); - }, [selections, selections.size]); + useWindowFocusEffect(debouncedRender, { + enabled: refetchOnWindowVisible, + }); } return useMemo(() => { return new Proxy( Object.freeze({ $refetch: (force = true) => refetch(force), - $state: { - isLoading: - status === 'loading' && - (context.refetchPromise !== promise || - notifyOnNetworkStatusChange), - error: GQtyError.create(error), - }, + $state: Object.freeze({ + isLoading: state.promise !== undefined, + error: state.error, + }), }), { get: (target, key, proxy) => @@ -219,5 +245,5 @@ export const createUseQuery = ), } ); - }, [query, refetch, status, error]); + }, [query, refetch, state]); }; diff --git a/packages/react/src/query/useRefetch.ts b/packages/react/src/query/useRefetch.ts index d32cfe9aa..44e9aa042 100644 --- a/packages/react/src/query/useRefetch.ts +++ b/packages/react/src/query/useRefetch.ts @@ -11,6 +11,8 @@ import type { ReactClientOptionsWithDefaults } from '../utils'; interface UseRefetchState { isLoading: boolean; error?: GQtyError; + startWatching: () => void; + stopWatching: () => void; } export interface UseRefetchOptions { @@ -35,18 +37,15 @@ export const createUseRefetch = ( const useRefetch: UseRefetch = ({ notifyOnNetworkStatusChange = true, operationName, - // startWatching = true, // With scoped query, this is no longer necessary. + startWatching = true, retry = defaultRetry, suspense = false, } = {}) => { - const [fetchPromise, setFetchPromise] = React.useState>(); - const [error, setError] = React.useState(); - - if (suspense) { - if (fetchPromise) throw fetchPromise; - if (error) throw error; - } - + const [state, setState] = React.useState<{ + error?: GQtyError; + promise?: Promise; + }>(); + const watchingRef = React.useRef(startWatching); const [selections] = React.useState(() => new Set()); // All selections from this component down the rendering tree, this almost @@ -55,13 +54,19 @@ export const createUseRefetch = ( // parameters as one of the overloads. React provides no way to identify a // component and potentially gain access to the SchemaContext from other // query hooks. - React.useEffect( - () => - client.subscribeLegacySelections((selection) => { + const [unsubscribeSelections] = React.useState(() => + client.subscribeLegacySelections((selection) => { + if (watchingRef.current && selection.root.key === 'query') { selections.add(selection); - }), - [] + } + }) ); + React.useEffect(() => unsubscribeSelections, [unsubscribeSelections]); + + if (suspense) { + if (state?.promise) throw state?.promise; + if (state?.error) throw state?.error; + } const refetch = React.useCallback( async ( @@ -82,13 +87,13 @@ export const createUseRefetch = ( return resolve() as Promise; })(); - setFetchPromise(promise); + setState({ promise }); try { return (await promise) as T; } catch (error) { const theError = GQtyError.create(error); - setError(theError); + setState({ error: theError }); throw theError; } }, @@ -98,8 +103,14 @@ export const createUseRefetch = ( return React.useMemo( () => Object.assign(refetch, { - isLoading: fetchPromise !== undefined, - error, + isLoading: state?.promise !== undefined, + error: state?.error, + startWatching: () => { + watchingRef.current = true; + }, + stopWatching: () => { + watchingRef.current = false; + }, }), [] ); diff --git a/packages/react/src/query/useTransactionQuery.ts b/packages/react/src/query/useTransactionQuery.ts index dc80f3bd8..b12dfcf44 100644 --- a/packages/react/src/query/useTransactionQuery.ts +++ b/packages/react/src/query/useTransactionQuery.ts @@ -107,6 +107,3 @@ export function createUseTransactionQuery( return useTransactionQuery; } - -// TODO: Test all use cases to make sure state changes are intact. -// TODO: Test if it can pick up changes to scope variables here, test `skip` and `pollInBackground`. diff --git a/packages/react/src/subscription/useSubscription.ts b/packages/react/src/subscription/useSubscription.ts index 181fa0104..a253dd72b 100644 --- a/packages/react/src/subscription/useSubscription.ts +++ b/packages/react/src/subscription/useSubscription.ts @@ -12,7 +12,7 @@ export type UseSubscriptionOptions = { }; export function createUseSubscription({ - createSubscriber, + createResolver, }: GQtyClient) { const useSubscription: UseSubscription = ({ onError, @@ -22,28 +22,26 @@ export function createUseSubscription({ accessor: { subscription }, subscribe, selections, - } = useMemo(() => createSubscriber({ operationName }), [operationName]); + } = useMemo(() => createResolver({ operationName }), [operationName]); const render = useRerender(); const [error, setError] = useState(); if (error) throw error; - useEffect( - () => - subscribe({ - onNext: render, - onError(error) { - const theError = GQtyError.create(error); - - if (onError) { - onError(theError); - } else { - setError(theError); - } - }, - }), - [onError, selections, selections.size] - ); + useEffect(() => { + return subscribe({ + onNext: () => render(), + onError(error) { + const theError = GQtyError.create(error); + + if (onError) { + onError(theError); + } else { + setError(theError); + } + }, + }); + }, [onError, selections, selections.size]); if (!subscription) { throw new GQtyError(`Subscription is not defined in the schema.`); diff --git a/packages/react/src/useWindowFocusEffect.ts b/packages/react/src/useWindowFocusEffect.ts index 6a109cc4c..2955ddf04 100644 --- a/packages/react/src/useWindowFocusEffect.ts +++ b/packages/react/src/useWindowFocusEffect.ts @@ -9,6 +9,8 @@ export const useWindowFocusEffect = ( { enabled = true }: UseFocusChangeEffectOptions = {} ) => { useEffect(() => { + if (!enabled) return; + const visibilityChangeFn = () => { if (globalThis.document?.visibilityState === 'visible') { fn(); diff --git a/packages/react/test/useMutation.test.tsx b/packages/react/test/useMutation.test.tsx new file mode 100644 index 000000000..c23cbad3c --- /dev/null +++ b/packages/react/test/useMutation.test.tsx @@ -0,0 +1,114 @@ +import { act, renderHook } from '@testing-library/react-hooks'; +import { createReactTestClient } from './utils'; + +describe('useMutation', () => { + it('should mutate without suspense', async () => { + const { useMutation } = await createReactTestClient(); + const { result, waitFor } = renderHook(() => { + return useMutation((mutation, { name }: { name: string }) => { + const human = mutation.humanMutation({ nameArg: name }); + + human?.id; + human?.name; + }); + }); + + await act(() => result.current[0]({ args: { name: 'John Doe' } })); + + await waitFor(() => result.current[1].data !== undefined); + + expect(result.current[1]).toMatchInlineSnapshot(` + { + "data": { + "mutation": { + "a236d": { + "__typename": "Human", + "id": "1", + "name": "John Doe", + }, + }, + }, + "error": undefined, + "isLoading": false, + } + `); + }); + + it('should mutate with suspense', async () => { + const { useMutation } = await createReactTestClient(); + const { result, waitFor } = renderHook(() => { + return useMutation( + (mutation, { name }: { name: string }) => { + const human = mutation.humanMutation({ nameArg: name }); + + human?.id; + human?.name; + }, + { suspense: true } + ); + }); + + await act(() => result.current[0]({ args: { name: 'Jane Doe' } })); + + await waitFor(() => result.current[1].data !== undefined); + + expect(result.current[1]).toMatchInlineSnapshot(` + { + "data": { + "mutation": { + "ba497": { + "__typename": "Human", + "id": "1", + "name": "Jane Doe", + }, + }, + }, + "error": undefined, + "isLoading": false, + } + `); + }); + + it('should update contents of useQuery via normalized cache', async () => { + const { useQuery, useMutation } = await createReactTestClient(); + const q = renderHook(() => { + const human = useQuery().human({ name: 'Uno' }); + + human.id; + human.name; + + return human; + }); + + const m = renderHook(() => { + return useMutation( + (mutation, args: { name: string; newName: string }) => { + const human = mutation.renameHuman(args); + + human?.id; + human?.name; + } + ); + }); + + await q.waitFor(() => q.result.current.name === 'Uno'); + + await act(() => + m.result.current[0]({ args: { name: 'Uno', newName: 'Dos' } }) + ); + + await q.waitFor(() => q.result.current.name === 'Dos'); + + await act(() => + m.result.current[0]({ args: { name: 'Dos', newName: 'Tres' } }) + ); + + await q.waitFor(() => q.result.current.name === 'Tres'); + + await act(() => + m.result.current[0]({ args: { name: 'Tres', newName: 'Cuatro' } }) + ); + + await q.waitFor(() => q.result.current.name === 'Cuatro'); + }); +}); diff --git a/packages/react/test/useQuery.test.tsx b/packages/react/test/useQuery.test.tsx index d33ada308..dee2817f5 100644 --- a/packages/react/test/useQuery.test.tsx +++ b/packages/react/test/useQuery.test.tsx @@ -48,7 +48,7 @@ describe('useQuery', () => { await result.current.$refetch(); }); - expect(result.current.time).not.toBe(time); + await waitFor(() => result.current.time !== time); }); it('should fetch with suspense', async () => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e99541396..226b460c1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -302,9 +302,12 @@ importers: '@gqty/react': specifier: workspace:^2.1.1 version: link:../../packages/react/dist + '@gqty/subscriptions': + specifier: workspace:^2.0.1 + version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.15.5)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-altair': specifier: ^0.11.0 version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) @@ -323,21 +326,18 @@ importers: '@graphql-ez/plugin-websockets': specifier: ^0.11.0 version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) - '@react-native-async-storage/async-storage': - specifier: ^1.17.12 - version: 1.17.12(react-native@0.71.6) - '@types/extract-files': - specifier: ^8.1.1 - version: 8.1.1 + '@react-hookz/web': + specifier: ^22.0.0 + version: 22.0.0(react-dom@17.0.2)(react@17.0.2) date-fns: specifier: ^2.29.3 version: 2.29.3 extract-files: - specifier: 13.0.0 + specifier: ^13.0.0 version: 13.0.0 fastify: - specifier: ^4.11.0 - version: 4.11.0 + specifier: ^4.15.0 + version: 4.15.0 framer-motion: specifier: ^6.5.1 version: 6.5.1(react-dom@17.0.2)(react@17.0.2) @@ -353,54 +353,27 @@ importers: graphql-upload: specifier: ^13.0.0 version: 13.0.0(graphql@16.6.0) - graphql-ws: - specifier: ^5.11.3 - version: 5.11.3(graphql@16.6.0) - localforage: - specifier: ^1.10.0 - version: 1.10.0 - lodash: - specifier: ^4.17.21 - version: 4.17.21 ms: - specifier: ^3.0.0-canary.1 - version: 3.0.0-canary.1 + specifier: ^2.1.3 + version: 2.1.3 next: specifier: ^12.3.4 version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) node-json-db: specifier: ^2.1.5 version: 2.1.5 - open: - specifier: ^8.4.2 - version: 8.4.2 react: specifier: ^17.0.2 version: 17.0.2 react-dom: specifier: ^17.0.2 version: 17.0.2(react@17.0.2) - react-error-boundary: - specifier: ^3.1.4 - version: 3.1.4(react@17.0.2) react-intersection-observer: specifier: ^9.4.3 version: 9.4.3(react@17.0.2) - react-native: - specifier: ^0.71.4 - version: 0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3) - react-ssr-prepass: - specifier: ^1.5.0 - version: 1.5.0(react@17.0.2) - react-use: - specifier: ^17.4.0 - version: 17.4.0(react-dom@17.0.2)(react@17.0.2) serialize-error: specifier: ^11.0.0 version: 11.0.0 - use-error-boundary: - specifier: ^2.0.6 - version: 2.0.6(react-dom@17.0.2)(react@17.0.2) devDependencies: '@babel/core': specifier: ^7.21.0 @@ -411,6 +384,9 @@ importers: '@fastify/nextjs': specifier: ^9.2.0 version: 9.2.0(next@12.3.4) + '@types/extract-files': + specifier: ^8.1.1 + version: 8.1.1 '@types/graphql-upload': specifier: ^16.0.0 version: 16.0.0 @@ -850,9 +826,18 @@ importers: just-safe-set: specifier: ^4.2.1 version: 4.2.1 + multidict: + specifier: ^1.0.3 + version: 1.0.3 object-hash: specifier: ^3.0.0 version: 3.0.0 + p-defer: + specifier: ^3.0.0 + version: 3.0.0 + p-lazy: + specifier: ^3.1.0 + version: 3.1.0 devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -992,6 +977,9 @@ importers: p-debounce: specifier: ^4.0.0 version: 4.0.0 + p-defer: + specifier: ^3.0.0 + version: 3.0.0 react-ssr-prepass: specifier: ^1.5.0 version: 1.5.0(react@17.0.2) @@ -1097,6 +1085,44 @@ importers: version: 4.9.5 publishDirectory: dist + packages/subscriptions: + dependencies: + isomorphic-ws: + specifier: ^5.0.0 + version: 5.0.0(ws@8.13.0) + ws: + specifier: ^8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + devDependencies: + '@types/node': + specifier: ^18.15.1 + version: 18.15.5 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.4 + bob-esbuild-cli: + specifier: ^4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) + esbuild: + specifier: ^0.17.10 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + publishDirectory: dist + packages: /@adobe/css-tools@4.0.1: @@ -1359,6 +1385,7 @@ packages: dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 '@babel/types': 7.21.4 + dev: true /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} @@ -1400,6 +1427,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.3.2 + dev: true /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.0): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} @@ -1415,6 +1443,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} @@ -1425,6 +1454,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.21.4 + dev: true /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} @@ -1496,6 +1526,7 @@ packages: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color + dev: true /@babel/helper-replace-supers@7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} @@ -1550,6 +1581,7 @@ packages: '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color + dev: true /@babel/helpers@7.21.0: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} @@ -1584,6 +1616,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} @@ -1595,6 +1628,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} @@ -1609,6 +1643,7 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} @@ -1634,6 +1669,7 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.21.0) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} @@ -1644,17 +1680,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) - - /@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.21.0): - resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-default-from': 7.18.6(@babel/core@7.21.0) - dev: false + dev: true /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} @@ -1665,6 +1691,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} @@ -1675,6 +1702,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} @@ -1685,6 +1713,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} @@ -1695,6 +1724,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} @@ -1705,6 +1735,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} @@ -1728,6 +1759,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} @@ -1739,6 +1771,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) + dev: true /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} @@ -1751,6 +1784,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} @@ -1765,6 +1799,7 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.21.0) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} @@ -1775,6 +1810,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.0): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -1808,6 +1844,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} @@ -1816,16 +1853,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-export-default-from@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - dev: false + dev: true /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} @@ -1834,6 +1862,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} @@ -1852,6 +1881,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.0): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -1943,6 +1973,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.0): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} @@ -1983,6 +2014,7 @@ packages: '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} @@ -2049,6 +2081,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} @@ -2058,6 +2091,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} @@ -2068,6 +2102,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} @@ -2128,6 +2163,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.0): resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} @@ -2155,6 +2191,7 @@ packages: '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} @@ -2167,6 +2204,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} @@ -2177,6 +2215,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-new-target@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} @@ -2186,6 +2225,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} @@ -2234,6 +2274,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.0): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} @@ -2243,6 +2284,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.0): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} @@ -2266,6 +2308,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 + dev: true /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} @@ -2275,23 +2318,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.0): - resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} @@ -2320,6 +2347,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} @@ -2338,21 +2366,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-transform-typescript@7.21.3(@babel/core@7.21.0): - resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.0) - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) - transitivePeerDependencies: - - supports-color - dev: false + dev: true /@babel/plugin-transform-unicode-escapes@7.18.10(@babel/core@7.21.0): resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} @@ -2362,6 +2376,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} @@ -2372,6 +2387,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-create-regexp-features-plugin': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/preset-env@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==} @@ -2457,18 +2473,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color - - /@babel/preset-flow@7.21.4(@babel/core@7.21.0): - resolution: {integrity: sha512-F24cSq4DIBmhq4OzK3dE63NHagb27OPE3eWR+HLekt4Z3Y5MzIIUGF3LlLgV0gN8vzbDViSY7HnrReNVCJXTeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) - dev: false + dev: true /@babel/preset-modules@0.1.5(@babel/core@7.21.0): resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -2481,39 +2486,11 @@ packages: '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) '@babel/types': 7.21.4 esutils: 2.0.3 - - /@babel/preset-typescript@7.21.4(@babel/core@7.21.0): - resolution: {integrity: sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) - '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.0) - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/register@7.21.0(@babel/core@7.21.0): - resolution: {integrity: sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.5 - source-map-support: 0.5.21 - dev: false + dev: true /@babel/regjsgen@0.8.0: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true /@babel/runtime@7.20.6: resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} @@ -3944,6 +3921,14 @@ packages: ajv-formats: 2.1.1(ajv@8.11.0) fast-uri: 2.1.0 + /@fastify/ajv-compiler@3.5.0: + resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} + dependencies: + ajv: 8.11.0 + ajv-formats: 2.1.1(ajv@8.11.0) + fast-uri: 2.1.0 + dev: false + /@fastify/cors@8.2.0: resolution: {integrity: sha512-qDgwpmg6C4D0D3nh8MTMuRXWyEwPnDZDBODaJv90FP2o9ukbahJByW4FtrM5Bpod5KbTf1oIExBmpItbUTQmHg==} dependencies: @@ -3961,6 +3946,12 @@ packages: dependencies: fast-json-stringify: 5.4.0 + /@fastify/fast-json-stringify-compiler@4.2.0: + resolution: {integrity: sha512-ypZynRvXA3dibfPykQN3RB5wBdEUgSGgny8Qc6k163wYPLD4mEGEDkACp+00YmqkGvIm8D/xYoHajwyEdWD/eg==} + dependencies: + fast-json-stringify: 5.4.0 + dev: false + /@fastify/nextjs@9.2.0(next@12.3.4): resolution: {integrity: sha512-javnZvkO0+HLfuHYUqNF/14mE0T01gy2gkBCiJ2IFDIvpVhFzp65ElF3c7meGAF7Osqz//6useY04+vTIxGU3A==} peerDependencies: @@ -4309,6 +4300,28 @@ packages: graphql: 17.0.0-alpha.2 graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): + resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} + engines: {node: '>=14.13.1'} + peerDependencies: + '@types/node': '*' + fastify: ^4.7.0 + graphql: '*' + graphql-ez: ^0.16.0 + peerDependenciesMeta: + fastify: + optional: true + graphql: + optional: true + dependencies: + '@fastify/cors': 8.2.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@types/node': 18.15.5 + fastify: 4.15.0 + graphql: 16.6.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + dev: false + /@graphql-ez/nextjs@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4): resolution: {integrity: sha512-oZNeAu8Kbi0QmGpyK17QIjS5Vxzn6smCjZ4qE5+OKmAeJ8iSlTJlZtUn+ALEG0DzEIFg2nPM5xTAMlKO47WdCg==} engines: {node: '>=14.13.1'} @@ -4869,11 +4882,13 @@ packages: /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: true /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 + dev: true /@humanwhocodes/config-array@0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} @@ -4961,13 +4976,6 @@ packages: - supports-color - ts-node - /@jest/create-cache-key-function@29.5.0: - resolution: {integrity: sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - dev: false - /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5104,28 +5112,6 @@ packages: transitivePeerDependencies: - supports-color - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.5 - '@types/yargs': 15.0.15 - chalk: 4.1.2 - dev: false - - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.5 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: false - /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5160,13 +5146,6 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} - dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - dev: false - /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} @@ -5729,215 +5708,9 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false - /@react-native-async-storage/async-storage@1.17.12(react-native@0.71.6): - resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} - peerDependencies: - react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 - dependencies: - merge-options: 3.0.4 - react-native: 0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3) - dev: false - - /@react-native-community/cli-clean@10.1.1: - resolution: {integrity: sha512-iNsrjzjIRv9yb5y309SWJ8NDHdwYtnCpmxZouQDyOljUdC9MwdZ4ChbtA4rwQyAwgOVfS9F/j56ML3Cslmvrxg==} - dependencies: - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - execa: 1.0.0 - prompts: 2.4.2 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-config@10.1.1: - resolution: {integrity: sha512-p4mHrjC+s/ayiNVG6T35GdEGdP6TuyBUg5plVGRJfTl8WT6LBfLYLk+fz/iETrEZ/YkhQIsQcEUQC47MqLNHog==} - dependencies: - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - cosmiconfig: 5.2.1 - deepmerge: 3.3.0 - glob: 7.2.3 - joi: 17.7.0 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-debugger-ui@10.0.0: - resolution: {integrity: sha512-8UKLcvpSNxnUTRy8CkCl27GGLqZunQ9ncGYhSrWyKrU9SWBJJGeZwi2k2KaoJi5FvF2+cD0t8z8cU6lsq2ZZmA==} - dependencies: - serve-static: 1.15.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@react-native-community/cli-doctor@10.2.2: - resolution: {integrity: sha512-49Ep2aQOF0PkbAR/TcyMjOm9XwBa8VQr+/Zzf4SJeYwiYLCT1NZRAVAVjYRXl0xqvq5S5mAGZZShS4AQl4WsZw==} - dependencies: - '@react-native-community/cli-config': 10.1.1 - '@react-native-community/cli-platform-ios': 10.2.1 - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - command-exists: 1.2.9 - envinfo: 7.8.1 - execa: 1.0.0 - hermes-profile-transformer: 0.0.6 - ip: 1.1.8 - node-stream-zip: 1.15.0 - ora: 5.4.1 - prompts: 2.4.2 - semver: 6.3.0 - strip-ansi: 5.2.0 - sudo-prompt: 9.2.1 - wcwidth: 1.0.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-hermes@10.2.0: - resolution: {integrity: sha512-urfmvNeR8IiO/Sd92UU3xPO+/qI2lwCWQnxOkWaU/i2EITFekE47MD6MZrfVulRVYRi5cuaFqKZO/ccOdOB/vQ==} - dependencies: - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - hermes-profile-transformer: 0.0.6 - ip: 1.1.8 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-platform-android@10.2.0: - resolution: {integrity: sha512-CBenYwGxwFdObZTn1lgxWtMGA5ms2G/ALQhkS+XTAD7KHDrCxFF9yT/fnAjFZKM6vX/1TqGI1RflruXih3kAhw==} - dependencies: - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - execa: 1.0.0 - glob: 7.2.3 - logkitty: 0.7.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-platform-ios@10.2.1: - resolution: {integrity: sha512-hz4zu4Y6eyj7D0lnZx8Mf2c2si8y+zh/zUTgCTaPPLzQD8jSZNNBtUUiA1cARm2razpe8marCZ1QbTMAGbf3mg==} - dependencies: - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - execa: 1.0.0 - fast-xml-parser: 4.1.3 - glob: 7.2.3 - ora: 5.4.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-plugin-metro@10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-sTGjZlD3OGqbF9v1ajwUIXhGmjw9NyJ/14Lo0sg7xH8Pv4qUd5ZvQ6+DWYrQn3IKFUMfGFWYyL81ovLuPylrpw==} - dependencies: - '@react-native-community/cli-server-api': 10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - execa: 1.0.0 - metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-config: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-core: 0.73.9 - metro-react-native-babel-transformer: 0.73.9(@babel/core@7.21.0) - metro-resolver: 0.73.9 - metro-runtime: 0.73.9 - readline: 1.3.0 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native-community/cli-server-api@10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-NZDo/wh4zlm8as31UEBno2bui8+ufzsZV+KN7QjEJWEM0levzBtxaD+4je0OpfhRIIkhaRm2gl/vVf7OYAzg4g==} - dependencies: - '@react-native-community/cli-debugger-ui': 10.0.0 - '@react-native-community/cli-tools': 10.1.1 - compression: 1.7.4 - connect: 3.7.0 - errorhandler: 1.5.1 - nocache: 3.0.4 - pretty-format: 26.6.2 - serve-static: 1.15.0 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native-community/cli-tools@10.1.1: - resolution: {integrity: sha512-+FlwOnZBV+ailEzXjcD8afY2ogFEBeHOw/8+XXzMgPaquU2Zly9B+8W089tnnohO3yfiQiZqkQlElP423MY74g==} - dependencies: - appdirsjs: 1.2.7 - chalk: 4.1.2 - find-up: 5.0.0 - mime: 2.6.0 - node-fetch: 2.6.7 - open: 6.4.0 - ora: 5.4.1 - semver: 6.3.0 - shell-quote: 1.7.4 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-types@10.0.0: - resolution: {integrity: sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw==} - dependencies: - joi: 17.7.0 - dev: false - - /@react-native-community/cli@10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-aZVcVIqj+OG6CrliR/Yn8wHxrvyzbFBY9cj7n0MvRw/P54QUru2nNqUTSSbqv0Qaa297yHJbe6kFDojDMSTM8Q==} - engines: {node: '>=14'} - hasBin: true - dependencies: - '@react-native-community/cli-clean': 10.1.1 - '@react-native-community/cli-config': 10.1.1 - '@react-native-community/cli-debugger-ui': 10.0.0 - '@react-native-community/cli-doctor': 10.2.2 - '@react-native-community/cli-hermes': 10.2.0 - '@react-native-community/cli-plugin-metro': 10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3) - '@react-native-community/cli-server-api': 10.1.1(bufferutil@4.0.7)(utf-8-validate@6.0.3) - '@react-native-community/cli-tools': 10.1.1 - '@react-native-community/cli-types': 10.0.0 - chalk: 4.1.2 - commander: 9.4.1 - execa: 1.0.0 - find-up: 4.1.0 - fs-extra: 8.1.0 - graceful-fs: 4.2.10 - prompts: 2.4.2 - semver: 6.3.0 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /@react-native/assets@1.0.0: - resolution: {integrity: sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==} - dev: false - - /@react-native/normalize-color@2.1.0: - resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} - dev: false - - /@react-native/polyfills@2.0.0: - resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} - dev: false - - /@repeaterjs/repeater@3.0.4: - resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} - dev: true + /@repeaterjs/repeater@3.0.4: + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + dev: true /@rollup/plugin-babel@6.0.3(@babel/core@7.21.0): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} @@ -5983,12 +5756,15 @@ packages: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 + dev: true /@sideway/formula@3.0.0: resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} + dev: true /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: true /@sinclair/typebox@0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} @@ -6298,7 +6074,7 @@ packages: /@types/extract-files@8.1.1: resolution: {integrity: sha512-dMJJqBqyhsfJKuK7p7HyyNmki7qj1AlwhUKWx6KrU7i1K2T2SPsUsSUTWFmr/sEM1q8rfR8j5IyUmYrDbrhfjQ==} - dev: false + dev: true /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} @@ -6559,18 +6335,6 @@ packages: /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - /@types/yargs@15.0.15: - resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: false - - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: false - /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: @@ -6738,10 +6502,6 @@ packages: dependencies: event-target-shim: 5.0.1 - /absolute-path@0.0.0: - resolution: {integrity: sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==} - dev: false - /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} @@ -6751,6 +6511,7 @@ packages: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + dev: true /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -6870,10 +6631,6 @@ packages: resolution: {integrity: sha512-PlG7yCBfV+dvBWRJBFb/v9m8N7lZcBTFdYNV1WIQfHW7w/sU8yat35uxGoAQ9K7XkOHNpRF0wdyRqmGwtro0bg==} dev: false - /anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - dev: false - /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -6898,19 +6655,6 @@ packages: type-fest: 3.6.1 dev: false - /ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} - dependencies: - colorette: 1.4.0 - slice-ansi: 2.1.0 - strip-ansi: 5.2.0 - dev: false - - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -6947,10 +6691,6 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 - /appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - dev: false - /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -6993,21 +6733,6 @@ packages: deep-equal: 2.0.5 dev: true - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: false - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: false - /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} @@ -7031,11 +6756,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: false - /array.prototype.flat@1.3.0: resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} @@ -7069,46 +6789,15 @@ packages: /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: false - - /ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} - dependencies: - tslib: 2.5.0 - dev: false - - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: false - /astring@1.8.3: resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} hasBin: true dev: false - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false - - /async@3.2.4: - resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} - dev: false - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false - /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} @@ -7215,14 +6904,6 @@ packages: - debug dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.21.0): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - dev: false - /babel-jest@29.5.0(@babel/core@7.21.0): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7289,6 +6970,7 @@ packages: semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.0): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} @@ -7300,6 +6982,7 @@ packages: core-js-compat: 3.30.0 transitivePeerDependencies: - supports-color + dev: true /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.0): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} @@ -7310,6 +6993,7 @@ packages: '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) transitivePeerDependencies: - supports-color + dev: true /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} @@ -7392,19 +7076,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: false - /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -7421,14 +7092,6 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.0 - dev: false - /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true @@ -7572,24 +7235,6 @@ packages: balanced-match: 1.0.2 dev: true - /braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -7626,13 +7271,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -7675,6 +7313,7 @@ packages: /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} + dev: true /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -7699,21 +7338,6 @@ packages: yargs-parser: 20.2.9 dev: true - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: false - /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -7721,25 +7345,6 @@ packages: get-intrinsic: 1.1.3 dev: true - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} - dependencies: - callsites: 2.0.0 - dev: false - - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} - dependencies: - caller-callsite: 2.0.0 - dev: false - - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: false - /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -7937,10 +7542,6 @@ packages: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} dev: true - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} @@ -7952,16 +7553,6 @@ packages: /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: false - /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false @@ -7987,18 +7578,6 @@ packages: engines: {node: '>=10'} dev: true - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - dev: false - - /cli-spinners@2.8.0: - resolution: {integrity: sha512-/eG5sJcvEIwxcdYM86k5tPwn0MUzkX5YY3eImTGpJOZgVe4SdTMY14vQpcxgBzJ0wXwAYrS8E+c3uHeK4JNyzQ==} - engines: {node: '>=6'} - dev: false - /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8039,18 +7618,10 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} - dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: false - /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + dev: true /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -8066,14 +7637,6 @@ packages: /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: false - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -8113,10 +7676,6 @@ packages: color-string: 1.9.1 dev: false - /colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: false - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -8128,19 +7687,11 @@ packages: resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} dev: false - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: false - /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} dev: true - /commander@2.13.0: - resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} - dev: false - /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false @@ -8168,6 +7719,7 @@ packages: /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} + dev: true /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -8177,19 +7729,12 @@ packages: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false - - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: false - /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: true /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} @@ -8204,6 +7749,7 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: true /compute-scroll-into-view@1.0.14: resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} @@ -8242,20 +7788,8 @@ packages: yargs: 17.6.2 dev: true - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + /constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 tslib: 2.5.0 @@ -8296,11 +7830,6 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: false - /copy-to-clipboard@3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} dependencies: @@ -8317,16 +7846,13 @@ packages: resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} dependencies: browserslist: 4.21.5 + dev: true /core-js@3.26.0: resolution: {integrity: sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==} requiresBuild: true dev: false - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -8335,16 +7861,6 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} - dependencies: - import-fresh: 2.0.0 - is-directory: 0.3.1 - js-yaml: 3.14.1 - parse-json: 4.0.0 - dev: false - /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -8410,17 +7926,6 @@ packages: which: 1.3.1 dev: true - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: false - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -9050,10 +8555,6 @@ packages: time-zone: 1.0.0 dev: true - /dayjs@1.11.7: - resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} - dev: false - /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -9063,6 +8564,7 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: true /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -9102,11 +8604,6 @@ packages: character-entities: 2.0.2 dev: false - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false - /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -9139,11 +8636,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge@3.3.0: - resolution: {integrity: sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==} - engines: {node: '>=0.10.0'} - dev: false - /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} @@ -9170,10 +8662,12 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 + dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + dev: true /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} @@ -9188,28 +8682,6 @@ packages: object-keys: 1.1.1 dev: true - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: false - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: false - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: false - /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false @@ -9239,10 +8711,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - dev: false - /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -9251,19 +8719,12 @@ packages: /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dev: true /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} - /deprecated-react-native-prop-types@3.0.1: - resolution: {integrity: sha512-J0jCJcsk4hMlIb7xwOZKLfMpuJn6l8UtrPEzzQV5ewz5gvKNYakhBuq9h2rWX7YwHHJZFhU5W8ye7dB9oN8VcQ==} - dependencies: - '@react-native/normalize-color': 2.1.0 - invariant: 2.2.4 - prop-types: 15.8.1 - dev: false - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -9272,6 +8733,7 @@ packages: /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} @@ -9378,6 +8840,7 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} @@ -9405,11 +8868,13 @@ packages: /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + dev: true /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 + dev: true /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -9423,12 +8888,6 @@ packages: engines: {node: '>=0.12'} dev: true - /envinfo@7.8.1: - resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} - engines: {node: '>=4'} - hasBin: true - dev: false - /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -9440,14 +8899,6 @@ packages: stackframe: 1.3.4 dev: false - /errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} - dependencies: - accepts: 1.3.8 - escape-html: 1.0.3 - dev: false - /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} @@ -9541,6 +8992,7 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -9744,10 +9196,12 @@ packages: /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + dev: true /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + dev: true /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} @@ -9783,19 +9237,6 @@ packages: strip-eof: 1.0.0 dev: true - /execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: false - /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} @@ -9829,21 +9270,6 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - /expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9900,14 +9326,6 @@ packages: is-extendable: 0.1.1 dev: false - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: false - /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false @@ -9925,22 +9343,6 @@ packages: tmp: 0.0.33 dev: true - /extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /extract-files@13.0.0: resolution: {integrity: sha512-FXD+2Tsr8Iqtm3QZy1Zmwscca7Jx3mMC5Crr+sEP1I303Jy1CYMuYCm7hRTplFNg3XdUavErkxnTzpaqdSoi6g==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} @@ -9948,6 +9350,10 @@ packages: is-plain-obj: 4.1.0 dev: false + /fast-content-type-parse@1.0.0: + resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} + dev: false + /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} @@ -10007,13 +9413,6 @@ packages: punycode: 1.4.1 dev: true - /fast-xml-parser@4.1.3: - resolution: {integrity: sha512-LsNDahCiCcJPe8NO7HijcnukHB24tKbfDDA5IILx9dmW3Frb52lhbeX6MPNUSvyGNfav2VTYpJ/OqkRoVLrh2Q==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - /fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} dev: false @@ -10042,6 +9441,28 @@ packages: transitivePeerDependencies: - supports-color + /fastify@4.15.0: + resolution: {integrity: sha512-m/CaRN8nf5uyYdrDe2qqq+0z3oGyE+A++qlKQoLJTI4WI0nWK9D6R3FxXQ3MVwt/md977GMR4F43pE9oqrS2zw==} + dependencies: + '@fastify/ajv-compiler': 3.5.0 + '@fastify/error': 3.0.0 + '@fastify/fast-json-stringify-compiler': 4.2.0 + abstract-logging: 2.0.1 + avvio: 8.2.0 + fast-content-type-parse: 1.0.0 + find-my-way: 7.6.0 + light-my-request: 5.6.1 + pino: 8.7.0 + process-warning: 2.0.0 + proxy-addr: 2.0.7 + rfdc: 1.3.0 + secure-json-parse: 2.5.0 + semver: 7.3.8 + tiny-lru: 10.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: @@ -10100,37 +9521,12 @@ packages: token-types: 5.0.1 dev: true - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: false - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -10146,15 +9542,6 @@ packages: - supports-color dev: true - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - dev: false - /find-my-way@7.3.1: resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} engines: {node: '>=14'} @@ -10163,15 +9550,17 @@ packages: fast-querystring: 1.0.0 safe-regex2: 2.0.0 - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + /find-my-way@7.6.0: + resolution: {integrity: sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ==} + engines: {node: '>=14'} + dependencies: + fast-deep-equal: 3.1.3 + fast-querystring: 1.0.0 + safe-regex2: 2.0.0 dev: false - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - dependencies: - locate-path: 3.0.0 + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false /find-up@4.1.0: @@ -10187,6 +9576,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -10214,11 +9604,6 @@ packages: /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /flow-parser@0.185.2: - resolution: {integrity: sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==} - engines: {node: '>=0.4.0'} - dev: false - /focus-lock@0.9.2: resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} engines: {node: '>=10'} @@ -10262,11 +9647,6 @@ packages: is-callable: 1.2.7 dev: true - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: false - /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -10311,13 +9691,6 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: false - /framer-motion@6.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: @@ -10351,6 +9724,7 @@ packages: /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + dev: true /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} @@ -10390,6 +9764,7 @@ packages: graceful-fs: 4.2.10 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -10448,13 +9823,6 @@ packages: engines: {node: '>=12'} dev: true - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: false - /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -10474,11 +9842,6 @@ packages: get-intrinsic: 1.1.3 dev: true - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: false - /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: false @@ -10707,37 +10070,6 @@ packages: has-symbols: 1.0.3 dev: true - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: false - - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: false - - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: false - - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: false - /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -10808,23 +10140,6 @@ packages: capital-case: 1.0.4 tslib: 2.5.0 - /hermes-estree@0.8.0: - resolution: {integrity: sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==} - dev: false - - /hermes-parser@0.8.0: - resolution: {integrity: sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==} - dependencies: - hermes-estree: 0.8.0 - dev: false - - /hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} - dependencies: - source-map: 0.7.4 - dev: false - /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false @@ -10910,6 +10225,7 @@ packages: setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 + dev: true /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} @@ -10989,16 +10305,6 @@ packages: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - /image-size@0.6.3: - resolution: {integrity: sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==} - engines: {node: '>=4.0'} - hasBin: true - dev: false - - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - /immer@9.0.12: resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} dev: false @@ -11007,14 +10313,6 @@ packages: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} - dependencies: - caller-path: 2.0.0 - resolve-from: 3.0.0 - dev: false - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -11090,10 +10388,6 @@ packages: dependencies: loose-envify: 1.4.0 - /ip@1.1.8: - resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} - dev: false - /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -11110,20 +10404,6 @@ packages: is-relative: 1.0.0 is-windows: 1.0.2 - /is-accessor-descriptor@0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /is-accessor-descriptor@1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: false @@ -11170,10 +10450,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false - /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -11207,20 +10483,6 @@ packages: dependencies: has: 1.0.3 - /is-data-descriptor@0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /is-data-descriptor@1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: false - /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -11232,33 +10494,11 @@ packages: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false - /is-descriptor@0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: false - - /is-descriptor@1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: false - - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: false - /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true + dev: true /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -11275,22 +10515,10 @@ packages: engines: {node: '>=0.10.0'} dev: false - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: false - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false - /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -11322,11 +10550,6 @@ packages: is-docker: 3.0.0 dev: true - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false - /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: @@ -11348,13 +10571,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -11379,23 +10595,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: false - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} @@ -11444,11 +10648,6 @@ packages: call-bind: 1.0.2 dev: true - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: false - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -11496,11 +10695,6 @@ packages: dependencies: unc-path-regex: 0.1.2 - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: false - /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} @@ -11532,20 +10726,12 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false + dev: true /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -11554,13 +10740,6 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: false - /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -11580,6 +10759,14 @@ packages: dependencies: ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + /isomorphic-ws@5.0.0(ws@8.13.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + dev: false + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -11783,11 +10970,6 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 - /jest-get-type@26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} - dev: false - /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11859,11 +11041,6 @@ packages: dependencies: jest-resolve: 29.5.0 - /jest-regex-util@27.5.1: - resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: false - /jest-regex-util@29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11953,14 +11130,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-serializer@27.5.1: - resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/node': 18.15.5 - graceful-fs: 4.2.10 - dev: false - /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11991,18 +11160,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-util@27.5.1: - resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - '@types/node': 18.15.5 - chalk: 4.1.2 - ci-info: 3.7.1 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: false - /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12014,18 +11171,6 @@ packages: graceful-fs: 4.2.10 picomatch: 2.3.1 - /jest-validate@26.6.2: - resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 26.3.0 - leven: 3.1.0 - pretty-format: 26.6.2 - dev: false - /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12080,15 +11225,6 @@ packages: jest-util: 29.5.0 string-length: 4.0.2 - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.15.5 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: false - /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12125,6 +11261,7 @@ packages: '@sideway/address': 4.1.4 '@sideway/formula': 3.0.0 '@sideway/pinpoint': 2.0.0 + dev: true /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} @@ -12155,40 +11292,6 @@ packages: dependencies: argparse: 2.0.1 - /jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - dev: false - - /jscodeshift@0.13.1(@babel/preset-env@7.21.4): - resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 - dependencies: - '@babel/core': 7.21.0 - '@babel/parser': 7.21.2 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) - '@babel/preset-env': 7.21.4(@babel/core@7.21.0) - '@babel/preset-flow': 7.21.4(@babel/core@7.21.0) - '@babel/preset-typescript': 7.21.4(@babel/core@7.21.0) - '@babel/register': 7.21.0(@babel/core@7.21.0) - babel-core: 7.0.0-bridge.0(@babel/core@7.21.0) - chalk: 4.1.2 - flow-parser: 0.185.2 - graceful-fs: 4.2.10 - micromatch: 3.1.10 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.20.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - dev: false - /jsdom@20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} engines: {node: '>=14'} @@ -12233,16 +11336,13 @@ packages: /jsesc@0.5.0: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -12270,6 +11370,7 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 + dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -12302,25 +11403,6 @@ packages: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: false - - /kind-of@5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: false - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -12353,12 +11435,6 @@ packages: type-check: 0.4.0 dev: true - /lie@3.1.1: - resolution: {integrity: sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=} - dependencies: - immediate: 3.0.6 - dev: false - /light-my-request@5.6.1: resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} dependencies: @@ -12392,20 +11468,6 @@ packages: strip-bom: 3.0.0 dev: true - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - dependencies: - lie: 3.1.1 - dev: false - - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - dev: false - /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -12417,6 +11479,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -12430,6 +11493,7 @@ packages: /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true /lodash.flatmap@4.5.0: resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} @@ -12453,10 +11517,6 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: false - /lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} dev: false @@ -12464,23 +11524,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: false - - /logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true - dependencies: - ansi-fragments: 0.2.1 - dayjs: 1.11.7 - yargs: 15.4.1 - dev: false - /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false @@ -12529,14 +11572,6 @@ packages: hasBin: true dev: true - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - dependencies: - pify: 4.0.1 - semver: 5.7.1 - dev: false - /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -12576,13 +11611,6 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: false - /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} @@ -12848,13 +11876,6 @@ packages: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} - dependencies: - is-plain-obj: 2.1.0 - dev: false - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -12881,305 +11902,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /metro-babel-transformer@0.73.9: - resolution: {integrity: sha512-DlYwg9wwYIZTHtic7dyD4BP0SDftoltZ3clma76nHu43blMWsCnrImHeHsAVne3XsQ+RJaSRxhN5nkG2VyVHwA==} - dependencies: - '@babel/core': 7.21.0 - hermes-parser: 0.8.0 - metro-source-map: 0.73.9 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-cache-key@0.73.9: - resolution: {integrity: sha512-uJg+6Al7UoGIuGfoxqPBy6y1Ewq7Y8/YapGYIDh6sohInwt/kYKnPZgLDYHIPvY2deORnQ/2CYo4tOeBTnhCXQ==} - dev: false - - /metro-cache@0.73.9: - resolution: {integrity: sha512-upiRxY8rrQkUWj7ieACD6tna7xXuXdu2ZqrheksT79ePI0aN/t0memf6WcyUtJUMHZetke3j+ppELNvlmp3tOw==} - dependencies: - metro-core: 0.73.9 - rimraf: 3.0.2 - dev: false - - /metro-config@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-NiWl1nkYtjqecDmw77tbRbXnzIAwdO6DXGZTuKSkH+H/c1NKq1eizO8Fe+NQyFtwR9YLqn8Q0WN1nmkwM1j8CA==} - dependencies: - cosmiconfig: 5.2.1 - jest-validate: 26.6.2 - metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-cache: 0.73.9 - metro-core: 0.73.9 - metro-runtime: 0.73.9 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro-core@0.73.9: - resolution: {integrity: sha512-1NTs0IErlKcFTfYyRT3ljdgrISWpl1nys+gaHkXapzTSpvtX9F1NQNn5cgAuE+XIuTJhbsCdfIJiM2JXbrJQaQ==} - dependencies: - lodash.throttle: 4.1.1 - metro-resolver: 0.73.9 - dev: false - - /metro-file-map@0.73.9: - resolution: {integrity: sha512-R/Wg3HYeQhYY3ehWtfedw8V0ne4lpufG7a21L3GWer8tafnC9pmjoCKEbJz9XZkVj9i1FtxE7UTbrtZNeIILxQ==} - dependencies: - abort-controller: 3.0.0 - anymatch: 3.1.2 - debug: 2.6.9 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - invariant: 2.2.4 - jest-regex-util: 27.5.1 - jest-serializer: 27.5.1 - jest-util: 27.5.1 - jest-worker: 27.5.1 - micromatch: 4.0.5 - nullthrows: 1.1.1 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-hermes-compiler@0.73.9: - resolution: {integrity: sha512-5B3vXIwQkZMSh3DQQY23XpTCpX9kPLqZbA3rDuAcbGW0tzC3f8dCenkyBb0GcCzyTDncJeot/A7oVCVK6zapwg==} - dev: false - - /metro-inspector-proxy@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-B3WrWZnlYhtTrv0IaX3aUAhi2qVILPAZQzb5paO1e+xrz4YZHk9c7dXv7qe7B/IQ132e3w46y3AL7rFo90qVjA==} - hasBin: true - dependencies: - connect: 3.7.0 - debug: 2.6.9 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - yargs: 17.6.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /metro-minify-terser@0.73.9: - resolution: {integrity: sha512-MTGPu2qV5qtzPJ2SqH6s58awHDtZ4jd7lmmLR+7TXDwtZDjIBA0YVfI0Zak2Haby2SqoNKrhhUns/b4dPAQAVg==} - dependencies: - terser: 5.16.8 - dev: false - - /metro-minify-uglify@0.73.9: - resolution: {integrity: sha512-gzxD/7WjYcnCNGiFJaA26z34rjOp+c/Ft++194Wg91lYep3TeWQ0CnH8t2HRS7AYDHU81SGWgvD3U7WV0g4LGA==} - dependencies: - uglify-es: 3.3.9 - dev: false - - /metro-react-native-babel-preset@0.73.9(@babel/core@7.21.0): - resolution: {integrity: sha512-AoD7v132iYDV4K78yN2OLgTPwtAKn0XlD2pOhzyBxiI8PeXzozhbKyPV7zUOJUPETj+pcEVfuYj5ZN/8+bhbCw==} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-export-default-from': 7.18.10(@babel/core@7.21.0) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-export-default-from': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.0) - '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.0) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-typescript': 7.21.3(@babel/core@7.21.0) - '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.0) - '@babel/template': 7.20.7 - react-refresh: 0.4.3 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-react-native-babel-transformer@0.73.9(@babel/core@7.21.0): - resolution: {integrity: sha512-DSdrEHuQ22ixY7DyipyKkIcqhOJrt5s6h6X7BYJCP9AMUfXOwLe2biY3BcgJz5GOXv8/Akry4vTCvQscVS1otQ==} - peerDependencies: - '@babel/core': '*' - dependencies: - '@babel/core': 7.21.0 - babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) - hermes-parser: 0.8.0 - metro-babel-transformer: 0.73.9 - metro-react-native-babel-preset: 0.73.9(@babel/core@7.21.0) - metro-source-map: 0.73.9 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-resolver@0.73.9: - resolution: {integrity: sha512-Ej3wAPOeNRPDnJmkK0zk7vJ33iU07n+oPhpcf5L0NFkWneMmSM2bflMPibI86UjzZGmRfn0AhGhs8yGeBwQ/Xg==} - dependencies: - absolute-path: 0.0.0 - dev: false - - /metro-runtime@0.73.9: - resolution: {integrity: sha512-d5Hs83FpKB9r8q8Vb95+fa6ESpwysmPr4lL1I2rM2qXAFiO7OAPT9Bc23WmXgidkBtD0uUFdB2lG+H1ATz8rZg==} - dependencies: - '@babel/runtime': 7.21.0 - react-refresh: 0.4.3 - dev: false - - /metro-source-map@0.73.9: - resolution: {integrity: sha512-l4VZKzdqafipriETYR6lsrwtavCF1+CMhCOY9XbyWeTrpGSNgJQgdeJpttzEZTHQQTLR0csQo0nD1ef3zEP6IQ==} - dependencies: - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 - invariant: 2.2.4 - metro-symbolicate: 0.73.9 - nullthrows: 1.1.1 - ob1: 0.73.9 - source-map: 0.5.7 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-symbolicate@0.73.9: - resolution: {integrity: sha512-4TUOwxRHHqbEHxRqRJ3wZY5TA8xq7AHMtXrXcjegMH9FscgYztsrIG9aNBUBS+VLB6g1qc6BYbfIgoAnLjCDyw==} - engines: {node: '>=8.3'} - hasBin: true - dependencies: - invariant: 2.2.4 - metro-source-map: 0.73.9 - nullthrows: 1.1.1 - source-map: 0.5.7 - through2: 2.0.5 - vlq: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-transform-plugins@0.73.9: - resolution: {integrity: sha512-r9NeiqMngmooX2VOKLJVQrMuV7PAydbqst5bFhdVBPcFpZkxxqyzjzo+kzrszGy2UpSQBZr2P1L6OMjLHwQwfQ==} - dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - dev: false - - /metro-transform-worker@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-Rq4b489sIaTUENA+WCvtu9yvlT/C6zFMWhU4sq+97W29Zj0mPBjdk+qGT5n1ZBgtBIJzZWt1KxeYuc17f4aYtQ==} - dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/parser': 7.21.2 - '@babel/types': 7.21.4 - babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) - metro: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-babel-transformer: 0.73.9 - metro-cache: 0.73.9 - metro-cache-key: 0.73.9 - metro-hermes-compiler: 0.73.9 - metro-source-map: 0.73.9 - metro-transform-plugins: 0.73.9 - nullthrows: 1.1.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - - /metro@0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-BlYbPmTF60hpetyNdKhdvi57dSqutb+/oK0u3ni4emIh78PiI0axGo7RfdsZ/mn3saASXc94tDbpC5yn7+NpEg==} - hasBin: true - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 - absolute-path: 0.0.0 - accepts: 1.3.8 - async: 3.2.4 - chalk: 4.1.2 - ci-info: 2.0.0 - connect: 3.7.0 - debug: 2.6.9 - denodeify: 1.2.1 - error-stack-parser: 2.1.4 - graceful-fs: 4.2.10 - hermes-parser: 0.8.0 - image-size: 0.6.3 - invariant: 2.2.4 - jest-worker: 27.5.1 - lodash.throttle: 4.1.1 - metro-babel-transformer: 0.73.9 - metro-cache: 0.73.9 - metro-cache-key: 0.73.9 - metro-config: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-core: 0.73.9 - metro-file-map: 0.73.9 - metro-hermes-compiler: 0.73.9 - metro-inspector-proxy: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - metro-minify-terser: 0.73.9 - metro-minify-uglify: 0.73.9 - metro-react-native-babel-preset: 0.73.9(@babel/core@7.21.0) - metro-resolver: 0.73.9 - metro-runtime: 0.73.9 - metro-source-map: 0.73.9 - metro-symbolicate: 0.73.9 - metro-transform-plugins: 0.73.9 - metro-transform-worker: 0.73.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - mime-types: 2.1.35 - node-fetch: 2.6.7 - nullthrows: 1.1.1 - rimraf: 3.0.2 - serialize-error: 2.1.0 - source-map: 0.5.7 - strip-ansi: 6.0.1 - temp: 0.8.3 - throat: 5.0.0 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - yargs: 17.6.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: false - /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: @@ -13512,27 +12234,6 @@ packages: - supports-color dev: false - /micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -13566,12 +12267,7 @@ packages: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true - - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false + dev: true /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -13616,26 +12312,11 @@ packages: engines: {node: '>=8'} dev: true - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: false - /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.7 - dev: false - /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -13673,6 +12354,7 @@ packages: /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -13680,10 +12362,10 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /ms@3.0.0-canary.1: - resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} - engines: {node: '>=12.13'} - dev: false + /multidict@1.0.3: + resolution: {integrity: sha512-2G9aLtsnD8Gv4maZrQhYJZEW0By1k3s5cea2BSPkHV8lOB2FIytfjISimGGAJh550a7Eb3wgz8b1pNU7/uEEug==} + dependencies: + multidict: link:../multidict /multimatch@4.0.0: resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} @@ -13719,25 +12401,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} dependencies: @@ -13754,10 +12417,7 @@ packages: /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + dev: true /next-i18next@13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2): resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} @@ -13851,32 +12511,16 @@ packages: - '@babel/core' - babel-plugin-macros - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: false - /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.5.0 - /nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - dev: false - /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} - dependencies: - minimatch: 3.1.2 - dev: false - /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -13923,11 +12567,6 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - /node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - dev: false - /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} @@ -13985,13 +12624,6 @@ packages: path-key: 1.0.0 dev: true - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: false - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -14009,23 +12641,10 @@ packages: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true - /ob1@0.73.9: - resolution: {integrity: sha512-kHOzCOFXmAM26fy7V/YuXNKne2TyRiXbFAvPBIbuedJCZZWQZHLdPzMeXJI4Egt6IcfDttRzN3jQ90wOwq1iNw==} - dev: false - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: false - /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} @@ -14057,13 +12676,6 @@ packages: engines: {node: '>= 10.12.0'} dev: false - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -14074,35 +12686,23 @@ packages: object-keys: 1.1.1 dev: true - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: false - /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 + dev: true /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} + dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -14127,13 +12727,6 @@ packages: tempy: 3.0.0 dev: true - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} - dependencies: - is-wsl: 1.1.0 - dev: false - /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -14141,6 +12734,7 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + dev: true /open@9.0.0: resolution: {integrity: sha512-yerrN5WPzgwuE3T6rxAkT1UuMLDzs4Szpug7hy9s4gru3iOTnaU0yKc1AYOVYrBzvykce5gUdr9RPNB4R+Zc/A==} @@ -14181,24 +12775,10 @@ packages: word-wrap: 1.2.3 dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.8.0 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - dev: false - /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -14214,6 +12794,10 @@ packages: engines: {node: '>=4'} dev: true + /p-defer@3.0.0: + resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} + engines: {node: '>=8'} + /p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -14228,11 +12812,6 @@ packages: p-map: 2.1.0 dev: true - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: false - /p-lazy@3.1.0: resolution: {integrity: sha512-sCJn0Cdahs6G6SX9+DUihVFUhrzDEduzE5xeViVBGtoqy5dBWko7W8T6Kk6TjR2uevRXJO7CShfWrqdH5s3w3g==} engines: {node: '>=8'} @@ -14256,13 +12835,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - dependencies: - p-limit: 2.3.0 - dev: false - /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -14274,6 +12846,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -14336,14 +12909,6 @@ packages: map-cache: 0.2.2 path-root: 0.1.1 - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: false - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -14371,6 +12936,7 @@ packages: /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + dev: true /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -14378,22 +12944,12 @@ packages: no-case: 3.0.4 tslib: 2.5.0 - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: false - /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -14416,11 +12972,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: false - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -14486,6 +13037,7 @@ packages: /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + dev: true /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} @@ -14524,13 +13076,6 @@ packages: load-json-file: 7.0.1 dev: true - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - dependencies: - find-up: 3.0.0 - dev: false - /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -14560,11 +13105,6 @@ packages: tslib: 2.5.0 dev: false - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: false - /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} @@ -14668,16 +13208,6 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} - dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 - dev: false - /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -14723,10 +13253,6 @@ packages: prettier: 2.8.6 dev: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - /process-warning@2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} @@ -14739,12 +13265,6 @@ packages: dependencies: asap: 2.0.6 - /promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} - dependencies: - asap: 2.0.6 - dev: false - /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} @@ -14792,6 +13312,7 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + dev: true /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -14866,6 +13387,7 @@ packages: /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + dev: true /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -14904,16 +13426,6 @@ packages: react: 17.0.2 dev: false - /react-devtools-core@4.27.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-dvZjrAJjahd6NNl7dDwEk5TyHsWJxDpYL7VnD9jdEr98EEEsVhw9G8JDX54Nrb3XIIOBlJDpjo3AuBuychX9zg==} - dependencies: - shell-quote: 1.7.4 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - /react-dom@17.0.2(react@17.0.2): resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: @@ -14932,6 +13444,7 @@ packages: dependencies: '@babel/runtime': 7.20.6 react: 17.0.2 + dev: true /react-fast-compare@3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} @@ -15029,83 +13542,17 @@ packages: react: 17.0.2 dev: false - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: false - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - /react-native-codegen@0.71.5(@babel/preset-env@7.21.4): - resolution: {integrity: sha512-rfsuc0zkuUuMjFnrT55I1mDZ+pBRp2zAiRwxck3m6qeGJBGK5OV5JH66eDQ4aa+3m0of316CqrJDRzVlYufzIg==} - dependencies: - '@babel/parser': 7.21.2 - flow-parser: 0.185.2 - jscodeshift: 0.13.1(@babel/preset-env@7.21.4) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - dev: false - - /react-native-gradle-plugin@0.71.17: - resolution: {integrity: sha512-OXXYgpISEqERwjSlaCiaQY6cTY5CH6j73gdkWpK0hedxtiWMWgH+i5TOi4hIGYitm9kQBeyDu+wim9fA8ROFJA==} - dev: false - - /react-native@0.71.6(@babel/core@7.21.0)(@babel/preset-env@7.21.4)(bufferutil@4.0.7)(react@17.0.2)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-gHrDj7qaAaiE41JwaFCh3AtvOqOLuRgZtHKzNiwxakG/wvPAYmG73ECfWHGxjxIx/QT17Hp37Da3ipCei/CayQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - react: 18.2.0 - dependencies: - '@jest/create-cache-key-function': 29.5.0 - '@react-native-community/cli': 10.2.2(@babel/core@7.21.0)(bufferutil@4.0.7)(utf-8-validate@6.0.3) - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-platform-ios': 10.2.1 - '@react-native/assets': 1.0.0 - '@react-native/normalize-color': 2.1.0 - '@react-native/polyfills': 2.0.0 - abort-controller: 3.0.0 - anser: 1.4.10 - base64-js: 1.5.1 - deprecated-react-native-prop-types: 3.0.1 - event-target-shim: 5.0.1 - invariant: 2.2.4 - jest-environment-node: 29.5.0 - jsc-android: 250231.0.0 - memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.73.9(@babel/core@7.21.0) - metro-runtime: 0.73.9 - metro-source-map: 0.73.9 - mkdirp: 0.5.6 - nullthrows: 1.1.1 - pretty-format: 26.6.2 - promise: 8.3.0 - react: 17.0.2 - react-devtools-core: 4.27.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) - react-native-codegen: 0.71.5(@babel/preset-env@7.21.4) - react-native-gradle-plugin: 0.71.17 - react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0(react@17.0.2) - regenerator-runtime: 0.13.11 - scheduler: 0.23.0 - stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) - whatwg-fetch: 3.6.2 - ws: 6.2.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-paginate@7.1.5(react@17.0.2): resolution: {integrity: sha512-CpyWSwsIIsFhWAQvmXDWuEl+yzfzisgvsUoZTj2IR1mFvm9oPTmeNBFc1wg8/i6ASmETeOmOnc78/U/MXyjd0w==} peerDependencies: @@ -15133,11 +13580,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-refresh@0.4.3: - resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} - engines: {node: '>=0.10.0'} - dev: false - /react-remove-scroll-bar@2.3.4(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} @@ -15181,6 +13623,7 @@ packages: object-assign: 4.1.1 react: 17.0.2 react-is: 18.2.0 + dev: true /react-ssr-prepass@1.5.0(react@17.0.2): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} @@ -15317,18 +13760,6 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -15336,6 +13767,7 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: true /readable-stream@4.2.0: resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} @@ -15359,24 +13791,10 @@ packages: dependencies: picomatch: 2.3.1 - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false - /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - /recast@0.20.5: - resolution: {integrity: sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==} - engines: {node: '>= 4'} - dependencies: - ast-types: 0.14.2 - esprima: 4.0.1 - source-map: 0.6.1 - tslib: 2.5.0 - dev: false - /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -15405,9 +13823,11 @@ packages: engines: {node: '>=4'} dependencies: regenerate: 1.4.2 + dev: true /regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} @@ -15416,14 +13836,7 @@ packages: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: '@babel/runtime': 7.21.0 - - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: false + dev: true /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} @@ -15449,6 +13862,7 @@ packages: regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + dev: true /registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} @@ -15469,6 +13883,7 @@ packages: hasBin: true dependencies: jsesc: 0.5.0 + dev: true /rehype-slug@5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} @@ -15547,16 +13962,6 @@ packages: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: false - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: false - - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -15582,11 +13987,6 @@ packages: dependencies: resolve-from: 5.0.0 - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: false - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -15595,11 +13995,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: false - /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} @@ -15612,19 +14007,6 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: false - - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: false - /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} @@ -15644,18 +14026,6 @@ packages: resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} dev: false - /rimraf@2.2.8: - resolution: {integrity: sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==} - hasBin: true - dev: false - - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: false - /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -15731,9 +14101,11 @@ packages: /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -15748,12 +14120,6 @@ packages: dependencies: ret: 0.2.2 - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: false - /safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} @@ -15774,12 +14140,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} - dependencies: - loose-envify: 1.4.0 - dev: false - /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} @@ -15804,6 +14164,7 @@ packages: /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true + dev: true /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} @@ -15835,6 +14196,7 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: true /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -15850,11 +14212,6 @@ packages: type-fest: 2.19.0 dev: false - /serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - dev: false - /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} @@ -15885,6 +14242,7 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color + dev: true /serve@14.2.0: resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} @@ -15917,34 +14275,18 @@ packages: engines: {node: '>=6.9'} dev: false - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: false - /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: false - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 + dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -15955,6 +14297,7 @@ packages: /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} + dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -15962,6 +14305,7 @@ packages: /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} + dev: true /shiki-renderer-hast@1.1.5(shiki@0.10.1): resolution: {integrity: sha512-XOHX0/mIRJZnqPNGoyyJ9bUrqUwj/tLUJQ5SuU/UkQLTiSJjiHaCP17HRB7/VSQoor4+WJF3QkT8BXbipyJN0Q==} @@ -16038,15 +14382,6 @@ packages: engines: {node: '>=14.16'} dev: false - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} - dependencies: - ansi-styles: 3.2.1 - astral-regex: 1.0.0 - is-fullwidth-code-point: 2.0.0 - dev: false - /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -16074,38 +14409,6 @@ packages: dot-case: 3.0.4 tslib: 2.5.0 - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: false - - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: false - /sonic-boom@3.2.0: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} dependencies: @@ -16115,35 +14418,12 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: false - /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: false - - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false - /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} @@ -16205,13 +14485,6 @@ packages: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: false - /split2@4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} @@ -16261,21 +14534,6 @@ packages: stacktrace-gps: 3.1.2 dev: false - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - dependencies: - type-fest: 0.7.1 - dev: false - - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: false - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -16284,6 +14542,7 @@ packages: /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + dev: true /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} @@ -16364,16 +14623,11 @@ packages: es-abstract: 1.20.4 dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 + dev: true /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -16382,13 +14636,6 @@ packages: character-entities-legacy: 3.0.0 dev: false - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - dependencies: - ansi-regex: 4.1.1 - dev: false - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -16418,6 +14665,7 @@ packages: /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} + dev: true /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} @@ -16446,10 +14694,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} @@ -16505,10 +14749,6 @@ packages: symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - dev: false - /supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -16614,21 +14854,6 @@ packages: engines: {node: '>=14.16'} dev: true - /temp@0.8.3: - resolution: {integrity: sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==} - engines: {'0': node >=0.8.0} - dependencies: - os-tmpdir: 1.0.2 - rimraf: 2.2.8 - dev: false - - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} - dependencies: - rimraf: 2.6.3 - dev: false - /tempy@3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} @@ -16644,17 +14869,6 @@ packages: engines: {node: '>=8'} dev: true - /terser@5.16.8: - resolution: {integrity: sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: false - /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -16672,22 +14886,11 @@ packages: dependencies: real-require: 0.2.0 - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false - /throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} engines: {node: '>=10'} dev: false - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - dev: false - /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -16754,37 +14957,12 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: false - - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: false - /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false @@ -17029,11 +15207,6 @@ packages: engines: {node: '>=8'} dev: true - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false - /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -17068,16 +15241,6 @@ packages: /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} - /uglify-es@3.3.9: - resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} - engines: {node: '>=0.8.0'} - deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 - hasBin: true - dependencies: - commander: 2.13.0 - source-map: 0.6.1 - dev: false - /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -17102,6 +15265,7 @@ packages: /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} + dev: true /unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} @@ -17109,14 +15273,17 @@ packages: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 + dev: true /unicode-match-property-value-ecmascript@2.1.0: resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} engines: {node: '>=4'} + dev: true /unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + dev: true /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -17130,16 +15297,6 @@ packages: vfile: 5.3.5 dev: false - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: false - /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -17231,6 +15388,7 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + dev: true /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -17252,14 +15410,7 @@ packages: /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: false + dev: true /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} @@ -17298,11 +15449,6 @@ packages: dependencies: punycode: 2.1.1 - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false - /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: @@ -17334,19 +15480,6 @@ packages: react: 17.0.2 dev: false - /use-error-boundary@2.0.6(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-AWCVKSAanLe6R/on/ZkHYtGKfXs8BQX6z/TUGYqtvkajLqQyrGKJJscbahtq8OyN8L3LqTRjJWx4gCOLmfIObw==} - peerDependencies: - react: '>=16.9.0' - react-dom: '>=16.9.0' - peerDependenciesMeta: - react-dom: - optional: true - dependencies: - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - dev: false - /use-immer@0.6.0(immer@9.0.12)(react@17.0.2): resolution: {integrity: sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ==} peerDependencies: @@ -17381,11 +15514,6 @@ packages: react: 17.0.2 patched: true - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: false - /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -17399,6 +15527,7 @@ packages: /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + dev: true /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} @@ -17516,10 +15645,6 @@ packages: fsevents: 2.3.2 dev: true - /vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - dev: false - /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} @@ -17573,6 +15698,7 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 + dev: true /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} @@ -17622,10 +15748,6 @@ packages: iconv-lite: 0.6.3 dev: true - /whatwg-fetch@3.6.2: - resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} - dev: false - /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} @@ -17692,6 +15814,7 @@ packages: hasBin: true dependencies: isexe: 2.0.0 + dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -17740,14 +15863,6 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} - dependencies: - graceful-fs: 4.2.10 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: false - /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -17763,22 +15878,6 @@ packages: signal-exit: 3.0.7 dev: true - /ws@6.2.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - bufferutil: 4.0.7 - utf-8-validate: 6.0.3 - dev: false - /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -17793,6 +15892,7 @@ packages: dependencies: bufferutil: 4.0.7 utf-8-validate: 6.0.3 + dev: true /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} @@ -17984,5 +16084,8 @@ packages: just-memoize: 2.2.0 just-safe-get: 4.2.0 just-safe-set: 4.2.1 + multidict: 1.0.3 object-hash: 3.0.0 + p-defer: 3.0.0 + p-lazy: 3.1.0 dev: true From ad388b069d0404d24b9a561e3ee59814e2383c90 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 01:34:48 +0800 Subject: [PATCH 021/122] chore(deps): upgrade multidict --- packages/gqty/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 588d54d18..bc6235e97 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -48,7 +48,7 @@ "just-memoize": "^2.2.0", "just-safe-get": "^4.2.0", "just-safe-set": "^4.2.1", - "multidict": "^1.0.3", + "multidict": "^1.0.5", "object-hash": "^3.0.0", "p-defer": "^3.0.0", "p-lazy": "^3.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 226b460c1..044d7759e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -827,8 +827,8 @@ importers: specifier: ^4.2.1 version: 4.2.1 multidict: - specifier: ^1.0.3 - version: 1.0.3 + specifier: ^1.0.5 + version: 1.0.5 object-hash: specifier: ^3.0.0 version: 3.0.0 @@ -12362,8 +12362,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multidict@1.0.3: - resolution: {integrity: sha512-2G9aLtsnD8Gv4maZrQhYJZEW0By1k3s5cea2BSPkHV8lOB2FIytfjISimGGAJh550a7Eb3wgz8b1pNU7/uEEug==} + /multidict@1.0.5: + resolution: {integrity: sha512-xdgjZeoqBQcsinnaglxw/lLTcEicRQ3PZq8/yUIXzVXQ6ZfkUDljvOm6goZ6oINkwYqna3rapMon1N4GEtQD7Q==} dependencies: multidict: link:../multidict @@ -16084,7 +16084,7 @@ packages: just-memoize: 2.2.0 just-safe-get: 4.2.0 just-safe-set: 4.2.1 - multidict: 1.0.3 + multidict: 1.0.5 object-hash: 3.0.0 p-defer: 3.0.0 p-lazy: 3.1.0 From 81528281bfbc87e67da1939468add8d17167f9ee Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 01:54:35 +0800 Subject: [PATCH 022/122] fix: tests --- examples/ez-react-next/gqty.config.cjs | 13 - examples/ez-react-next/next-env.d.ts | 6 - examples/ez-react-next/package.json | 36 - examples/ez-react-next/schema.gql | 13 - examples/ez-react-next/src/ez.generated.ts | 183 ----- examples/ez-react-next/src/gqty/index.ts | 95 --- .../src/gqty/schema.generated.ts | 75 -- .../ez-react-next/src/pages/api/graphql.ts | 48 -- examples/ez-react-next/src/pages/index.tsx | 24 - examples/ez-react-next/tsconfig.json | 102 --- examples/ez/.gitignore | 4 - examples/ez/LICENSE.md | 24 - examples/ez/README.md | 0 examples/ez/gqty.config.cjs | 14 - examples/ez/jest.config.js | 3 - examples/ez/listen.ts | 9 - examples/ez/package.json | 38 - examples/ez/schema.gql | 75 -- examples/ez/src/ez.generated.ts | 706 ------------------ examples/ez/src/generated/gqty.ts | 52 -- examples/ez/src/generated/schema.generated.ts | 238 ------ examples/ez/src/graphql/operations.gql | 37 - examples/ez/src/index.ts | 187 ----- examples/ez/test/example.test.ts | 319 -------- examples/ez/test/tsconfig.json | 5 - examples/ez/tsconfig.json | 4 - packages/cli/test/generate.test.ts | 67 +- .../cli/test/inspectWriteGenerate.test.ts | 158 ++-- packages/cli/test/writeGenerate.test.ts | 22 +- packages/logger/test/index.test.ts | 3 +- 30 files changed, 139 insertions(+), 2421 deletions(-) delete mode 100644 examples/ez-react-next/gqty.config.cjs delete mode 100644 examples/ez-react-next/next-env.d.ts delete mode 100644 examples/ez-react-next/package.json delete mode 100644 examples/ez-react-next/schema.gql delete mode 100644 examples/ez-react-next/src/ez.generated.ts delete mode 100644 examples/ez-react-next/src/gqty/index.ts delete mode 100644 examples/ez-react-next/src/gqty/schema.generated.ts delete mode 100644 examples/ez-react-next/src/pages/api/graphql.ts delete mode 100644 examples/ez-react-next/src/pages/index.tsx delete mode 100644 examples/ez-react-next/tsconfig.json delete mode 100644 examples/ez/.gitignore delete mode 100644 examples/ez/LICENSE.md delete mode 100644 examples/ez/README.md delete mode 100644 examples/ez/gqty.config.cjs delete mode 100644 examples/ez/jest.config.js delete mode 100644 examples/ez/listen.ts delete mode 100644 examples/ez/package.json delete mode 100644 examples/ez/schema.gql delete mode 100644 examples/ez/src/ez.generated.ts delete mode 100644 examples/ez/src/generated/gqty.ts delete mode 100644 examples/ez/src/generated/schema.generated.ts delete mode 100644 examples/ez/src/graphql/operations.gql delete mode 100644 examples/ez/src/index.ts delete mode 100644 examples/ez/test/example.test.ts delete mode 100644 examples/ez/test/tsconfig.json delete mode 100644 examples/ez/tsconfig.json diff --git a/examples/ez-react-next/gqty.config.cjs b/examples/ez-react-next/gqty.config.cjs deleted file mode 100644 index 8ff3234f7..000000000 --- a/examples/ez-react-next/gqty.config.cjs +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - react: true, - scalarTypes: { DateTime: 'string' }, - introspection: { endpoint: './schema.gql', headers: {} }, - destination: './src/gqty/index.ts', - subscriptions: false, - javascriptOutput: false, -}; - -module.exports = config; diff --git a/examples/ez-react-next/next-env.d.ts b/examples/ez-react-next/next-env.d.ts deleted file mode 100644 index 9bc3dd46b..000000000 --- a/examples/ez-react-next/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/examples/ez-react-next/package.json b/examples/ez-react-next/package.json deleted file mode 100644 index df7430864..000000000 --- a/examples/ez-react-next/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "example-ez-react-next", - "version": "0.0.1", - "private": true, - "scripts": { - "build": "next build", - "dev": "concurrently -r \"next dev\" \"wait-on -s 1 http://localhost:3000 && open-cli http://localhost:3000\"", - "generate": "gqty generate", - "start": "next start" - }, - "dependencies": { - "@gqty/logger": "workspace:^2.0.2", - "@gqty/react": "workspace:^2.1.1", - "@graphql-ez/nextjs": "^0.11.0", - "@graphql-ez/plugin-codegen": "^0.8.0", - "@graphql-ez/plugin-graphiql": "^0.12.0", - "@graphql-ez/plugin-schema": "^0.9.0", - "gqty": "workspace:^2.3.0", - "graphql": "^16.6.0", - "graphql-ez": "^0.16.0", - "next": "^12.3.4", - "react": "^17.0.2", - "react-dom": "^17.0.2" - }, - "devDependencies": { - "@gqty/cli": "workspace:^3.3.0", - "@types/node": "^18.15.5", - "@types/react": "^17.0.53", - "@types/react-dom": "^18.0.11", - "concurrently": "^7.6.0", - "esbuild": "^0.17.12", - "open-cli": "^7.2.0", - "typescript": "^4.9.5", - "wait-on": "^7.0.1" - } -} diff --git a/examples/ez-react-next/schema.gql b/examples/ez-react-next/schema.gql deleted file mode 100644 index 4bedda35d..000000000 --- a/examples/ez-react-next/schema.gql +++ /dev/null @@ -1,13 +0,0 @@ -schema { - query: Query -} - -type Query { - hello: String! - user: User! -} - -type User { - id: ID! - users: [User!]! -} diff --git a/examples/ez-react-next/src/ez.generated.ts b/examples/ez-react-next/src/ez.generated.ts deleted file mode 100644 index 225cb9346..000000000 --- a/examples/ez-react-next/src/ez.generated.ts +++ /dev/null @@ -1,183 +0,0 @@ -import type { GraphQLResolveInfo } from 'graphql'; -import type { EZContext } from 'graphql-ez'; -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { - [K in keyof T]: T[K]; -}; -export type MakeOptional = Omit & { - [SubKey in K]?: Maybe; -}; -export type MakeMaybe = Omit & { - [SubKey in K]: Maybe; -}; -export type ResolverFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => - | Promise> - | import('graphql-ez').DeepPartial; -/** 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'; - hello: Scalars['String']; - user: User; -}; - -export type User = { - __typename?: 'User'; - id: Scalars['ID']; - users: Array; -}; - -export type ResolverTypeWrapper = Promise | T; - -export type ResolverWithResolve = { - resolve: ResolverFn; -}; -export type Resolver = - | ResolverFn - | ResolverWithResolve; - -export type SubscriptionSubscribeFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => AsyncIterable | Promise>; - -export type SubscriptionResolveFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => TResult | Promise; - -export interface SubscriptionSubscriberObject< - TResult, - TKey extends string, - TParent, - TContext, - TArgs -> { - subscribe: SubscriptionSubscribeFn< - { [key in TKey]: TResult }, - TParent, - TContext, - TArgs - >; - resolve?: SubscriptionResolveFn< - TResult, - { [key in TKey]: TResult }, - TContext, - TArgs - >; -} - -export interface SubscriptionResolverObject { - subscribe: SubscriptionSubscribeFn; - resolve: SubscriptionResolveFn; -} - -export type SubscriptionObject< - TResult, - TKey extends string, - TParent, - TContext, - TArgs -> = - | SubscriptionSubscriberObject - | SubscriptionResolverObject; - -export type SubscriptionResolver< - TResult, - TKey extends string, - TParent = {}, - TContext = {}, - TArgs = {} -> = - | (( - ...args: any[] - ) => SubscriptionObject) - | SubscriptionObject; - -export type TypeResolveFn = ( - parent: TParent, - context: TContext, - info: GraphQLResolveInfo -) => Maybe | Promise>; - -export type IsTypeOfResolverFn = ( - obj: T, - context: TContext, - info: GraphQLResolveInfo -) => boolean | Promise; - -export type NextResolverFn = () => Promise; - -export type DirectiveResolverFn< - TResult = {}, - TParent = {}, - TContext = {}, - TArgs = {} -> = ( - next: NextResolverFn, - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => TResult | Promise; - -/** Mapping between all available schema types and the resolvers types */ -export type ResolversTypes = { - Query: ResolverTypeWrapper<{}>; - String: ResolverTypeWrapper; - User: ResolverTypeWrapper; - ID: ResolverTypeWrapper; - Boolean: ResolverTypeWrapper; -}; - -/** Mapping between all available schema types and the resolvers parents */ -export type ResolversParentTypes = { - Query: {}; - String: Scalars['String']; - User: User; - ID: Scalars['ID']; - Boolean: Scalars['Boolean']; -}; - -export type QueryResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query'] -> = { - hello?: Resolver; - user?: Resolver; -}; - -export type UserResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['User'] = ResolversParentTypes['User'] -> = { - id?: Resolver; - users?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type Resolvers = { - Query?: QueryResolvers; - User?: UserResolvers; -}; - -declare module 'graphql-ez' { - interface EZResolvers extends Resolvers {} -} diff --git a/examples/ez-react-next/src/gqty/index.ts b/examples/ez-react-next/src/gqty/index.ts deleted file mode 100644 index 942731a37..000000000 --- a/examples/ez-react-next/src/gqty/index.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * GQty: You can safely modify this file based on your needs. - */ - -import { createLogger } from '@gqty/logger'; -import { createReactClient } from '@gqty/react'; -import { createClient, QueryFetcher } from 'gqty'; -import { - generatedSchema, - GeneratedSchema, - scalarsEnumsHash, -} from './schema.generated'; - -const endpoint = - typeof window !== 'undefined' - ? '/api/graphql' - : 'http://localhost:3000/api/graphql'; - -const queryFetcher: QueryFetcher = async function ( - { query, variables, operationName }, - fetchOptions -) { - const response = await fetch(endpoint, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query, - variables, - operationName, - }), - ...fetchOptions, - }); - - const json = await response.json(); - - return json; -}; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, -}); - -if (typeof window !== 'undefined') { - const logger = createLogger(client); - - logger.start(); -} - -const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - -export * from './schema.generated'; -export { query, mutation, mutate, subscription, resolved, refetch, track }; -export { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -}; - -const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -} = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); diff --git a/examples/ez-react-next/src/gqty/schema.generated.ts b/examples/ez-react-next/src/gqty/schema.generated.ts deleted file mode 100644 index 8d82185b3..000000000 --- a/examples/ez-react-next/src/gqty/schema.generated.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - -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; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export interface Scalars { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; -} - -export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { - Boolean: true, - ID: true, - String: true, -}; -export const generatedSchema = { - User: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - users: { __type: '[User!]!' }, - }, - mutation: {}, - query: { - __typename: { __type: 'String!' }, - hello: { __type: 'String!' }, - user: { __type: 'User!' }, - }, - subscription: {}, -} as const; - -export interface User { - __typename?: 'User'; - id: ScalarsEnums['ID']; - users: Array; -} - -export interface Mutation { - __typename?: 'Mutation'; -} - -export interface Query { - __typename?: 'Query'; - hello: ScalarsEnums['String']; - user: User; -} - -export interface Subscription { - __typename?: 'Subscription'; -} - -export interface GeneratedSchema { - query: Query; - mutation: Mutation; - subscription: Subscription; -} - -export type MakeNullable = { - [K in keyof T]: T[K] | undefined; -}; - -export interface ScalarsEnums extends MakeNullable {} diff --git a/examples/ez-react-next/src/pages/api/graphql.ts b/examples/ez-react-next/src/pages/api/graphql.ts deleted file mode 100644 index ff49bf950..000000000 --- a/examples/ez-react-next/src/pages/api/graphql.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { useGenerateGQty } from '@gqty/cli/envelop'; -import { CreateApp } from '@graphql-ez/nextjs'; -import { ezCodegen } from '@graphql-ez/plugin-codegen'; -import { ezGraphiQLIDE } from '@graphql-ez/plugin-graphiql'; -import { ezSchema, gql } from '@graphql-ez/plugin-schema'; - -const { buildApp } = CreateApp({ - ez: { - plugins: [ - ezGraphiQLIDE(), - ezCodegen({ - outputSchema: true, - }), - ezSchema({ - schema: { - typeDefs: gql` - type Query { - hello: String! - user: User! - } - type User { - id: ID! - users: [User!]! - } - `, - resolvers: { - Query: { - hello() { - return 'Hello World'; - }, - user() { - return { - id: '1', - users: [], - }; - }, - }, - }, - }, - }), - ], - }, - envelop: { - plugins: [useGenerateGQty()], - }, -}); - -export default buildApp().apiHandler; diff --git a/examples/ez-react-next/src/pages/index.tsx b/examples/ez-react-next/src/pages/index.tsx deleted file mode 100644 index a4beb954f..000000000 --- a/examples/ez-react-next/src/pages/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useQuery, useRefetch } from '../gqty'; - -export default function Index() { - const refetch = useRefetch(); - const { hello, user } = useQuery(); - return ( -
-

{hello || '...'}

-

{user.id}

-
- {user.users.map((v) => ( -

{v.id}

- ))} -
- -
- ); -} diff --git a/examples/ez-react-next/tsconfig.json b/examples/ez-react-next/tsconfig.json deleted file mode 100644 index 96cc1ff8b..000000000 --- a/examples/ez-react-next/tsconfig.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Language and Environment */ - "target": "es2020" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */, - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "noEmit": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} diff --git a/examples/ez/.gitignore b/examples/ez/.gitignore deleted file mode 100644 index 4c9d7c35a..000000000 --- a/examples/ez/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.log -.DS_Store -node_modules -dist diff --git a/examples/ez/LICENSE.md b/examples/ez/LICENSE.md deleted file mode 100644 index 2a6b02f89..000000000 --- a/examples/ez/LICENSE.md +++ /dev/null @@ -1,24 +0,0 @@ -# The MIT License (MIT) - -Copyright © `2021` `GQty` - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the “Software”), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/examples/ez/README.md b/examples/ez/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/examples/ez/gqty.config.cjs b/examples/ez/gqty.config.cjs deleted file mode 100644 index 1f38c5d85..000000000 --- a/examples/ez/gqty.config.cjs +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - enumsAsStrings: false, - react: false, - scalarTypes: { DateTime: 'string', ExampleScalar: 'string' }, - preImport: '', - introspection: { endpoint: './schema.gql' }, - destination: './src/generated/gqty.ts', - subscriptions: false, -}; - -module.exports = config; diff --git a/examples/ez/jest.config.js b/examples/ez/jest.config.js deleted file mode 100644 index f2caf5bdd..000000000 --- a/examples/ez/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = require('test-utils/jest.config.js').getConfig({ - testTimeout: 20000, -}); diff --git a/examples/ez/listen.ts b/examples/ez/listen.ts deleted file mode 100644 index 27ab855d6..000000000 --- a/examples/ez/listen.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { app } from './src/index'; - -app.listen(3000, (err) => { - if (err) { - console.error(err); - process.exit(1); - } - console.log('Listening on http://localhost:3000'); -}); diff --git a/examples/ez/package.json b/examples/ez/package.json deleted file mode 100644 index baa699ac7..000000000 --- a/examples/ez/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "example-ez", - "version": "0.1.0", - "private": true, - "license": "MIT", - "author": "PabloSzx ", - "scripts": { - "dev": "bob-tsm --watch src listen.ts --cjs listen.ts", - "generate": "gqty generate", - "listen": "bob-tsm --cjs listen.ts", - "test": "jest" - }, - "dependencies": { - "@gqty/cli": "workspace:^3.3.0", - "@graphql-ez/fastify": "^0.12.0", - "@graphql-ez/fastify-testing": "^0.4.0", - "@graphql-ez/plugin-altair": "^0.11.0", - "@graphql-ez/plugin-codegen": "^0.8.0", - "@graphql-ez/plugin-schema": "^0.9.0", - "@graphql-typed-document-node/core": "^3.2.0", - "fastify": "^4.11.0", - "gqty": "workspace:^2.3.0", - "graphql": "^16.6.0", - "graphql-ez": "^0.16.0", - "lodash-es": "^4.17.21", - "randomstring": "^1.2.3", - "test-utils": "workspace:^0.1.0" - }, - "devDependencies": { - "@types/lodash-es": "^4.17.6", - "@types/node": "^18.15.5", - "@types/randomstring": "^1.1.8", - "bob-tsm": "^1.1.2", - "esbuild": "^0.17.12", - "jest": "^29.5.0", - "typescript": "^4.9.5" - } -} diff --git a/examples/ez/schema.gql b/examples/ez/schema.gql deleted file mode 100644 index 73e08b84c..000000000 --- a/examples/ez/schema.gql +++ /dev/null @@ -1,75 +0,0 @@ -schema { - query: Query - mutation: Mutation -} - -interface NamedEntity { - name: String! -} - -scalar ExampleScalar - -enum GreetingsEnum { - Hello - Hi - Hey -} - -input GreetingsInput { - language: String! - value: String - scal: ExampleScalar -} - -type Query { - simpleString: String! - stringWithArgs(hello: String!): String! - stringNullableWithArgs(hello: String!, helloTwo: String): String - stringNullableWithArgsArray(hello: [String]!): String - object: Human - objectArray: [Human] - objectWithArgs(who: String!): Human! - arrayString: [String!]! - arrayObjectArgs(limit: Int!): [Human!]! - greetings: GreetingsEnum! - giveGreetingsInput(input: GreetingsInput!): String! - number: Int! - union: [TestUnion!]! -} - -type Mutation { - increment(n: Int!): Int! -} - -type Human implements NamedEntity { - name: String! - father: Human! - fieldWithArgs(id: Int!): Int! - sons: [Human!] - union: [TestUnion!]! - args(a: String): Int -} - -type Dog implements NamedEntity { - name: String! - owner: Human! -} - -type A { - a: String! - common(a: String): Int - z: String -} - -type B { - b: Int! - common(b: Int): String - z: String -} - -type C { - c: GreetingsEnum! - z: String -} - -union TestUnion = A | B | C diff --git a/examples/ez/src/ez.generated.ts b/examples/ez/src/ez.generated.ts deleted file mode 100644 index eef325fc3..000000000 --- a/examples/ez/src/ez.generated.ts +++ /dev/null @@ -1,706 +0,0 @@ -import type { - GraphQLResolveInfo, - GraphQLScalarType, - GraphQLScalarTypeConfig, -} from 'graphql'; -import type { EZContext } from 'graphql-ez'; -import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core'; -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { - [K in keyof T]: T[K]; -}; -export type MakeOptional = Omit & { - [SubKey in K]?: Maybe; -}; -export type MakeMaybe = Omit & { - [SubKey in K]: Maybe; -}; -export type ResolverFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => - | Promise> - | import('graphql-ez').DeepPartial; -export type Omit = Pick>; -export type RequireFields = Omit & { - [P in K]-?: NonNullable; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - ExampleScalar: any; -}; - -export type NamedEntity = { - name: Scalars['String']; -}; - -export enum GreetingsEnum { - Hello = 'Hello', - Hi = 'Hi', - Hey = 'Hey', -} - -export type GreetingsInput = { - language: Scalars['String']; - value?: InputMaybe; - scal?: InputMaybe; -}; - -export type Query = { - __typename?: 'Query'; - simpleString: Scalars['String']; - stringWithArgs: Scalars['String']; - stringNullableWithArgs?: Maybe; - stringNullableWithArgsArray?: Maybe; - object?: Maybe; - objectArray?: Maybe>>; - objectWithArgs: Human; - arrayString: Array; - arrayObjectArgs: Array; - greetings: GreetingsEnum; - giveGreetingsInput: Scalars['String']; - number: Scalars['Int']; - union: Array; -}; - -export type QueryStringWithArgsArgs = { - hello: Scalars['String']; -}; - -export type QueryStringNullableWithArgsArgs = { - hello: Scalars['String']; - helloTwo?: InputMaybe; -}; - -export type QueryStringNullableWithArgsArrayArgs = { - hello: Array>; -}; - -export type QueryObjectWithArgsArgs = { - who: Scalars['String']; -}; - -export type QueryArrayObjectArgsArgs = { - limit: Scalars['Int']; -}; - -export type QueryGiveGreetingsInputArgs = { - input: GreetingsInput; -}; - -export type Mutation = { - __typename?: 'Mutation'; - increment: Scalars['Int']; -}; - -export type MutationIncrementArgs = { - n: Scalars['Int']; -}; - -export type Human = NamedEntity & { - __typename?: 'Human'; - name: Scalars['String']; - father: Human; - fieldWithArgs: Scalars['Int']; - sons?: Maybe>; - union: Array; - args?: Maybe; -}; - -export type HumanFieldWithArgsArgs = { - id: Scalars['Int']; -}; - -export type HumanArgsArgs = { - a?: InputMaybe; -}; - -export type Dog = NamedEntity & { - __typename?: 'Dog'; - name: Scalars['String']; - owner: Human; -}; - -export type A = { - __typename?: 'A'; - a: Scalars['String']; - common?: Maybe; - z?: Maybe; -}; - -export type ACommonArgs = { - a?: InputMaybe; -}; - -export type B = { - __typename?: 'B'; - b: Scalars['Int']; - common?: Maybe; - z?: Maybe; -}; - -export type BCommonArgs = { - b?: InputMaybe; -}; - -export type C = { - __typename?: 'C'; - c: GreetingsEnum; - z?: Maybe; -}; - -export type TestUnion = A | B | C; - -export type ResolverTypeWrapper = Promise | T; - -export type ResolverWithResolve = { - resolve: ResolverFn; -}; -export type Resolver = - | ResolverFn - | ResolverWithResolve; - -export type SubscriptionSubscribeFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => AsyncIterable | Promise>; - -export type SubscriptionResolveFn = ( - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => TResult | Promise; - -export interface SubscriptionSubscriberObject< - TResult, - TKey extends string, - TParent, - TContext, - TArgs -> { - subscribe: SubscriptionSubscribeFn< - { [key in TKey]: TResult }, - TParent, - TContext, - TArgs - >; - resolve?: SubscriptionResolveFn< - TResult, - { [key in TKey]: TResult }, - TContext, - TArgs - >; -} - -export interface SubscriptionResolverObject { - subscribe: SubscriptionSubscribeFn; - resolve: SubscriptionResolveFn; -} - -export type SubscriptionObject< - TResult, - TKey extends string, - TParent, - TContext, - TArgs -> = - | SubscriptionSubscriberObject - | SubscriptionResolverObject; - -export type SubscriptionResolver< - TResult, - TKey extends string, - TParent = {}, - TContext = {}, - TArgs = {} -> = - | (( - ...args: any[] - ) => SubscriptionObject) - | SubscriptionObject; - -export type TypeResolveFn = ( - parent: TParent, - context: TContext, - info: GraphQLResolveInfo -) => Maybe | Promise>; - -export type IsTypeOfResolverFn = ( - obj: T, - context: TContext, - info: GraphQLResolveInfo -) => boolean | Promise; - -export type NextResolverFn = () => Promise; - -export type DirectiveResolverFn< - TResult = {}, - TParent = {}, - TContext = {}, - TArgs = {} -> = ( - next: NextResolverFn, - parent: TParent, - args: TArgs, - context: TContext, - info: GraphQLResolveInfo -) => TResult | Promise; - -/** Mapping between all available schema types and the resolvers types */ -export type ResolversTypes = { - NamedEntity: ResolversTypes['Human'] | ResolversTypes['Dog']; - String: ResolverTypeWrapper; - ExampleScalar: ResolverTypeWrapper; - GreetingsEnum: GreetingsEnum; - GreetingsInput: GreetingsInput; - Query: ResolverTypeWrapper<{}>; - Int: ResolverTypeWrapper; - Mutation: ResolverTypeWrapper<{}>; - Human: ResolverTypeWrapper< - Omit & { union: Array } - >; - Dog: ResolverTypeWrapper; - A: ResolverTypeWrapper; - B: ResolverTypeWrapper; - C: ResolverTypeWrapper; - TestUnion: ResolversTypes['A'] | ResolversTypes['B'] | ResolversTypes['C']; - Boolean: ResolverTypeWrapper; -}; - -/** Mapping between all available schema types and the resolvers parents */ -export type ResolversParentTypes = { - NamedEntity: ResolversParentTypes['Human'] | ResolversParentTypes['Dog']; - String: Scalars['String']; - ExampleScalar: Scalars['ExampleScalar']; - GreetingsInput: GreetingsInput; - Query: {}; - Int: Scalars['Int']; - Mutation: {}; - Human: Omit & { - union: Array; - }; - Dog: Dog; - A: A; - B: B; - C: C; - TestUnion: - | ResolversParentTypes['A'] - | ResolversParentTypes['B'] - | ResolversParentTypes['C']; - Boolean: Scalars['Boolean']; -}; - -export type NamedEntityResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['NamedEntity'] = ResolversParentTypes['NamedEntity'] -> = { - __resolveType: TypeResolveFn<'Human' | 'Dog', ParentType, ContextType>; - name?: Resolver; -}; - -export interface ExampleScalarScalarConfig - extends GraphQLScalarTypeConfig { - name: 'ExampleScalar'; -} - -export type QueryResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query'] -> = { - simpleString?: Resolver; - stringWithArgs?: Resolver< - ResolversTypes['String'], - ParentType, - ContextType, - RequireFields - >; - stringNullableWithArgs?: Resolver< - Maybe, - ParentType, - ContextType, - RequireFields - >; - stringNullableWithArgsArray?: Resolver< - Maybe, - ParentType, - ContextType, - RequireFields - >; - object?: Resolver, ParentType, ContextType>; - objectArray?: Resolver< - Maybe>>, - ParentType, - ContextType - >; - objectWithArgs?: Resolver< - ResolversTypes['Human'], - ParentType, - ContextType, - RequireFields - >; - arrayString?: Resolver< - Array, - ParentType, - ContextType - >; - arrayObjectArgs?: Resolver< - Array, - ParentType, - ContextType, - RequireFields - >; - greetings?: Resolver< - ResolversTypes['GreetingsEnum'], - ParentType, - ContextType - >; - giveGreetingsInput?: Resolver< - ResolversTypes['String'], - ParentType, - ContextType, - RequireFields - >; - number?: Resolver; - union?: Resolver, ParentType, ContextType>; -}; - -export type MutationResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation'] -> = { - increment?: Resolver< - ResolversTypes['Int'], - ParentType, - ContextType, - RequireFields - >; -}; - -export type HumanResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['Human'] = ResolversParentTypes['Human'] -> = { - name?: Resolver; - father?: Resolver; - fieldWithArgs?: Resolver< - ResolversTypes['Int'], - ParentType, - ContextType, - RequireFields - >; - sons?: Resolver< - Maybe>, - ParentType, - ContextType - >; - union?: Resolver, ParentType, ContextType>; - args?: Resolver< - Maybe, - ParentType, - ContextType, - Partial - >; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type DogResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['Dog'] = ResolversParentTypes['Dog'] -> = { - name?: Resolver; - owner?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type AResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['A'] = ResolversParentTypes['A'] -> = { - a?: Resolver; - common?: Resolver< - Maybe, - ParentType, - ContextType, - Partial - >; - z?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type BResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['B'] = ResolversParentTypes['B'] -> = { - b?: Resolver; - common?: Resolver< - Maybe, - ParentType, - ContextType, - Partial - >; - z?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type CResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['C'] = ResolversParentTypes['C'] -> = { - c?: Resolver; - z?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; -}; - -export type TestUnionResolvers< - ContextType = EZContext, - ParentType extends ResolversParentTypes['TestUnion'] = ResolversParentTypes['TestUnion'] -> = { - __resolveType: TypeResolveFn<'A' | 'B' | 'C', ParentType, ContextType>; -}; - -export type Resolvers = { - NamedEntity?: NamedEntityResolvers; - ExampleScalar?: GraphQLScalarType; - Query?: QueryResolvers; - Mutation?: MutationResolvers; - Human?: HumanResolvers; - Dog?: DogResolvers; - A?: AResolvers; - B?: BResolvers; - C?: CResolvers; - TestUnion?: TestUnionResolvers; -}; - -export type SimpleStringQueryVariables = Exact<{ [key: string]: never }>; - -export type SimpleStringQuery = { - __typename?: 'Query'; - simpleString: string; - union: Array< - | { __typename: 'A'; a: string } - | { __typename: 'B'; b: number } - | { __typename: 'C'; c: GreetingsEnum } - >; -}; - -export type ArrayObjectArgsQueryVariables = Exact<{ [key: string]: never }>; - -export type ArrayObjectArgsQuery = { - __typename?: 'Query'; - arrayObjectArgs: Array<{ - __typename?: 'Human'; - name: string; - father: { - __typename?: 'Human'; - name: string; - father: { __typename?: 'Human'; name: string }; - }; - }>; -}; - -export type MultipleArgsQueryVariables = Exact<{ [key: string]: never }>; - -export type MultipleArgsQuery = { - __typename?: 'Query'; - a1: { __typename?: 'Human'; zxc: string; abc: string }; - a2: { __typename?: 'Human'; name: string }; -}; - -export const SimpleStringDocument = { - kind: 'Document', - definitions: [ - { - kind: 'OperationDefinition', - operation: 'query', - name: { kind: 'Name', value: 'simpleString' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'simpleString' } }, - { - kind: 'Field', - name: { kind: 'Name', value: 'union' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: '__typename' } }, - { - kind: 'InlineFragment', - typeCondition: { - kind: 'NamedType', - name: { kind: 'Name', value: 'A' }, - }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'a' } }, - ], - }, - }, - { - kind: 'InlineFragment', - typeCondition: { - kind: 'NamedType', - name: { kind: 'Name', value: 'B' }, - }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'b' } }, - ], - }, - }, - { - kind: 'InlineFragment', - typeCondition: { - kind: 'NamedType', - name: { kind: 'Name', value: 'C' }, - }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'c' } }, - ], - }, - }, - ], - }, - }, - ], - }, - }, - ], -} as unknown as DocumentNode; -export const ArrayObjectArgsDocument = { - kind: 'Document', - definitions: [ - { - kind: 'OperationDefinition', - operation: 'query', - name: { kind: 'Name', value: 'arrayObjectArgs' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { - kind: 'Field', - name: { kind: 'Name', value: 'arrayObjectArgs' }, - arguments: [ - { - kind: 'Argument', - name: { kind: 'Name', value: 'limit' }, - value: { kind: 'IntValue', value: '2' }, - }, - ], - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'name' } }, - { - kind: 'Field', - name: { kind: 'Name', value: 'father' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'name' } }, - { - kind: 'Field', - name: { kind: 'Name', value: 'father' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { - kind: 'Field', - name: { kind: 'Name', value: 'name' }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - }, - ], - }, - }, - ], -} as unknown as DocumentNode< - ArrayObjectArgsQuery, - ArrayObjectArgsQueryVariables ->; -export const MultipleArgsDocument = { - kind: 'Document', - definitions: [ - { - kind: 'OperationDefinition', - operation: 'query', - name: { kind: 'Name', value: 'multipleArgs' }, - selectionSet: { - kind: 'SelectionSet', - selections: [ - { - kind: 'Field', - alias: { kind: 'Name', value: 'a1' }, - name: { kind: 'Name', value: 'objectWithArgs' }, - arguments: [ - { - kind: 'Argument', - name: { kind: 'Name', value: 'who' }, - value: { kind: 'StringValue', value: 'hello', block: false }, - }, - ], - selectionSet: { - kind: 'SelectionSet', - selections: [ - { - kind: 'Field', - alias: { kind: 'Name', value: 'zxc' }, - name: { kind: 'Name', value: 'name' }, - }, - { - kind: 'Field', - alias: { kind: 'Name', value: 'abc' }, - name: { kind: 'Name', value: 'name' }, - }, - ], - }, - }, - { - kind: 'Field', - alias: { kind: 'Name', value: 'a2' }, - name: { kind: 'Name', value: 'objectWithArgs' }, - arguments: [ - { - kind: 'Argument', - name: { kind: 'Name', value: 'who' }, - value: { kind: 'StringValue', value: 'hello2', block: false }, - }, - ], - selectionSet: { - kind: 'SelectionSet', - selections: [ - { kind: 'Field', name: { kind: 'Name', value: 'name' } }, - ], - }, - }, - ], - }, - }, - ], -} as unknown as DocumentNode; - -declare module 'graphql-ez' { - interface EZResolvers extends Resolvers {} -} diff --git a/examples/ez/src/generated/gqty.ts b/examples/ez/src/generated/gqty.ts deleted file mode 100644 index 8d31b1dce..000000000 --- a/examples/ez/src/generated/gqty.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { createClient, QueryFetcher } from 'gqty'; - -import { ezApp } from '..'; -import { - GeneratedSchema, - generatedSchema, - scalarsEnumsHash, -} from './schema.generated'; - -import { CreateTestClient } from '@graphql-ez/fastify-testing'; - -const testClientPromise = CreateTestClient(ezApp); -const queryFetcher: QueryFetcher = async function ({ - query, - variables, - operationName, -}) { - const testClient = await testClientPromise; - - return testClient.query(query, { - variables, - operationName, - }); -}; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - cacheOptions: { - normalization: { - identity(obj) { - switch (obj.__typename) { - case 'A': { - return `${obj.a ?? ''}`; - } - default: { - return; - } - } - }, - schemaKeys: {}, - }, - }, - fetchOptions: { - fetcher: queryFetcher, - }, -}); - -const { query, mutation, mutate, subscription, resolved, refetch } = client; - -export * from './schema.generated'; -export { query, mutation, mutate, subscription, resolved, refetch }; diff --git a/examples/ez/src/generated/schema.generated.ts b/examples/ez/src/generated/schema.generated.ts deleted file mode 100644 index a9a8da208..000000000 --- a/examples/ez/src/generated/schema.generated.ts +++ /dev/null @@ -1,238 +0,0 @@ -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - -import { SchemaUnionsKey } from 'gqty'; - -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; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export interface Scalars { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - ExampleScalar: string; -} - -export enum GreetingsEnum { - Hello = 'Hello', - Hey = 'Hey', - Hi = 'Hi', -} - -export interface GreetingsInput { - language: Scalars['String']; - scal?: InputMaybe; - value?: InputMaybe; -} - -export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { - Boolean: true, - ExampleScalar: true, - GreetingsEnum: true, - Int: true, - String: true, -}; -export const generatedSchema = { - A: { - __typename: { __type: 'String!' }, - a: { __type: 'String!' }, - common: { __type: 'Int', __args: { a: 'String' } }, - z: { __type: 'String' }, - }, - B: { - __typename: { __type: 'String!' }, - b: { __type: 'Int!' }, - common: { __type: 'String', __args: { b: 'Int' } }, - z: { __type: 'String' }, - }, - C: { - __typename: { __type: 'String!' }, - c: { __type: 'GreetingsEnum!' }, - z: { __type: 'String' }, - }, - Dog: { - __typename: { __type: 'String!' }, - name: { __type: 'String!' }, - owner: { __type: 'Human!' }, - }, - GreetingsInput: { - language: { __type: 'String!' }, - scal: { __type: 'ExampleScalar' }, - value: { __type: 'String' }, - }, - Human: { - __typename: { __type: 'String!' }, - args: { __type: 'Int', __args: { a: 'String' } }, - father: { __type: 'Human!' }, - fieldWithArgs: { __type: 'Int!', __args: { id: 'Int!' } }, - name: { __type: 'String!' }, - sons: { __type: '[Human!]' }, - union: { __type: '[TestUnion!]!' }, - }, - NamedEntity: { - __typename: { __type: 'String!' }, - name: { __type: 'String!' }, - $on: { __type: '$NamedEntity!' }, - }, - TestUnion: { - __typename: { __type: 'String!' }, - $on: { __type: '$TestUnion!' }, - }, - mutation: { - __typename: { __type: 'String!' }, - increment: { __type: 'Int!', __args: { n: 'Int!' } }, - }, - query: { - __typename: { __type: 'String!' }, - arrayObjectArgs: { __type: '[Human!]!', __args: { limit: 'Int!' } }, - arrayString: { __type: '[String!]!' }, - giveGreetingsInput: { - __type: 'String!', - __args: { input: 'GreetingsInput!' }, - }, - greetings: { __type: 'GreetingsEnum!' }, - number: { __type: 'Int!' }, - object: { __type: 'Human' }, - objectArray: { __type: '[Human]' }, - objectWithArgs: { __type: 'Human!', __args: { who: 'String!' } }, - simpleString: { __type: 'String!' }, - stringNullableWithArgs: { - __type: 'String', - __args: { hello: 'String!', helloTwo: 'String' }, - }, - stringNullableWithArgsArray: { - __type: 'String', - __args: { hello: '[String]!' }, - }, - stringWithArgs: { __type: 'String!', __args: { hello: 'String!' } }, - union: { __type: '[TestUnion!]!' }, - }, - subscription: {}, - [SchemaUnionsKey]: { - NamedEntity: ['Dog', 'Human'], - TestUnion: ['A', 'B', 'C'], - }, -} as const; - -export interface A { - __typename?: 'A'; - a: ScalarsEnums['String']; - common: (args?: { - a?: Maybe; - }) => Maybe; - z?: Maybe; -} - -export interface B { - __typename?: 'B'; - b: ScalarsEnums['Int']; - common: (args?: { - b?: Maybe; - }) => Maybe; - z?: Maybe; -} - -export interface C { - __typename?: 'C'; - c: ScalarsEnums['GreetingsEnum']; - z?: Maybe; -} - -export interface Dog { - __typename?: 'Dog'; - name: ScalarsEnums['String']; - owner: Human; -} - -export interface Human { - __typename?: 'Human'; - args: (args?: { a?: Maybe }) => Maybe; - father: Human; - fieldWithArgs: (args: { id: Scalars['Int'] }) => ScalarsEnums['Int']; - name: ScalarsEnums['String']; - sons?: Maybe>; - union: Array; -} - -export interface NamedEntity { - __typename?: 'Dog' | 'Human'; - name: ScalarsEnums['String']; - $on: $NamedEntity; -} - -export interface TestUnion { - __typename?: 'A' | 'B' | 'C'; - $on: $TestUnion; -} - -export interface Mutation { - __typename?: 'Mutation'; - increment: (args: { n: Scalars['Int'] }) => ScalarsEnums['Int']; -} - -export interface Query { - __typename?: 'Query'; - arrayObjectArgs: (args: { limit: Scalars['Int'] }) => Array; - arrayString: Array; - giveGreetingsInput: (args: { - input: GreetingsInput; - }) => ScalarsEnums['String']; - greetings: ScalarsEnums['GreetingsEnum']; - number: ScalarsEnums['Int']; - object?: Maybe; - objectArray?: Maybe>>; - objectWithArgs: (args: { who: Scalars['String'] }) => Human; - simpleString: ScalarsEnums['String']; - stringNullableWithArgs: (args: { - hello: Scalars['String']; - helloTwo?: Maybe; - }) => Maybe; - stringNullableWithArgsArray: (args: { - hello: Array>; - }) => Maybe; - stringWithArgs: (args: { - hello: Scalars['String']; - }) => ScalarsEnums['String']; - union: Array; -} - -export interface Subscription { - __typename?: 'Subscription'; -} - -export interface $NamedEntity { - Dog?: Dog; - Human?: Human; -} - -export interface $TestUnion { - A?: A; - B?: B; - C?: C; -} - -export interface GeneratedSchema { - query: Query; - mutation: Mutation; - subscription: Subscription; -} - -export type MakeNullable = { - [K in keyof T]: T[K] | undefined; -}; - -export interface ScalarsEnums extends MakeNullable { - GreetingsEnum: GreetingsEnum | undefined; -} diff --git a/examples/ez/src/graphql/operations.gql b/examples/ez/src/graphql/operations.gql deleted file mode 100644 index 06d4b7635..000000000 --- a/examples/ez/src/graphql/operations.gql +++ /dev/null @@ -1,37 +0,0 @@ -query simpleString { - simpleString - union { - __typename - ... on A { - a - } - ... on B { - b - } - ... on C { - c - } - } -} - -query arrayObjectArgs { - arrayObjectArgs(limit: 2) { - name - father { - name - father { - name - } - } - } -} - -query multipleArgs { - a1: objectWithArgs(who: "hello") { - zxc: name - abc: name - } - a2: objectWithArgs(who: "hello2") { - name - } -} diff --git a/examples/ez/src/index.ts b/examples/ez/src/index.ts deleted file mode 100644 index 15e5163ac..000000000 --- a/examples/ez/src/index.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { useGenerateGQty } from '@gqty/cli/envelop'; -import { CreateApp } from '@graphql-ez/fastify'; -import { ezAltairIDE } from '@graphql-ez/plugin-altair/static'; -import { ezCodegen } from '@graphql-ez/plugin-codegen'; -import { ezSchema } from '@graphql-ez/plugin-schema'; -import Fastify, { LogLevel } from 'fastify'; -import { random, range } from 'lodash-es'; -import { generate } from 'randomstring'; -import { gql } from 'test-utils'; -import { GreetingsEnum, Human, TestUnion } from './ez.generated'; - -export const app = Fastify({ - logger: { - level: 'warn' as LogLevel, - }, -}); - -const getUnion = (): TestUnion[] => [ - { - a: 'asd', - }, - { - b: 123, - }, - { - c: GreetingsEnum.Hey, - }, -]; - -export const newHuman = ({ name }: { name?: string } = {}): Partial => { - return { - name: name || generate(), - union: getUnion(), - }; -}; - -export const ezApp = CreateApp({ - ez: { - plugins: [ - ezCodegen({ - outputSchema: true, - config: { - documents: 'src/graphql/operations.gql', - }, - enableCodegen: true, - }), - ezSchema(), - ezAltairIDE(), - ], - }, - envelop: { - plugins: [useGenerateGQty()], - }, - prepare({ registerTypeDefs, registerResolvers }) { - let inc = 0; - registerTypeDefs(gql` - interface NamedEntity { - name: String! - } - scalar ExampleScalar - - enum GreetingsEnum { - Hello - Hi - Hey - } - input GreetingsInput { - language: String! - value: String - scal: ExampleScalar - } - type Query { - simpleString: String! - stringWithArgs(hello: String!): String! - stringNullableWithArgs(hello: String!, helloTwo: String): String - stringNullableWithArgsArray(hello: [String]!): String - object: Human - objectArray: [Human] - objectWithArgs(who: String!): Human! - arrayString: [String!]! - arrayObjectArgs(limit: Int!): [Human!]! - greetings: GreetingsEnum! - giveGreetingsInput(input: GreetingsInput!): String! - number: Int! - union: [TestUnion!]! - } - type Mutation { - increment(n: Int!): Int! - } - type Human implements NamedEntity { - name: String! - father: Human! - fieldWithArgs(id: Int!): Int! - sons: [Human!] - union: [TestUnion!]! - args(a: String): Int - } - type Dog implements NamedEntity { - name: String! - owner: Human! - } - type A { - a: String! - common(a: String): Int - z: String - } - type B { - b: Int! - common(b: Int): String - z: String - } - type C { - c: GreetingsEnum! - z: String - } - union TestUnion = A | B | C - `); - registerResolvers({ - Query: { - simpleString() { - return generate(); - }, - stringWithArgs(_root, { hello }) { - return hello; - }, - object() { - return newHuman(); - }, - objectArray() { - return range(random(2, 3)).map(() => newHuman()); - }, - objectWithArgs(_root, { who }) { - return newHuman({ name: who }); - }, - arrayString() { - return range(random(1, 2)).map(() => generate()); - }, - arrayObjectArgs(_root, { limit }) { - return range(limit).map(() => newHuman()); - }, - giveGreetingsInput(_root, { input }) { - return input.language; - }, - greetings() { - return GreetingsEnum.Hello; - }, - stringNullableWithArgs(_root, { hello, helloTwo }) { - return hello || helloTwo; - }, - stringNullableWithArgsArray(_root, { hello }) { - return hello[0]; - }, - number() { - return inc; - }, - union() { - return getUnion(); - }, - }, - Mutation: { - increment(_root, { n }) { - return (inc += n); - }, - }, - Human: { - father() { - return newHuman(); - }, - fieldWithArgs(_root, { id }) { - return id; - }, - sons() { - return range(random(2, 3)).map(() => newHuman()); - }, - }, - TestUnion: { - __resolveType(obj) { - if ('a' in obj) return 'A'; - if ('b' in obj) return 'B'; - return 'C'; - }, - }, - }); - }, -}); - -app.register(ezApp.buildApp().fastifyPlugin); diff --git a/examples/ez/test/example.test.ts b/examples/ez/test/example.test.ts deleted file mode 100644 index f95e7fc07..000000000 --- a/examples/ez/test/example.test.ts +++ /dev/null @@ -1,319 +0,0 @@ -import { CreateTestClient, GlobalTeardown } from '@graphql-ez/fastify-testing'; -import { selectFields } from 'gqty'; -import { ezApp } from '../src'; -import { - ArrayObjectArgsDocument, - MultipleArgsDocument, - SimpleStringDocument, -} from '../src/ez.generated'; -import { - client as generatedClient, - GreetingsEnum, - mutation, - query, - resolved, -} from '../src/generated/gqty'; - -const testClientPromise = CreateTestClient(ezApp); - -afterAll(GlobalTeardown); - -test('works', async () => { - const testClient = await testClientPromise; - - await testClient.query(SimpleStringDocument).then((response) => { - expect(typeof response.data?.simpleString).toBe('string'); - }); - - await testClient.query(ArrayObjectArgsDocument).then((resp) => { - expect(resp.errors).toBe(undefined); - }); -}); - -test('multiple args', async () => { - const testClient = await testClientPromise; - - const response = await testClient.query(MultipleArgsDocument); - - expect(response).toEqual({ - data: { - a1: { - zxc: 'hello', - abc: 'hello', - }, - a2: { - name: 'hello2', - }, - }, - }); -}); - -describe('gqty integration tests', () => { - test('generatedClient', async () => { - const anon = generatedClient.query.objectWithArgs({ - who: 'anon', - }); - - const { name, fatherName } = await resolved(() => { - return { - name: anon.name, - fatherName: anon.father.father.name, - }; - }); - - expect(typeof name).toBe('string'); - - expect(typeof fatherName).toBe('string'); - - expect(typeof anon.name).toBe('string'); - - expect(typeof anon.father.father.name).toBe('string'); - - const arrayDataAfterResolved = await resolved(() => { - return generatedClient.query.objectArray?.map((v) => v?.name); - }); - - expect((arrayDataAfterResolved?.length ?? 0) > 0).toBeTruthy(); - - expect( - arrayDataAfterResolved?.every( - (v) => typeof v === 'string' && v.length > 30 - ) - ).toBeTruthy(); - }); - - test('args', async () => { - const name = await resolved(() => { - return generatedClient.query.objectWithArgs({ - who: 'asd', - }).name; - }); - - expect(name).toBe('asd'); - }); - - test('refetch works', async () => { - const firstHumanName = await resolved(() => { - return generatedClient.query.object?.name; - }); - - expect((firstHumanName?.length ?? 0) > 20).toBeTruthy(); - - const secondHumanName = await resolved( - () => { - return generatedClient.query.object?.name; - }, - { - refetch: true, - } - ); - - expect((secondHumanName?.length ?? 0) > 20).toBeTruthy(); - - expect(firstHumanName !== secondHumanName).toBeTruthy(); - }); - - test('resolved no cache', async () => { - const hello = 'asdasd'; - const helloQueryString = await resolved( - () => { - return generatedClient.query.stringWithArgs({ - hello, - }); - }, - { - noCache: true, - } - ); - - expect(helloQueryString).toBe(hello); - - const shouldBeUndefined = generatedClient.query.stringWithArgs({ - hello, - }); - - expect(shouldBeUndefined).toBe(undefined); - }); - - test('arrays', async () => { - const result = await resolved(() => { - return generatedClient.query.arrayString; - }); - - expect(result.length).toBeGreaterThanOrEqual(1); - - expect( - result.every((v) => { - expect(v!.length).toBeGreaterThan(10); - expect(typeof v).toBe('string'); - }) - ); - }); - - test('input type', async () => { - const result = await resolved(() => { - return generatedClient.query.giveGreetingsInput({ - input: { - language: 'spanish', - }, - }); - }); - - expect(result).toBe('spanish'); - }); - - test('enum', async () => { - const result = await resolved(() => { - return generatedClient.query.greetings; - }); - - expect(Object.values(GreetingsEnum).includes(result!)).toBeTruthy(); - }); - - test('nullable', async () => { - const resultA = await resolved(() => { - return generatedClient.query.stringNullableWithArgs({ - hello: 'a', - }); - }); - - expect(resultA).toBe('a'); - - const resultB = await resolved(() => { - return generatedClient.query.stringNullableWithArgs({ - hello: '', - helloTwo: 'b', - }); - }); - - expect(resultB).toBe('b'); - }); - - test('args array', async () => { - const resultA = await resolved(() => { - return generatedClient.query.stringNullableWithArgsArray({ - hello: ['a', 'b', 'c'], - }); - }); - - expect(resultA).toBe('a'); - - const resultEmpty = await resolved(() => { - return generatedClient.query.stringNullableWithArgsArray({ - hello: [], - }); - }); - - expect(resultEmpty).toBe(null); - }); - - test('type field with args', async () => { - const result = await resolved(() => { - return generatedClient.query.object?.fieldWithArgs({ - id: 123, - }); - }); - - expect(result).toBe(123); - }); - - describe('mutation', () => { - test('mutation works', async () => { - await resolved(() => { - return mutation.increment({ - n: 1, - }); - }).then((n) => { - expect(n).toBe(1); - }); - - await resolved( - () => { - return mutation.increment({ - n: 2, - }); - }, - { - refetch: true, - } - ).then((n) => { - expect(n).toBe(3); - }); - - const n = mutation.increment({ - n: 2, - }); - - expect(n).toBe(3); - - await resolved(() => { - return query.number; - }).then((n) => { - expect(n).toBe(3); - }); - }); - }); -}); - -describe('select fields', () => { - test('selectFields recursive', async () => { - await resolved( - () => { - const one = selectFields(query, '*', 1); - const two = selectFields(query, '*', 2); - const three = selectFields(query, '*', 3); - - return { - one, - two, - three, - }; - }, - { - refetch: true, - } - ).then((response) => { - expect(typeof response.one?.arrayObjectArgs).toBe('function'); - expect(response.one?.objectArray?.length).toBeGreaterThanOrEqual(2); - expect(typeof response.two?.object?.name).toBe('string'); - }); - }); - - test('selectFields an array', async () => { - await resolved( - () => { - return selectFields(query.objectArray, '*', 2); - }, - { - noCache: true, - } - ).then((response) => { - expect(typeof response?.[0]?.name).toBe('string'); - expect(typeof response?.[0]?.father.name).toBe('string'); - }); - }); - - test('selectFields named', async () => { - await resolved( - () => { - return selectFields(query.object, [ - 'name', - 'father.name', - 'sons.0.name', - 'fieldWithArgs', - 'sons', - ]); - }, - { - noCache: true, - } - ).then((response) => { - expect(typeof response?.name).toBe('string'); - expect(typeof response?.father?.name).toBe('string'); - expect(typeof response?.fieldWithArgs).toBe('function'); - expect(response?.sons?.length).toBeGreaterThanOrEqual(2); - expect(typeof response?.sons?.[0]?.name).toBe('string'); - expect(typeof response?.sons?.[1]?.name).toBe('string'); - }); - }); -}); diff --git a/examples/ez/test/tsconfig.json b/examples/ez/test/tsconfig.json deleted file mode 100644 index 18fd4c7a2..000000000 --- a/examples/ez/test/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["example.test.ts"], - "exclude": [] -} diff --git a/examples/ez/tsconfig.json b/examples/ez/tsconfig.json deleted file mode 100644 index 980738209..000000000 --- a/examples/ez/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "include": ["**/*.ts"] -} diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index d1679750e..cbbbb3a16 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -199,6 +199,17 @@ test('basic functionality works', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -212,16 +223,7 @@ test('basic functionality works', async () => { useHydrateCache, prepareQuery, useSubscription, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -379,6 +381,17 @@ test('custom scalars works', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -391,16 +404,7 @@ test('custom scalars works', async () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -1815,6 +1819,17 @@ test('ignoreArgs transform', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -1827,16 +1842,7 @@ test('ignoreArgs transform', async () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -1867,6 +1873,7 @@ test('ignoreArgs transform', async () => { export * from './schema.generated'; " `); + expect(generatedSchema).toMatchInlineSnapshot(` { "mutation": {}, diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index cbc247e98..cac5fea6d 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -118,6 +118,17 @@ test('basic inspectWriteGenerate functionality', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -130,16 +141,7 @@ test('basic inspectWriteGenerate functionality', async () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -341,6 +343,17 @@ describe('from file', () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -353,16 +366,7 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -393,6 +397,7 @@ describe('from file', () => { export * from './schema.generated'; " `); + expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -562,6 +567,17 @@ describe('from file', () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -574,16 +590,7 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -614,6 +621,7 @@ describe('from file', () => { export * from './schema.generated'; " `); + expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -782,6 +790,17 @@ describe('from file', () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -794,16 +813,7 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -834,6 +844,7 @@ describe('from file', () => { export * from './schema.generated'; " `); + expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -1046,6 +1057,17 @@ describe('from multiple files', () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -1058,16 +1080,7 @@ describe('from multiple files', () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -1098,6 +1111,7 @@ describe('from multiple files', () => { export * from './schema.generated'; " `); + expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -1326,6 +1340,17 @@ test('specify generateOptions to inspectWriteGenerate', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -1338,16 +1363,7 @@ test('specify generateOptions to inspectWriteGenerate', async () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, @@ -1696,6 +1712,17 @@ describe('CLI behavior', () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -1708,16 +1735,7 @@ describe('CLI behavior', () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index d1c4e82da..87c137672 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -300,6 +300,17 @@ test('creates dir, generates code and writes new file', async () => { const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, + }); + const { graphql, useQuery, @@ -312,16 +323,7 @@ test('creates dir, generates code and writes new file', async () => { prepareReactRender, useHydrateCache, prepareQuery, - } = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); + } = reactClient; export { graphql, diff --git a/packages/logger/test/index.test.ts b/packages/logger/test/index.test.ts index 0eab3f309..ba2a940ac 100644 --- a/packages/logger/test/index.test.ts +++ b/packages/logger/test/index.test.ts @@ -1,4 +1,4 @@ -import { createClient } from 'gqty'; +import { Cache, createClient } from 'gqty'; import { createTestApp, gql } from 'test-utils'; import { createLogger } from '../src'; @@ -31,6 +31,7 @@ describe('logger', () => { mutation: {}; subscription: {}; }>({ + cache: new Cache(), schema: { mutation: {}, query: { From 9358cdbb7ca33689f89590cac77d9057f1b8aed7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 02:49:26 +0800 Subject: [PATCH 023/122] fix: tests --- integration/graphql-17/package.json | 10 + integration/graphql-17/src/gqty.ts | 10 +- integration/graphql-17/test/main.test.ts | 3 +- packages/gqty/test/FrailMap.test.ts | 4 +- packages/gqty/test/client.test.ts | 2 +- pnpm-lock.yaml | 537 ++++++++++++----------- 6 files changed, 301 insertions(+), 265 deletions(-) diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json index 98340d33d..f8e34ecc8 100644 --- a/integration/graphql-17/package.json +++ b/integration/graphql-17/package.json @@ -29,5 +29,15 @@ "gqty": { "injected": true } + }, + "dependencies": { + "@algolia/client-search": "^4.15", + "@babel/core": "^7", + "@chakra-ui/system": "^2.5.2", + "@emotion/react": "^11.0.0", + "@emotion/styled": "^11.0.0", + "prop-types": "^15.8.1", + "react": "^18", + "unist-util-visit": "^2.0.0" } } diff --git a/integration/graphql-17/src/gqty.ts b/integration/graphql-17/src/gqty.ts index 686e19e0a..88ac62a7e 100644 --- a/integration/graphql-17/src/gqty.ts +++ b/integration/graphql-17/src/gqty.ts @@ -2,24 +2,22 @@ * GQty: You can safely modify this file based on your needs. */ -import type { QueryFetcher } from 'gqty'; -import { createClient } from 'gqty'; +import { Cache, createClient, QueryFetcher } from 'gqty'; import { TestClient } from './api'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; -const queryFetcher: QueryFetcher = async function ({ query, variables }) { +const queryFetcher: QueryFetcher = async function (query, variables) { return (await TestClient).query(query, { variables, }); }; export const client = createClient({ + cache: new Cache(), schema: generatedSchema, scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, + queryFetcher, }); const { query, mutation, mutate, subscription, resolved, refetch, track } = diff --git a/integration/graphql-17/test/main.test.ts b/integration/graphql-17/test/main.test.ts index efddf2508..06147f372 100644 --- a/integration/graphql-17/test/main.test.ts +++ b/integration/graphql-17/test/main.test.ts @@ -1,6 +1,5 @@ -import { query, resolved } from '../src/gqty'; - import test from 'ava'; +import { query, resolved } from '../src/gqty'; test('Hello World', async (t) => { const result = await resolved(() => { diff --git a/packages/gqty/test/FrailMap.test.ts b/packages/gqty/test/FrailMap.test.ts index b46cf87b5..0cfed0de7 100644 --- a/packages/gqty/test/FrailMap.test.ts +++ b/packages/gqty/test/FrailMap.test.ts @@ -4,7 +4,9 @@ import { FrailMap } from '../src/Helpers/FrailMap'; jest.setTimeout(1_000_000); describe('FrailMap', () => { - it('should triggers garbage collection', async () => { + it.todo('should find a way to properly test GC in WeakRef'); + + xit('should triggers garbage collection', async () => { const keys: string[] = []; const map = new FrailMap>(); diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index d4315253f..5792ad9c2 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -167,7 +167,7 @@ describe('core#resolve', () => { ({ subscription }) => subscription.newNotification ); - await new Promise((resolve) => setTimeout(resolve, 10)); + await new Promise((resolve) => setTimeout(resolve, 100)); await resolve(({ mutation }) => mutation.sendNotification({ message: 'hello world' }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 044d7759e..11e513ee6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -111,140 +111,6 @@ importers: specifier: ^7.0.1 version: 7.0.1 - examples/ez: - dependencies: - '@gqty/cli': - specifier: workspace:^3.3.0 - version: link:../../packages/cli/dist - '@graphql-ez/fastify': - specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/fastify-testing': - specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/plugin-altair': - specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/plugin-codegen': - specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/plugin-schema': - specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-typed-document-node/core': - specifier: ^3.2.0 - version: 3.2.0(graphql@16.6.0) - fastify: - specifier: ^4.11.0 - version: 4.11.0 - gqty: - specifier: workspace:^2.3.0 - version: link:../../packages/gqty/dist - graphql: - specifier: ^16.6.0 - version: 16.6.0 - graphql-ez: - specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - lodash-es: - specifier: ^4.17.21 - version: 4.17.21 - randomstring: - specifier: ^1.2.3 - version: 1.2.3 - test-utils: - specifier: workspace:^0.1.0 - version: link:../../internal/test-utils - devDependencies: - '@types/lodash-es': - specifier: ^4.17.6 - version: 4.17.7 - '@types/node': - specifier: ^18.15.5 - version: 18.15.5 - '@types/randomstring': - specifier: ^1.1.8 - version: 1.1.8 - bob-tsm: - specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) - esbuild: - specifier: ^0.17.12 - version: 0.17.12 - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) - typescript: - specifier: ^4.9.5 - version: 4.9.5 - - examples/ez-react-next: - dependencies: - '@gqty/logger': - specifier: workspace:^2.0.2 - version: link:../../packages/logger/dist - '@gqty/react': - specifier: workspace:^2.1.1 - version: link:../../packages/react/dist - '@graphql-ez/nextjs': - specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4) - '@graphql-ez/plugin-codegen': - specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/plugin-graphiql': - specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/plugin-schema': - specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) - gqty: - specifier: workspace:^2.3.0 - version: link:../../packages/gqty/dist - graphql: - specifier: ^16.6.0 - version: 16.6.0 - graphql-ez: - specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - next: - specifier: ^12.3.4 - version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - devDependencies: - '@gqty/cli': - specifier: workspace:^3.3.0 - version: link:../../packages/cli/dist - '@types/node': - specifier: ^18.15.5 - version: 18.15.5 - '@types/react': - specifier: ^17.0.53 - version: 17.0.53 - '@types/react-dom': - specifier: ^18.0.11 - version: 18.0.11 - concurrently: - specifier: ^7.6.0 - version: 7.6.0 - esbuild: - specifier: ^0.17.12 - version: 0.17.12 - open-cli: - specifier: ^7.2.0 - version: 7.2.0 - typescript: - specifier: ^4.9.5 - version: 4.9.5 - wait-on: - specifier: ^7.0.1 - version: 7.0.1 - examples/github: dependencies: '@gqty/cli': @@ -468,6 +334,31 @@ importers: version: 4.2.1(@types/node@18.15.5) integration/graphql-17: + dependencies: + '@algolia/client-search': + specifier: ^4.15 + version: 4.15.0 + '@babel/core': + specifier: ^7 + version: 7.21.0 + '@chakra-ui/system': + specifier: ^2.5.2 + version: 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.0.0) + '@emotion/react': + specifier: ^11.0.0 + version: 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': + specifier: ^11.0.0 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + prop-types: + specifier: ^15.8.1 + version: 15.8.1 + react: + specifier: ^18 + version: 18.0.0 + unist-util-visit: + specifier: ^2.0.0 + version: 2.0.3 devDependencies: '@gqty/cli': specifier: workspace:^3.3.0 @@ -603,13 +494,13 @@ importers: dependencies: '@chakra-ui/icons': specifier: ^1.1.7 - version: 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) + version: 1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2) '@chakra-ui/react': specifier: ^1.8.9 version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/theme-tools': specifier: ^1.3.6 - version: 1.3.6(@chakra-ui/system@1.12.1) + version: 1.3.6(@chakra-ui/system@2.5.2) '@chakra-ui/utils': specifier: ^1.10.4 version: 1.10.4 @@ -630,7 +521,7 @@ importers: version: 2.3.0(react@17.0.2) '@theguild/components': specifier: ^1.12.0 - version: 1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + version: 1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) csstype: specifier: ^3.1.1 version: 3.1.1 @@ -1135,27 +1026,27 @@ packages: '@algolia/autocomplete-shared': 1.7.2 dev: false - /@algolia/autocomplete-js@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + /@algolia/autocomplete-js@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): resolution: {integrity: sha512-/x0r0510yEHtTt9+JIhWa9CIvS2s95n5eSyKrCXA6QF8DYKJV+LQpGCpHnO4gEHJFEe0itVdmws3DzOZrBGa9Q==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.14.2 + '@algolia/client-search': 4.15.0 htm: 3.1.1 preact: 10.11.2 transitivePeerDependencies: - algoliasearch dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.2.1): + /@algolia/autocomplete-plugin-algolia-insights@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2)(search-insights@2.2.1): resolution: {integrity: sha512-dyWJ3Hpn0vGy+Lxd6BZYUupIPB/j7ZA4uzmQ+ThRQF3fjQMpDk4/zNi8/hf0r0Ow9tXOQ7ALKJtHbxWIT/f/Uw==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 search-insights: 2.2.1 transitivePeerDependencies: @@ -1163,28 +1054,28 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-query-suggestions@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + /@algolia/autocomplete-plugin-query-suggestions@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): resolution: {integrity: sha512-lM1B4tsJP+5ePHqXl4kuanmclu8uppmknNTTzWfinjuNRY2WrypwfqrBaCIztbZZYAfs7s0qeC/XXhA4PPSqoA==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' algoliasearch: '>= 4.5.1 < 6' dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.14.2 + '@algolia/client-search': 4.15.0 algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-preset-algolia@1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2): + /@algolia/autocomplete-preset-algolia@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): resolution: {integrity: sha512-+RYEG6B0QiGGfRb2G3MtPfyrl0dALF3cQNTWBzBX6p5o01vCCGTTinAm2UKG3tfc2CnOMAtnPLkzNZyJUpnVJw==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.14.2 + '@algolia/client-search': 4.15.0 algoliasearch: 4.14.2 dev: false @@ -1206,6 +1097,10 @@ packages: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: false + /@algolia/cache-common@4.15.0: + resolution: {integrity: sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==} + dev: false + /@algolia/cache-in-memory@4.14.2: resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: @@ -1236,6 +1131,13 @@ packages: '@algolia/transporter': 4.14.2 dev: false + /@algolia/client-common@4.15.0: + resolution: {integrity: sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==} + dependencies: + '@algolia/requester-common': 4.15.0 + '@algolia/transporter': 4.15.0 + dev: false + /@algolia/client-personalization@4.14.2: resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: @@ -1252,6 +1154,14 @@ packages: '@algolia/transporter': 4.14.2 dev: false + /@algolia/client-search@4.15.0: + resolution: {integrity: sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==} + dependencies: + '@algolia/client-common': 4.15.0 + '@algolia/requester-common': 4.15.0 + '@algolia/transporter': 4.15.0 + dev: false + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false @@ -1260,6 +1170,10 @@ packages: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: false + /@algolia/logger-common@4.15.0: + resolution: {integrity: sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==} + dev: false + /@algolia/logger-console@4.14.2: resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: @@ -1276,6 +1190,10 @@ packages: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: false + /@algolia/requester-common@4.15.0: + resolution: {integrity: sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==} + dev: false + /@algolia/requester-node-http@4.14.2: resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: @@ -1290,6 +1208,14 @@ packages: '@algolia/requester-common': 4.14.2 dev: false + /@algolia/transporter@4.15.0: + resolution: {integrity: sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==} + dependencies: + '@algolia/cache-common': 4.15.0 + '@algolia/logger-common': 4.15.0 + '@algolia/requester-common': 4.15.0 + dev: false + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -2584,6 +2510,10 @@ packages: '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false + /@chakra-ui/anatomy@2.1.2: + resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} + dev: false + /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: @@ -2673,6 +2603,24 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/color-mode@2.1.12(react@17.0.2): + resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@17.0.2) + react: 17.0.2 + dev: false + + /@chakra-ui/color-mode@2.1.12(react@18.0.0): + resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.0.0) + react: 18.0.0 + dev: false + /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: @@ -2775,14 +2723,25 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/icons@1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2): + /@chakra-ui/icon@2.0.5(@chakra-ui/system@2.5.2)(react@17.0.2): + resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} + peerDependencies: + '@chakra-ui/system': '>=1.0.0' + react: '>=16.8.6' + dependencies: + '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/utils': 1.10.4 + react: 17.0.2 + dev: false + + /@chakra-ui/icons@1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' dependencies: - '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) - '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@2.5.2)(react@17.0.2) + '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false @@ -2908,6 +2867,10 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/object-utils@2.0.8: + resolution: {integrity: sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q==} + dev: false + /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: @@ -3018,6 +2981,22 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@17.0.2): + resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 17.0.2 + dev: false + + /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@18.0.0): + resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.0.0 + dev: false + /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: @@ -3027,6 +3006,24 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/react-utils@2.0.12(react@17.0.2): + resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/utils': 2.0.15 + react: 17.0.2 + dev: false + + /@chakra-ui/react-utils@2.0.12(react@18.0.0): + resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/utils': 2.0.15 + react: 18.0.0 + dev: false + /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: @@ -3104,6 +3101,10 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/shared-utils@2.0.5: + resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} + dev: false + /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: @@ -3167,6 +3168,14 @@ packages: csstype: 3.0.9 dev: false + /@chakra-ui/styled-system@2.6.2: + resolution: {integrity: sha512-BRKL0KVkukyZmK61PTOnNS/2S+RPYEJHxumj/3HdniSWQlmymRB+8NALtXfrS1G10cbRBkIglPY7/0VLNNr3OA==} + dependencies: + '@chakra-ui/shared-utils': 2.0.5 + csstype: 3.1.1 + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: @@ -3198,6 +3207,44 @@ packages: react-fast-compare: 3.2.0 dev: false + /@chakra-ui/system@2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): + resolution: {integrity: sha512-nmQZi/YeI6u0UkUHIRcS/iJ71DZDjD3Yk90IGElkkQdGMR4dYKGV3RwBMNoIbpRUKZXDuqUGsXGSLERXwwiqzw==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + dependencies: + '@chakra-ui/color-mode': 2.1.12(react@17.0.2) + '@chakra-ui/object-utils': 2.0.8 + '@chakra-ui/react-utils': 2.0.12(react@17.0.2) + '@chakra-ui/styled-system': 2.6.2 + '@chakra-ui/theme-utils': 2.0.12 + '@chakra-ui/utils': 2.0.15 + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + react: 17.0.2 + react-fast-compare: 3.2.0 + dev: false + + /@chakra-ui/system@2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.0.0): + resolution: {integrity: sha512-nmQZi/YeI6u0UkUHIRcS/iJ71DZDjD3Yk90IGElkkQdGMR4dYKGV3RwBMNoIbpRUKZXDuqUGsXGSLERXwwiqzw==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + dependencies: + '@chakra-ui/color-mode': 2.1.12(react@18.0.0) + '@chakra-ui/object-utils': 2.0.8 + '@chakra-ui/react-utils': 2.0.12(react@18.0.0) + '@chakra-ui/styled-system': 2.6.2 + '@chakra-ui/theme-utils': 2.0.12 + '@chakra-ui/utils': 2.0.15 + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + react: 18.0.0 + react-fast-compare: 3.2.0 + dev: false + /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: @@ -3258,6 +3305,36 @@ packages: '@ctrl/tinycolor': 3.4.1 dev: false + /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@2.5.2): + resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} + peerDependencies: + '@chakra-ui/system': '>=1.0.0' + dependencies: + '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/utils': 1.10.4 + '@ctrl/tinycolor': 3.4.1 + dev: false + + /@chakra-ui/theme-tools@2.0.17(@chakra-ui/styled-system@2.6.2): + resolution: {integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.6.2 + color2k: 2.0.2 + dev: false + + /@chakra-ui/theme-utils@2.0.12: + resolution: {integrity: sha512-mxjeQRicCCj07RY2UXRRonlR4RETBsORlOD24mIip6GfrS1N0jx2FYUCTF8rMuVSjWrDvxeiyl+BVs6e8Fqv3w==} + dependencies: + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.6.2 + '@chakra-ui/theme': 2.2.5(@chakra-ui/styled-system@2.6.2) + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: @@ -3269,6 +3346,17 @@ packages: '@chakra-ui/utils': 1.10.4 dev: false + /@chakra-ui/theme@2.2.5(@chakra-ui/styled-system@2.6.2): + resolution: {integrity: sha512-hYASZMwu0NqEv6PPydu+F3I+kMNd44yR4TwjR/lXBz/LEh64L6UPY6kQjebCfgdVtsGdl3HKg+eLlfa7SvfRgw==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.6.2 + '@chakra-ui/theme-tools': 2.0.17(@chakra-ui/styled-system@2.6.2) + dev: false + /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: @@ -3330,6 +3418,15 @@ packages: lodash.mergewith: 4.6.2 dev: false + /@chakra-ui/utils@2.0.15: + resolution: {integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==} + dependencies: + '@types/lodash.mergewith': 4.6.7 + css-box-model: 1.2.1 + framesync: 6.1.2 + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: @@ -3539,7 +3636,7 @@ packages: /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@babel/runtime': 7.21.0 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 @@ -3598,7 +3695,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -3634,7 +3731,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) @@ -4187,23 +4284,6 @@ packages: - supports-color dev: true - /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0): - resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} - peerDependencies: - '@graphql-typed-document-node/core': '*' - '@types/node': '*' - graphql: '*' - peerDependenciesMeta: - '@graphql-typed-document-node/core': - optional: true - dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) - '@types/node': 18.15.5 - graphql: 16.6.0 - undici: 5.7.0 - dev: false - /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: @@ -4220,25 +4300,6 @@ packages: graphql: 17.0.0-alpha.2 undici: 5.7.0 - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): - resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} - peerDependencies: - '@graphql-ez/fastify': 0.12.0 - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - dependencies: - '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - transitivePeerDependencies: - - '@graphql-typed-document-node/core' - - '@types/node' - dev: false - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: @@ -4322,28 +4383,6 @@ packages: graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) dev: false - /@graphql-ez/nextjs@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4): - resolution: {integrity: sha512-oZNeAu8Kbi0QmGpyK17QIjS5Vxzn6smCjZ4qE5+OKmAeJ8iSlTJlZtUn+ALEG0DzEIFg2nPM5xTAMlKO47WdCg==} - engines: {node: '>=14.13.1'} - peerDependencies: - '@types/node': '*' - graphql: '*' - graphql-ez: ^0.16.0 - next: ^12.3.4 - peerDependenciesMeta: - graphql: - optional: true - next: - optional: true - dependencies: - '@types/cors': 2.8.13 - '@types/node': 18.15.5 - cors: 2.8.5 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) - dev: false - /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} @@ -4407,20 +4446,6 @@ packages: - graphql dev: false - /@graphql-ez/plugin-graphiql@0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): - resolution: {integrity: sha512-d2MPAi6MXaDzKPr/Ai2+GNn/6mQKoNfbeQLudIzNOr1/zc00tO5HAgDaO8WwhHTDfCX+GwFw2Bgr4ZOU3lv+Uw==} - engines: {node: '>=14.13.1'} - peerDependencies: - graphql-ez: ^0.16.0 - dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@pablosz/graphql-helix-graphiql': 4.2.2(@types/node@18.15.5)(graphql@16.6.0) - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - transitivePeerDependencies: - - '@types/node' - - graphql - dev: false - /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} @@ -4759,14 +4784,14 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/icons': 1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2) '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) '@mdx-js/react': 2.3.0(react@17.0.2) - '@theguild/components': 1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + '@theguild/components': 1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) immer: 9.0.12 mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2)(unist-util-visit@2.0.3) @@ -5420,15 +5445,6 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pablosz/graphql-helix-graphiql@4.2.2(@types/node@18.15.5)(graphql@16.6.0): - resolution: {integrity: sha512-KvSzKAM7amhSsr1D2ZeAynSXzkZfCWOrRPdawcCowKR2t7o8BkUQc91o0wcVgnqzf5YJLp1xYKhxUvzYsHxy1g==} - dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - transitivePeerDependencies: - - '@types/node' - - graphql - dev: false - /@pablosz/graphql-helix@2.0.3(graphql@16.6.0): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: @@ -5914,15 +5930,15 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: true - /@theguild/components@1.12.0(@algolia/client-search@4.14.2)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): + /@theguild/components@1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} peerDependencies: react: ^17.0.2 react-dom: ^17.0.2 dependencies: - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) - '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2)(search-insights@2.2.1) - '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(@algolia/client-search@4.14.2)(algoliasearch@4.14.2) + '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2)(search-insights@2.2.1) + '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) '@algolia/autocomplete-theme-classic': 1.7.2 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) @@ -6029,12 +6045,6 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.15.5 - /@types/cors@2.8.13: - resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} - dependencies: - '@types/node': 18.15.5 - dev: false - /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -6185,6 +6195,12 @@ packages: '@types/lodash': 4.14.191 dev: false + /@types/lodash.mergewith@4.6.7: + resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} + dependencies: + '@types/lodash': 4.14.191 + dev: false + /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} @@ -7661,6 +7677,10 @@ packages: simple-swizzle: 0.2.2 dev: false + /color2k@2.0.2: + resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} + dev: false + /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: @@ -7853,14 +7873,6 @@ packages: requiresBuild: true dev: false - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: false - /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -9721,6 +9733,12 @@ packages: tslib: 2.5.0 dev: false + /framesync@6.1.2: + resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} + dependencies: + tslib: 2.4.0 + dev: false + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -11490,6 +11508,7 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -13712,6 +13731,13 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /react@18.0.0: + resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -15570,6 +15596,7 @@ packages: /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + dev: true /vfile-location@4.0.1: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} From fd9186a362385f27572074e73f56297900610fb7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 03:17:50 +0800 Subject: [PATCH 024/122] chore: cleanup comments --- packages/gqty/src/Cache/index.ts | 4 ++-- packages/gqty/src/Cache/query.ts | 2 -- packages/gqty/src/Client/resolveSelections.ts | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index e879ea992..16f0e4082 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -185,7 +185,7 @@ export class Cache { } } - // FIXME + // TODO: Optimization // This is pretty inefficient, but maintaining an indexed tree is too much // effort right now. Accepting PRs. #notifySubscribers = (value: CacheRoot) => { @@ -275,7 +275,7 @@ export class Cache { } }; - /* FIXME + /* TODO: Refactor * * Caching accessors by selections is a mean to retain sub-selections when * nullable arrays and objects has null cached, such accessors will return diff --git a/packages/gqty/src/Cache/query.ts b/packages/gqty/src/Cache/query.ts index 0eebe31e7..2f2e4bcb7 100644 --- a/packages/gqty/src/Cache/query.ts +++ b/packages/gqty/src/Cache/query.ts @@ -53,5 +53,3 @@ export const getActivePromises = ( ): Promise[] => [ ...(deduplicationCache.get(cache ?? nullObjectKey)?.values() ?? []), ]; - -// TODO: Test concurrent fetch and subscriptions diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index f88ecc2ef..7c784c608 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -74,7 +74,7 @@ export const fetchSelections = < result.error = GQtyError.fromGraphQLErrors(errors); } - // FIXME: Defer logging until after cache update + // TODO: Defer logging until after cache update debug?.dispatch({ cache, request: queryPayload, @@ -417,5 +417,3 @@ const isWsClient = (client?: SseClient | WsClient): client is WsClient => { const isSseClient = (client?: SseClient | WsClient): client is SseClient => client !== undefined && !isWsClient(client); - -// TODO: Test unsubscribe on both subscription and fetch with concurrent subscribers. From 526a01a0843807387415e41f3df3227dff2fbc68 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 22 Mar 2023 03:24:46 +0800 Subject: [PATCH 025/122] chore: changesets --- .changeset/afraid-flowers-thank.md | 5 ++++ .changeset/cyan-seas-relax.md | 5 ++++ .changeset/dull-hotels-listen.md | 5 ++++ .changeset/empty-worms-smell.md | 5 ++++ .changeset/four-toys-crash.md | 5 ++++ .changeset/gold-lemons-pump.md | 5 ++++ .changeset/grumpy-clouds-notice.md | 5 ++++ .changeset/hip-kangaroos-give.md | 5 ++++ .changeset/metal-windows-fly.md | 5 ++++ .changeset/moody-onions-exercise.md | 5 ++++ .changeset/polite-maps-draw.md | 5 ++++ .changeset/polite-wolves-explode.md | 5 ++++ .changeset/pre.json | 45 +++++++++++++++++++++++++++++ .changeset/rare-pets-tan.md | 5 ++++ .changeset/seven-rings-retire.md | 5 ++++ .changeset/small-fishes-dress.md | 5 ++++ .changeset/stale-schools-sleep.md | 5 ++++ .changeset/stale-windows-march.md | 5 ++++ .changeset/tiny-brooms-check.md | 5 ++++ .changeset/tricky-coins-breathe.md | 5 ++++ .changeset/violet-lions-count.md | 5 ++++ .changeset/wise-coins-doubt.md | 5 ++++ .changeset/young-clocks-attend.md | 5 ++++ examples/github/package.json | 4 +-- examples/react/package.json | 10 +++---- examples/vite-example/package.json | 6 ++-- integration/graphql-17/package.json | 4 +-- packages/cli/CHANGELOG.md | 13 ++++++++- packages/cli/package.json | 4 +-- packages/gqty/CHANGELOG.md | 30 ++++++++++++++++++- packages/gqty/package.json | 2 +- packages/logger/CHANGELOG.md | 6 ++++ packages/logger/package.json | 6 ++-- packages/react/CHANGELOG.md | 21 +++++++++++++- packages/react/package.json | 6 ++-- packages/subscriptions/CHANGELOG.md | 6 ++++ packages/subscriptions/package.json | 6 ++-- pnpm-lock.yaml | 36 +++++++++++------------ 38 files changed, 270 insertions(+), 45 deletions(-) create mode 100644 .changeset/afraid-flowers-thank.md create mode 100644 .changeset/cyan-seas-relax.md create mode 100644 .changeset/dull-hotels-listen.md create mode 100644 .changeset/empty-worms-smell.md create mode 100644 .changeset/four-toys-crash.md create mode 100644 .changeset/gold-lemons-pump.md create mode 100644 .changeset/grumpy-clouds-notice.md create mode 100644 .changeset/hip-kangaroos-give.md create mode 100644 .changeset/metal-windows-fly.md create mode 100644 .changeset/moody-onions-exercise.md create mode 100644 .changeset/polite-maps-draw.md create mode 100644 .changeset/polite-wolves-explode.md create mode 100644 .changeset/pre.json create mode 100644 .changeset/rare-pets-tan.md create mode 100644 .changeset/seven-rings-retire.md create mode 100644 .changeset/small-fishes-dress.md create mode 100644 .changeset/stale-schools-sleep.md create mode 100644 .changeset/stale-windows-march.md create mode 100644 .changeset/tiny-brooms-check.md create mode 100644 .changeset/tricky-coins-breathe.md create mode 100644 .changeset/violet-lions-count.md create mode 100644 .changeset/wise-coins-doubt.md create mode 100644 .changeset/young-clocks-attend.md diff --git a/.changeset/afraid-flowers-thank.md b/.changeset/afraid-flowers-thank.md new file mode 100644 index 000000000..e951bb00e --- /dev/null +++ b/.changeset/afraid-flowers-thank.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +Added `operationName` in `useTransactionQuery()` diff --git a/.changeset/cyan-seas-relax.md b/.changeset/cyan-seas-relax.md new file mode 100644 index 000000000..1fd805f1c --- /dev/null +++ b/.changeset/cyan-seas-relax.md @@ -0,0 +1,5 @@ +--- +'gqty': minor +--- + +Added `$meta` API diff --git a/.changeset/dull-hotels-listen.md b/.changeset/dull-hotels-listen.md new file mode 100644 index 000000000..021c06c0a --- /dev/null +++ b/.changeset/dull-hotels-listen.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Added "Legacy" prefix to deprecated types diff --git a/.changeset/empty-worms-smell.md b/.changeset/empty-worms-smell.md new file mode 100644 index 000000000..1039a6b31 --- /dev/null +++ b/.changeset/empty-worms-smell.md @@ -0,0 +1,5 @@ +--- +'@gqty/cli': major +--- + +dropped inferrable types from generated schema diff --git a/.changeset/four-toys-crash.md b/.changeset/four-toys-crash.md new file mode 100644 index 000000000..1e7269cfb --- /dev/null +++ b/.changeset/four-toys-crash.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Added new logging interface for `@gqty/logger` diff --git a/.changeset/gold-lemons-pump.md b/.changeset/gold-lemons-pump.md new file mode 100644 index 000000000..2bde214ea --- /dev/null +++ b/.changeset/gold-lemons-pump.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +`backupPersistence()` and `restorePersistence()` is now replaced with `persist()`, `restore()` and `restoreAsync()`. diff --git a/.changeset/grumpy-clouds-notice.md b/.changeset/grumpy-clouds-notice.md new file mode 100644 index 000000000..99e3d8906 --- /dev/null +++ b/.changeset/grumpy-clouds-notice.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +Upgraded to the new core diff --git a/.changeset/hip-kangaroos-give.md b/.changeset/hip-kangaroos-give.md new file mode 100644 index 000000000..3c54812a6 --- /dev/null +++ b/.changeset/hip-kangaroos-give.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +QueryFetcher now accepts QueryPayload instead of 3 parameters diff --git a/.changeset/metal-windows-fly.md b/.changeset/metal-windows-fly.md new file mode 100644 index 000000000..3363de1ad --- /dev/null +++ b/.changeset/metal-windows-fly.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Remade `Cache` with expiry, normalization and persistence diff --git a/.changeset/moody-onions-exercise.md b/.changeset/moody-onions-exercise.md new file mode 100644 index 000000000..68104c8e8 --- /dev/null +++ b/.changeset/moody-onions-exercise.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Axed `Scheduler`, `Interceptor` and `EventHandler` diff --git a/.changeset/polite-maps-draw.md b/.changeset/polite-maps-draw.md new file mode 100644 index 000000000..46ad31348 --- /dev/null +++ b/.changeset/polite-maps-draw.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +Added `ResolverContainer` to replace scheduler for legacy resolvers. diff --git a/.changeset/polite-wolves-explode.md b/.changeset/polite-wolves-explode.md new file mode 100644 index 000000000..004c1b02d --- /dev/null +++ b/.changeset/polite-wolves-explode.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Reworked `Accessor` and added scoped context diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..1b926ba4f --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,45 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "example-github": "1.0.0", + "example-react": "1.0.0", + "example-vite": "0.0.0", + "integration-graphql-17": "0.0.1", + "test-utils": "0.1.0", + "website": "0.0.1", + "@gqty/cli": "3.3.0", + "gqty": "2.3.0", + "@gqty/logger": "2.0.2", + "@gqty/react": "2.1.1", + "@gqty/subscriptions": "2.0.1" + }, + "changesets": [ + "afraid-flowers-thank", + "cool-wolves-own", + "cyan-seas-relax", + "dull-hotels-listen", + "empty-worms-smell", + "four-toys-crash", + "gold-lemons-pump", + "grumpy-clouds-notice", + "hip-kangaroos-give", + "metal-windows-fly", + "moody-onions-exercise", + "polite-maps-draw", + "polite-wolves-explode", + "rare-pets-tan", + "seven-rings-retire", + "small-fishes-dress", + "small-penguins-invent", + "sour-rocks-vanish", + "stale-schools-sleep", + "stale-windows-march", + "tiny-brooms-check", + "tricky-bats-glow", + "tricky-coins-breathe", + "violet-lions-count", + "wise-coins-doubt", + "young-clocks-attend" + ] +} diff --git a/.changeset/rare-pets-tan.md b/.changeset/rare-pets-tan.md new file mode 100644 index 000000000..422b665e8 --- /dev/null +++ b/.changeset/rare-pets-tan.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Replaced `@gqty/subscriptions` with `graphql-ws` and `graphql-sse` diff --git a/.changeset/seven-rings-retire.md b/.changeset/seven-rings-retire.md new file mode 100644 index 000000000..e52519fd7 --- /dev/null +++ b/.changeset/seven-rings-retire.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +Added `retry` in `useQuery()` diff --git a/.changeset/small-fishes-dress.md b/.changeset/small-fishes-dress.md new file mode 100644 index 000000000..a68826023 --- /dev/null +++ b/.changeset/small-fishes-dress.md @@ -0,0 +1,5 @@ +--- +'@gqty/cli': major +--- + +generated query fetcher now takes a single QueryPayload parameter diff --git a/.changeset/stale-schools-sleep.md b/.changeset/stale-schools-sleep.md new file mode 100644 index 000000000..1f831ecba --- /dev/null +++ b/.changeset/stale-schools-sleep.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Rewritten `Selection` class diff --git a/.changeset/stale-windows-march.md b/.changeset/stale-windows-march.md new file mode 100644 index 000000000..83e9987b1 --- /dev/null +++ b/.changeset/stale-windows-march.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Introduced `resolve()` and `subscribe()` API diff --git a/.changeset/tiny-brooms-check.md b/.changeset/tiny-brooms-check.md new file mode 100644 index 000000000..b7423bbe9 --- /dev/null +++ b/.changeset/tiny-brooms-check.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': major +--- + +Fetch errors now throws to boundaries in suspense mode. diff --git a/.changeset/tricky-coins-breathe.md b/.changeset/tricky-coins-breathe.md new file mode 100644 index 000000000..146b9eaf9 --- /dev/null +++ b/.changeset/tricky-coins-breathe.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Replaced `lodash` with `just-*` and dropped `@gqty/utils` diff --git a/.changeset/violet-lions-count.md b/.changeset/violet-lions-count.md new file mode 100644 index 000000000..ad9aef1b9 --- /dev/null +++ b/.changeset/violet-lions-count.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Deprecated `resolved()`, `inlineResolved()`, `mutate()`, `track()`, `prefetch()` and `refetch()` diff --git a/.changeset/wise-coins-doubt.md b/.changeset/wise-coins-doubt.md new file mode 100644 index 000000000..1fb1b44f9 --- /dev/null +++ b/.changeset/wise-coins-doubt.md @@ -0,0 +1,5 @@ +--- +'gqty': minor +--- + +Added `name` in `GQtyError` for better logging diff --git a/.changeset/young-clocks-attend.md b/.changeset/young-clocks-attend.md new file mode 100644 index 000000000..f294abb40 --- /dev/null +++ b/.changeset/young-clocks-attend.md @@ -0,0 +1,5 @@ +--- +'gqty': major +--- + +Replace variable serializer with object-hash, now with shortened alias diff --git a/examples/github/package.json b/examples/github/package.json index 70d099ebc..1aae2d999 100644 --- a/examples/github/package.json +++ b/examples/github/package.json @@ -10,9 +10,9 @@ "test:manual": "jest -u" }, "dependencies": { - "@gqty/cli": "workspace:^3.3.0", + "@gqty/cli": "workspace:^4.0.0-alpha.0", "dotenv": "^16.0.3", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "test-utils": "workspace:^0.1.0" }, "devDependencies": { diff --git a/examples/react/package.json b/examples/react/package.json index e43a74795..a58412083 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -14,10 +14,10 @@ "@emotion/styled": "^11.10.6", "@envelop/core": "^3.0.6", "@faker-js/faker": "^7.6.0", - "@gqty/cli": "workspace:^3.3.0", - "@gqty/logger": "workspace:^2.0.2", - "@gqty/react": "workspace:^2.1.1", - "@gqty/subscriptions": "workspace:^2.0.1", + "@gqty/cli": "workspace:^4.0.0-alpha.0", + "@gqty/logger": "workspace:^3.0.0-alpha.0", + "@gqty/react": "workspace:^3.0.0-alpha.0", + "@gqty/subscriptions": "workspace:^3.0.0-alpha.0", "@graphql-ez/fastify": "^0.12.0", "@graphql-ez/plugin-altair": "^0.11.0", "@graphql-ez/plugin-codegen": "^0.8.0", @@ -30,7 +30,7 @@ "extract-files": "^13.0.0", "fastify": "^4.15.0", "framer-motion": "^6.5.1", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "^16.6.0", "graphql-ez": "^0.16.0", "graphql-upload": "^13.0.0", diff --git a/examples/vite-example/package.json b/examples/vite-example/package.json index 793984d53..f551af950 100644 --- a/examples/vite-example/package.json +++ b/examples/vite-example/package.json @@ -9,9 +9,9 @@ "serve": "vite preview" }, "dependencies": { - "@gqty/cli": "workspace:^3.3.0", - "@gqty/react": "workspace:^2.1.1", - "gqty": "workspace:^2.3.0", + "@gqty/cli": "workspace:^4.0.0-alpha.0", + "@gqty/react": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^3.0.0-alpha.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json index f8e34ecc8..15852d2cf 100644 --- a/integration/graphql-17/package.json +++ b/integration/graphql-17/package.json @@ -7,7 +7,7 @@ "test": "pnpm i --ignore-scripts && c8 ava" }, "devDependencies": { - "@gqty/cli": "workspace:^3.3.0", + "@gqty/cli": "workspace:^4.0.0-alpha.0", "@graphql-ez/fastify": "^0.12.0", "@graphql-ez/fastify-testing": "^0.4.0", "@graphql-typed-document-node/core": "^3.2.0", @@ -17,7 +17,7 @@ "c8": "^7.13.0", "esbuild": "^0.17.12", "fastify": "^4.11.0", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "17.0.0-alpha.2", "graphql-ez": "^0.16.0", "typescript": "^4.9.5" diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index b32e67fe6..862dba0e0 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @gqty/cli +## 4.0.0-alpha.0 + +### Major Changes + +- dropped inferrable types from generated schema +- generated query fetcher now takes a single QueryPayload parameter + +### Patch Changes + +- Upgraded to gqty@3.0.0-alpha.0 + ## 3.3.0 ### Minor Changes @@ -22,7 +33,7 @@ Test: '_TEST', MyValue: 'My_Value', } as const; - export type EnumAsConst = typeof EnumAsConst[keyof typeof EnumAsConst]; + export type EnumAsConst = (typeof EnumAsConst)[keyof typeof EnumAsConst]; function useEnum(value: Enum) {} function useEnumAsConst(value: EnumAsConst) {} diff --git a/packages/cli/package.json b/packages/cli/package.json index a0472fe84..b44eca140 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/cli", - "version": "3.3.0", + "version": "4.0.0-alpha.0", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -40,7 +40,7 @@ "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "p-lazy": "^3.1.0", "undici": "^5.21.0" }, diff --git a/packages/gqty/CHANGELOG.md b/packages/gqty/CHANGELOG.md index 45f47b074..f258aab22 100644 --- a/packages/gqty/CHANGELOG.md +++ b/packages/gqty/CHANGELOG.md @@ -1,5 +1,33 @@ # gqty +## 3.0.0-alpha.0 + +### Major Changes + +- Added "Legacy" prefix to deprecated types +- Added new logging interface for `@gqty/logger` +- `backupPersistence()` and `restorePersistence()` is now replaced with `persist()`, `restore()` and `restoreAsync()`. +- QueryFetcher now accepts QueryPayload instead of 3 parameters +- Remade `Cache` with expiry, normalization and persistence +- Axed `Scheduler`, `Interceptor` and `EventHandler` +- Reworked `Accessor` and added scoped context +- Replaced `@gqty/subscriptions` with `graphql-ws` and `graphql-sse` +- Rewritten `Selection` class +- Introduced `resolve()` and `subscribe()` API +- Replaced `lodash` with `just-*` and dropped `@gqty/utils` +- Deprecated `resolved()`, `inlineResolved()`, `mutate()`, `track()`, `prefetch()` and `refetch()` +- Replace variable serializer with object-hash, now with shortened alias + +### Minor Changes + +- f39bb450: Add `operationName` option to `resolved()` and `inlineResolved()`. +- Added `$meta` API +- Added `name` in `GQtyError` for better logging + +### Patch Changes + +- 595ec843: Remove alias without args + ## 2.3.0 ### Minor Changes @@ -105,7 +133,7 @@ return query.user(args).name; } - function getUserEmail(args: Args) { + function getUserEmail(args: Args<(typeof query)['user']>) { return query.user(args).email; } ``` diff --git a/packages/gqty/package.json b/packages/gqty/package.json index bc6235e97..9ec13cab9 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -1,6 +1,6 @@ { "name": "gqty", - "version": "2.3.0", + "version": "3.0.0-alpha.0", "description": "gqty client without queries", "homepage": "https://gqty.dev", "repository": { diff --git a/packages/logger/CHANGELOG.md b/packages/logger/CHANGELOG.md index 0cd0e94a8..158192d87 100644 --- a/packages/logger/CHANGELOG.md +++ b/packages/logger/CHANGELOG.md @@ -1,5 +1,11 @@ # @gqty/logger +## 3.0.0-alpha.0 + +### Patch Changes + +- Upgraded to gqty@3.0.0-alpha.0 + ## 2.0.2 ### Patch Changes diff --git a/packages/logger/package.json b/packages/logger/package.json index 93fab19ae..42a5dac9b 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/logger", - "version": "2.0.2", + "version": "3.0.0-alpha.0", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -46,7 +46,7 @@ "@types/prettier": "^2.7.2", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.12", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "jest": "^29.5.0", "size-limit": "^8.2.4", "test-utils": "workspace:^0.1.0", @@ -54,7 +54,7 @@ "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^2.0.2" + "gqty": "workspace:^3.0.0-alpha.0" }, "engines": { "node": "^12.20.0 || >=14.13.0" diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index f4404c779..713bb80a4 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,24 @@ # @gqty/react +## 3.0.0-alpha.0 + +### Major Changes + +- Fetch errors now throws to boundaries in suspense mode. + +### Minor Changes + +- Added `operationName` in `useTransactionQuery()` +- Upgraded to the new core +- Added `ResolverContainer` to replace scheduler for legacy resolvers. +- Added `retry` in `useQuery()` +- 11604f54: Window focus refetching +- 6626d802: Add `$refetch` in `useQuery()` + +### Patch Changes + +- Upgraded to gqty@3.0.0-alpha.0 + ## 2.1.1 ### Patch Changes @@ -73,7 +92,7 @@ ### Patch Changes - 3f08372: publish fork -- 184a074: fix update loop https://github.com/PabloSzx/gqty/pull/223 +- 184a074: fix update loop - Updated dependencies [3f08372] - gqty@2.0.15 diff --git a/packages/react/package.json b/packages/react/package.json index 4bb3cca0a..ab5ffe085 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/react", - "version": "2.1.1", + "version": "3.0.0-alpha.0", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -97,7 +97,7 @@ "esbuild": "^0.17.12", "eslint": "^8.35.0", "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "^16.6.0", "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", @@ -115,7 +115,7 @@ "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^2.0.4", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "*", "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", diff --git a/packages/subscriptions/CHANGELOG.md b/packages/subscriptions/CHANGELOG.md index 608d9c673..92fe68b3f 100644 --- a/packages/subscriptions/CHANGELOG.md +++ b/packages/subscriptions/CHANGELOG.md @@ -1,5 +1,11 @@ # @gqty/subscriptions +## 3.0.0-alpha.0 + +### Patch Changes + +- Upgraded to gqty@3.0.0-alpha.0 + ## 2.0.1 ### Patch Changes diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json index 149c26ffc..a8b31e990 100644 --- a/packages/subscriptions/package.json +++ b/packages/subscriptions/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/subscriptions", - "version": "2.0.1", + "version": "3.0.0-alpha.0", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -42,14 +42,14 @@ "@types/ws": "^8.5.4", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.10", - "gqty": "workspace:^2.3.0", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "^16.6.0", "test-utils": "workspace:^0.1.0", "tslib": "^2.5.0", "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^2.0.0", + "gqty": "workspace:^3.0.0-alpha.0", "graphql": "*" }, "peerDependenciesMeta": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11e513ee6..2b1357b94 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,13 +114,13 @@ importers: examples/github: dependencies: '@gqty/cli': - specifier: workspace:^3.3.0 + specifier: workspace:^4.0.0-alpha.0 version: link:../../packages/cli/dist dotenv: specifier: ^16.0.3 version: 16.0.3 gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/gqty/dist test-utils: specifier: workspace:^0.1.0 @@ -160,16 +160,16 @@ importers: specifier: ^7.6.0 version: 7.6.0 '@gqty/cli': - specifier: workspace:^3.3.0 + specifier: workspace:^4.0.0-alpha.0 version: link:../../packages/cli/dist '@gqty/logger': - specifier: workspace:^2.0.2 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/logger/dist '@gqty/react': - specifier: workspace:^2.1.1 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/react/dist '@gqty/subscriptions': - specifier: workspace:^2.0.1 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 @@ -208,7 +208,7 @@ importers: specifier: ^6.5.1 version: 6.5.1(react-dom@17.0.2)(react@17.0.2) gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/gqty/dist graphql: specifier: ^16.6.0 @@ -296,13 +296,13 @@ importers: examples/vite-example: dependencies: '@gqty/cli': - specifier: workspace:^3.3.0 + specifier: workspace:^4.0.0-alpha.0 version: link:../../packages/cli/dist '@gqty/react': - specifier: workspace:^2.1.1 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/react/dist gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../../packages/gqty/dist react: specifier: ^17.0.2 @@ -361,7 +361,7 @@ importers: version: 2.0.3 devDependencies: '@gqty/cli': - specifier: workspace:^3.3.0 + specifier: workspace:^4.0.0-alpha.0 version: file:packages/cli/dist(graphql@17.0.0-alpha.2) '@graphql-ez/fastify': specifier: ^0.12.0 @@ -391,7 +391,7 @@ importers: specifier: ^4.11.0 version: 4.11.0 gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: file:packages/gqty/dist(graphql@17.0.0-alpha.2) graphql: specifier: 17.0.0-alpha.2 @@ -599,7 +599,7 @@ importers: packages/cli: dependencies: gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist p-lazy: specifier: ^3.1.0 @@ -841,7 +841,7 @@ importers: specifier: ^0.17.12 version: 0.17.12 gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist jest: specifier: ^29.5.0 @@ -927,7 +927,7 @@ importers: specifier: ^6.12.0 version: 6.12.0 gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist graphql: specifier: ^16.6.0 @@ -998,7 +998,7 @@ importers: specifier: ^0.17.10 version: 0.17.12 gqty: - specifier: workspace:^2.3.0 + specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist graphql: specifier: ^16.6.0 @@ -16070,7 +16070,7 @@ packages: resolution: {directory: packages/cli/dist, type: directory} id: file:packages/cli/dist name: '@gqty/cli' - version: 3.3.0 + version: 4.0.0-alpha.0 engines: {node: ^12.20.0 || >=14.13.0} hasBin: true peerDependencies: @@ -16089,7 +16089,7 @@ packages: resolution: {directory: packages/gqty/dist, type: directory} id: file:packages/gqty/dist name: gqty - version: 2.3.0 + version: 3.0.0-alpha.0 engines: {node: ^12.20.0 || >=14.13.0} peerDependencies: graphql: '*' From 959d4bc8b80c045f5ddaac3fd8e69271d8cf4ae6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 27 Mar 2023 11:44:41 +0800 Subject: [PATCH 026/122] chore: cosmetic changes --- README.md | 7 +-- examples/react/src/components/client.ts | 16 +++--- packages/react/src/client.ts | 66 ++++++++++++------------- 3 files changed, 44 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index ec4bd185b..8eeae0cb5 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,14 @@

@@ -20,7 +21,7 @@ --- -Head over to [gqty.dev](https://gqty.dev), to explore features and documentation. +Head over to [gqty.dev](https://gqty.dev) to explore features and documentation. --- diff --git a/examples/react/src/components/client.ts b/examples/react/src/components/client.ts index 0d127d82c..a44b5e67a 100644 --- a/examples/react/src/components/client.ts +++ b/examples/react/src/components/client.ts @@ -3,19 +3,19 @@ import { createReactClient } from '@gqty/react'; import { cache, client, GeneratedSchema } from '../graphql/gqty'; export const { - useTransactionQuery, - useQuery, - state, graphql, - useRefetch, - useLazyQuery, + prepareQuery, prepareReactRender, + state, useHydrateCache, - useMutation, + useLazyQuery, useMetaState, - useSubscription, - prepareQuery, + useMutation, usePaginatedQuery, + useQuery, + useRefetch, + useSubscription, + useTransactionQuery, } = createReactClient(client, { defaults: { suspense: true, diff --git a/packages/react/src/client.ts b/packages/react/src/client.ts index f0b1bd1e8..927494967 100644 --- a/packages/react/src/client.ts +++ b/packages/react/src/client.ts @@ -178,42 +178,40 @@ export interface ReactClient { export function createReactClient( client: GQtyClient, - optsCreate: CreateReactClientOptions = {} + { + defaults: { + suspense = false, + transactionFetchPolicy = 'cache-first', + lazyFetchPolicy = 'network-only', + staleWhileRevalidate = false, + retry = true, + lazyQuerySuspense = false, + transactionQuerySuspense = suspense, + mutationSuspense = false, + preparedSuspense = suspense, + refetchAfterHydrate = false, + paginatedQueryFetchPolicy = 'cache-first', + paginatedQuerySuspense = suspense, + } = {}, + ...options + }: CreateReactClientOptions = {} ): ReactClient { - const { suspense = false } = (optsCreate.defaults ||= {}); - - const { - transactionFetchPolicy = 'cache-first', - lazyFetchPolicy = 'network-only', - staleWhileRevalidate = false, - retry = true, - lazyQuerySuspense = false, - transactionQuerySuspense = suspense, - mutationSuspense = false, - preparedSuspense = suspense, - refetchAfterHydrate = false, - paginatedQueryFetchPolicy = 'cache-first', - paginatedQuerySuspense = suspense, - } = optsCreate.defaults; - - const defaults: ReactClientOptionsWithDefaults['defaults'] = { - transactionFetchPolicy, - lazyFetchPolicy, - staleWhileRevalidate, - suspense, - retry, - lazyQuerySuspense, - transactionQuerySuspense, - mutationSuspense, - preparedSuspense, - refetchAfterHydrate, - paginatedQueryFetchPolicy, - paginatedQuerySuspense, - }; - const opts: ReactClientOptionsWithDefaults = { - ...optsCreate, - defaults, + ...options, + defaults: { + transactionFetchPolicy, + lazyFetchPolicy, + staleWhileRevalidate, + suspense, + retry, + lazyQuerySuspense, + transactionQuerySuspense, + mutationSuspense, + preparedSuspense, + refetchAfterHydrate, + paginatedQueryFetchPolicy, + paginatedQuerySuspense, + }, }; const { prepareReactRender, useHydrateCache } = createSSRHelpers( From 3a9b29a71aea2ce4685704d9b68bc16c6e49a6d0 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 27 Mar 2023 13:01:35 +0800 Subject: [PATCH 027/122] chore: rename fetchPolicy to cachePolicy --- .../gqty/src/Client/compat/hydrateCache.ts | 2 +- .../gqty/src/Client/compat/inlineResolved.ts | 2 +- packages/gqty/src/Client/compat/mutate.ts | 2 +- packages/gqty/src/Client/compat/resolved.ts | 2 +- packages/gqty/src/Client/compat/track.ts | 2 +- packages/gqty/src/Client/context.ts | 16 +++++++-------- packages/gqty/src/Client/index.ts | 10 +++++----- packages/gqty/src/Client/resolvers.ts | 20 +++++++++++++------ packages/react/src/common.ts | 4 ++-- packages/react/src/mutation/useMutation.ts | 2 +- packages/react/src/query/useLazyQuery.ts | 2 +- packages/react/src/query/usePaginatedQuery.ts | 4 ++-- packages/react/src/query/useQuery.ts | 4 ++-- pnpm-lock.yaml | 4 ++-- 14 files changed, 42 insertions(+), 34 deletions(-) diff --git a/packages/gqty/src/Client/compat/hydrateCache.ts b/packages/gqty/src/Client/compat/hydrateCache.ts index e888fb76d..767b76518 100644 --- a/packages/gqty/src/Client/compat/hydrateCache.ts +++ b/packages/gqty/src/Client/compat/hydrateCache.ts @@ -58,7 +58,7 @@ export const createLegacyHydrateCache = cache, fetchOptions: { ...fetchOptions, - fetchPolicy: 'no-cache', // refetch + cachePolicy: 'no-cache', // refetch }, }).then((results) => updateCaches(results, [cache])); }, diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index e7734a2cf..dfd3802d9 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -43,7 +43,7 @@ export const createLegacyInlineResolved = < } = {} ) => { const { context, selections, resolve } = createResolver({ - fetchPolicy: refetch ? 'no-cache' : 'default', + cachePolicy: refetch ? 'no-cache' : 'default', operationName, }); const unsubscribe = subscribeLegacySelections((selection, cache) => { diff --git a/packages/gqty/src/Client/compat/mutate.ts b/packages/gqty/src/Client/compat/mutate.ts index c65a95d01..49e269123 100644 --- a/packages/gqty/src/Client/compat/mutate.ts +++ b/packages/gqty/src/Client/compat/mutate.ts @@ -30,7 +30,7 @@ export const createLegacyMutate = async (fn, { onComplete, onError } = {}) => { try { const data = (await resolve(({ mutation }) => fn(mutation), { - fetchPolicy: 'no-cache', + cachePolicy: 'no-cache', })) as ReturnType; onComplete?.(data, { diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index f5340dd17..348848d1a 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -122,7 +122,7 @@ export const createLegacyResolved = < }: LegacyResolveOptions = {} ) => { const { context, selections } = createResolver({ - fetchPolicy: noCache ? 'no-store' : refetch ? 'no-cache' : 'default', + cachePolicy: noCache ? 'no-store' : refetch ? 'no-cache' : 'default', operationName, }); const unsubscribe = subscribeLegacySelections((selection, cache) => { diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index 94d1b1133..28d02f9d2 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -42,7 +42,7 @@ export const createLegacyTrack = < { onError, operationName, refetch = false } = {} ) => { const { context, selections, subscribe } = createResolver({ - fetchPolicy: refetch ? 'no-cache' : 'default', + cachePolicy: refetch ? 'no-cache' : 'default', operationName, }); const resolutionCache = refetch ? context.cache : cache; diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index aa1347bb0..cba3da283 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -24,7 +24,7 @@ export type SchemaContext< export type CreateContextOptions = { cache: Cache; depthLimit: number; - fetchPolicy: ResolveOptions['fetchPolicy']; + cachePolicy: ResolveOptions['cachePolicy']; onSelect?: NonNullable; scalars: ScalarsEnumsHash; schema: Readonly; @@ -33,22 +33,22 @@ export type CreateContextOptions = { export const createContext = ({ cache, + cachePolicy, depthLimit, - fetchPolicy, onSelect, scalars, schema, typeKeys, }: CreateContextOptions): SchemaContext => ({ cache: - fetchPolicy === 'no-cache' || fetchPolicy === 'no-store' - ? new Cache() + cachePolicy === 'no-cache' || cachePolicy === 'no-store' + ? new Cache(undefined, { maxAge: 0, normalization: false }) : cache, cacheOptions: { includeExpired: - fetchPolicy === 'default' || - fetchPolicy === 'force-cache' || - fetchPolicy === 'only-if-cached', + cachePolicy === 'default' || + cachePolicy === 'force-cache' || + cachePolicy === 'only-if-cached', }, scalars, schema, @@ -56,7 +56,7 @@ export const createContext = ({ hasCacheHit: false, hasCacheMiss: false, shouldFetch: false, - notifyCacheUpdate: fetchPolicy !== 'default', + notifyCacheUpdate: cachePolicy !== 'default', onSelect(selection, cacheNode) { const now = Date.now(); const { data, expiresAt: age = Infinity } = cacheNode ?? {}; diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 49a16f000..48971cb7f 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -91,7 +91,7 @@ export type FetchOptions = Omit & { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: Exclude; + cachePolicy?: Exclude; /** Default retry strategy upon fetch failure, configurable on query level. */ retryPolicy?: RetryOptions; @@ -134,7 +134,7 @@ export const createClient = < cache, fetchOptions: { fetcher, - fetchPolicy = 'default', + cachePolicy: fetchPolicy = 'default', retryPolicy: defaultRetryPolicy = { maxRetries: 3, retryDelay: 1000, @@ -170,7 +170,7 @@ export const createClient = < const defaultContextOptions: CreateContextOptions = { cache, depthLimit: __depthLimit, - fetchPolicy, + cachePolicy: fetchPolicy, scalars, schema, typeKeys: cache.normalizationOptions?.schemaKeys, @@ -186,7 +186,7 @@ export const createClient = < debugger: debug, fetchOptions: { fetcher, - fetchPolicy, + cachePolicy: fetchPolicy, retryPolicy: defaultRetryPolicy, subscriber, ...fetchOptions, @@ -210,7 +210,7 @@ export const createClient = < debugger: debug, fetchOptions: { fetcher, - fetchPolicy, + cachePolicy: fetchPolicy, retryPolicy: defaultRetryPolicy, subscriber, ...fetchOptions, diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 262465545..e77de9081 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -125,7 +125,7 @@ export type ResolveOptions = { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: FetchOptions['fetchPolicy']; + cachePolicy?: FetchOptions['cachePolicy']; retryPolicy?: FetchOptions['retryPolicy']; @@ -157,7 +157,7 @@ export type SubscribeOptions = { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: FetchOptions['fetchPolicy']; + fetchPolicy?: FetchOptions['cachePolicy']; retryPolicy?: FetchOptions['retryPolicy']; @@ -189,7 +189,7 @@ export const createResolvers = ({ depthLimit, fetchOptions, fetchOptions: { - fetchPolicy: defaultFetchPolicy = 'default', + cachePolicy: defaultFetchPolicy = 'default', retryPolicy: defaultRetryPoliy, }, scalars, @@ -207,7 +207,7 @@ export const createResolvers = ({ const context = createContext({ cache: clientCache, depthLimit, - fetchPolicy, + cachePolicy: fetchPolicy, onSelect(selection, cache) { // Prevents infinite loop created by legacy functions if (!selections.has(selection)) { @@ -233,7 +233,11 @@ export const createResolvers = ({ return fetchSelections(selections, { cache: context.cache, debugger: debug, - fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, + fetchOptions: { + ...fetchOptions, + cachePolicy: fetchPolicy, + retryPolicy, + }, operationName, }).then((results) => { updateCaches( @@ -325,7 +329,11 @@ export const createResolvers = ({ { cache: context.cache, debugger: debug, - fetchOptions: { ...fetchOptions, fetchPolicy, retryPolicy }, + fetchOptions: { + ...fetchOptions, + cachePolicy: fetchPolicy, + retryPolicy, + }, operationName, onSubscribe: () => onSubscribe?.(unsubscribe), onComplete: () => resolve(), diff --git a/packages/react/src/common.ts b/packages/react/src/common.ts index 6942823f1..3754160a0 100644 --- a/packages/react/src/common.ts +++ b/packages/react/src/common.ts @@ -26,7 +26,7 @@ export type LegacyFetchPolicy = export const legacyFetchPolicyMap: Record< LegacyFetchPolicy, - FetchOptions['fetchPolicy'] + FetchOptions['cachePolicy'] > = { 'cache-and-network': 'default', 'cache-first': 'default', @@ -36,7 +36,7 @@ export const legacyFetchPolicyMap: Record< export const translateFetchPolicy = ( fetchPolicy: LegacyFetchPolicy -): FetchOptions['fetchPolicy'] => +): FetchOptions['cachePolicy'] => legacyFetchPolicyMap[fetchPolicy] ?? 'default'; export type SelectionsOrProxy = (Selection | T)[]; diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index a99800128..9e304e0a9 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -110,7 +110,7 @@ export const createUseMutation = ( return fn(mutation, args as TArgs); }, { - fetchPolicy: noCache ? 'no-store' : 'no-cache', + cachePolicy: noCache ? 'no-store' : 'no-cache', retryPolicy: retry, } ).then((data) => { diff --git a/packages/react/src/query/useLazyQuery.ts b/packages/react/src/query/useLazyQuery.ts index d8c546c74..252fb86e9 100644 --- a/packages/react/src/query/useLazyQuery.ts +++ b/packages/react/src/query/useLazyQuery.ts @@ -160,7 +160,7 @@ export function createUseLazyQuery( ({ query }) => resolveFn(query, args as TArgs), { awaitsFetch: false, - fetchPolicy: translateFetchPolicy(fetchPolicy), + cachePolicy: translateFetchPolicy(fetchPolicy), onFetch(promise) { innerFetchPromise = promise as Promise; }, diff --git a/packages/react/src/query/usePaginatedQuery.ts b/packages/react/src/query/usePaginatedQuery.ts index b6456d4b3..52e03dfec 100644 --- a/packages/react/src/query/usePaginatedQuery.ts +++ b/packages/react/src/query/usePaginatedQuery.ts @@ -143,7 +143,7 @@ export const createUsePaginatedQuery = } = React.useMemo( () => createResolver({ - fetchPolicy: translateFetchPolicy(hookFetchPolicy), + cachePolicy: translateFetchPolicy(hookFetchPolicy), operationName, retryPolicy: retry, }), @@ -184,7 +184,7 @@ export const createUsePaginatedQuery = fetchPolicy: PaginatedQueryFetchPolicy = hookFetchPolicy ) => { const promise = resolve(({ query }) => fn(query, args, coreHelpers), { - fetchPolicy: translateFetchPolicy(fetchPolicy), + cachePolicy: translateFetchPolicy(fetchPolicy), operationName, retryPolicy: retry, onSelect(selection, cache) { diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index fd3cfe525..258b9c26b 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -104,7 +104,7 @@ export const createUseQuery = } = useMemo( () => client.createResolver({ - fetchPolicy: cacheMode, + cachePolicy: cacheMode, operationName, retryPolicy: retry, }), @@ -128,7 +128,7 @@ export const createUseQuery = // immediately. if (context.shouldFetch && suspense) { throw client.resolve(({ query }) => prepare({ prepass, query }), { - fetchPolicy: cacheMode, + cachePolicy: cacheMode, operationName, retryPolicy: retry, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b1357b94..df8732eb2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3695,7 +3695,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -3731,7 +3731,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.20.6 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) From cba3aebf43daafc4e2075a44f158d7a7f93d2f6b Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 29 Mar 2023 01:19:40 +0800 Subject: [PATCH 028/122] feat: add reload in cachePolicy --- packages/gqty/src/Client/context.ts | 7 ++++--- packages/gqty/src/Client/index.ts | 6 ++++-- packages/gqty/src/Client/resolvers.ts | 14 ++++++++------ packages/react/src/ssr/ssr.ts | 13 ++++++------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index cba3da283..8a13dcf38 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -1,7 +1,6 @@ import { Cache, CacheDataContainer, CacheGetOptions } from '../Cache'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; -import type { ResolveOptions } from './resolvers'; export type SchemaContext< T extends Record = Record @@ -24,7 +23,7 @@ export type SchemaContext< export type CreateContextOptions = { cache: Cache; depthLimit: number; - cachePolicy: ResolveOptions['cachePolicy']; + cachePolicy: RequestCache; onSelect?: NonNullable; scalars: ScalarsEnumsHash; schema: Readonly; @@ -41,7 +40,9 @@ export const createContext = ({ typeKeys, }: CreateContextOptions): SchemaContext => ({ cache: - cachePolicy === 'no-cache' || cachePolicy === 'no-store' + cachePolicy === 'no-cache' || + cachePolicy === 'no-store' || + cachePolicy === 'reload' ? new Cache(undefined, { maxAge: 0, normalization: false }) : cache, cacheOptions: { diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 48971cb7f..009f2faf8 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -81,7 +81,9 @@ export type FetchOptions = Omit & { * served on next query. * - `no-store`: Always fetch and does not update on response. * GQty creates a temporary cache at query-level which immediately expires. - * - `no-cache`: Always fetch, updates on response. + * - `reload`: Always fetch, updates on response. + * - `no-cache`: Same as `reload`, for GraphQL does not support conditional + * requests. * - `force-cache`: Serves the cached contents regardless of staleness. It * fetches on cache miss or a stale cache, updates cache on response. * - `only-if-cached`: Serves the cached contents regardless of staleness, @@ -91,7 +93,7 @@ export type FetchOptions = Omit & { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - cachePolicy?: Exclude; + cachePolicy?: RequestCache; /** Default retry strategy upon fetch failure, configurable on query level. */ retryPolicy?: RetryOptions; diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index e77de9081..659a96831 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -1,7 +1,7 @@ import type { BaseGeneratedSchema, FetchOptions } from '.'; import { createSchemaAccessor } from '../Accessor'; import type { Cache } from '../Cache'; -import type { GQtyError } from '../Error'; +import type { GQtyError, RetryOptions } from '../Error'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; import { pick } from '../Utils/pick'; @@ -115,7 +115,9 @@ export type ResolveOptions = { * served on next query. * - `no-store`: Always fetch and does not update on response. * GQty creates a temporary cache at query-level which immediately expires. - * - `no-cache`: Always fetch, updates on response. + * - `reload`: Always fetch, updates on response. + * - `no-cache`: Same as `reload`, for GraphQL does not support conditional + * requests. * - `force-cache`: Serves the cached contents regardless of staleness. It * fetches on cache miss or a stale cache, updates cache on response. * - `only-if-cached`: Serves the cached contents regardless of staleness, @@ -125,9 +127,9 @@ export type ResolveOptions = { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - cachePolicy?: FetchOptions['cachePolicy']; + cachePolicy?: RequestCache; - retryPolicy?: FetchOptions['retryPolicy']; + retryPolicy?: RetryOptions; onFetch?: (fetchPromise: Promise) => void; @@ -157,9 +159,9 @@ export type SubscribeOptions = { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: FetchOptions['cachePolicy']; + fetchPolicy?: RequestCache; - retryPolicy?: FetchOptions['retryPolicy']; + retryPolicy?: RetryOptions; /** * Intercept errors thrown from the underlying subscription client or query diff --git a/packages/react/src/ssr/ssr.ts b/packages/react/src/ssr/ssr.ts index 1176c54bc..592a2f470 100644 --- a/packages/react/src/ssr/ssr.ts +++ b/packages/react/src/ssr/ssr.ts @@ -1,10 +1,9 @@ -import { useMountEffect } from '@react-hookz/web'; import type { BaseGeneratedSchema, GQtyClient, LegacyHydrateCacheOptions, } from 'gqty'; -import * as React from 'react'; +import { useEffect, type ReactNode } from 'react'; import { getDefault, ReactClientOptionsWithDefaults } from '../utils'; export interface UseHydrateCacheOptions @@ -39,7 +38,7 @@ export interface UseHydrateCache { } export interface PrepareReactRender { - (element: React.ReactNode): Promise<{ + (element: ReactNode): Promise<{ cacheSnapshot: string; }>; } @@ -49,7 +48,7 @@ export function createSSRHelpers( { defaults: { refetchAfterHydrate } }: ReactClientOptionsWithDefaults ) { const prepareReactRender: PrepareReactRender = - async function prepareReactRender(element: React.ReactNode) { + async function prepareReactRender(element: ReactNode) { const ssrPrepass = getDefault(await import('react-ssr-prepass')); return prepareRender(() => ssrPrepass(element)); @@ -58,12 +57,12 @@ export function createSSRHelpers( cacheSnapshot, shouldRefetch = refetchAfterHydrate, }: UseHydrateCacheOptions) { - useMountEffect(() => { + useEffect(() => { if (cacheSnapshot) { hydrateCache({ cacheSnapshot, shouldRefetch: false }); } - }); - React.useEffect(() => { + }, []); + useEffect(() => { if (shouldRefetch) { refetch(query).catch(console.error); } From 85e7a85a450e3be32cb4a217bef1d54098783d7b Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 29 Mar 2023 23:49:19 +0800 Subject: [PATCH 029/122] fix: consistent API --- packages/gqty/src/Client/resolvers.ts | 36 ++++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 659a96831..604f9aae9 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -91,7 +91,9 @@ export type SubscribeFn = < >( fn: DataFn, options?: SubscribeOptions -) => AsyncGenerator; +) => AsyncGenerator & { + unsubscribe: Unsubscribe; +}; export type DataFn = (schema: TSchema) => void; @@ -159,7 +161,7 @@ export type SubscribeOptions = { * frameworks, please consider sponsoring so we can dedicate even more time on * this._ */ - fetchPolicy?: RequestCache; + cachePolicy?: RequestCache; retryPolicy?: RetryOptions; @@ -180,7 +182,7 @@ export type SubscribeOptions = { * function that immediately terminates the async generator and any pending * promise. */ - onSubscribe?: (unsubscribe: () => void) => void; + onSubscribe?: (unsubscribe: Unsubscribe) => void; operationName?: string; }; @@ -191,7 +193,7 @@ export const createResolvers = ({ depthLimit, fetchOptions, fetchOptions: { - cachePolicy: defaultFetchPolicy = 'default', + cachePolicy: defaultCachePolicy = 'default', retryPolicy: defaultRetryPoliy, }, scalars, @@ -199,7 +201,7 @@ export const createResolvers = ({ parentContext, }: CreateResolversOptions): Resolvers => { const createResolver = ({ - fetchPolicy = defaultFetchPolicy, + cachePolicy = defaultCachePolicy, onSelect, onSubscribe, operationName, @@ -209,7 +211,7 @@ export const createResolvers = ({ const context = createContext({ cache: clientCache, depthLimit, - cachePolicy: fetchPolicy, + cachePolicy, onSelect(selection, cache) { // Prevents infinite loop created by legacy functions if (!selections.has(selection)) { @@ -227,7 +229,7 @@ export const createResolvers = ({ const resolve = async () => { if (!context.shouldFetch) return; - if (fetchPolicy === 'only-if-cached') { + if (cachePolicy === 'only-if-cached') { // Mimic fetch error in the Chromium/WebKit monopoly throw new TypeError('Failed to fetch'); } @@ -237,14 +239,14 @@ export const createResolvers = ({ debugger: debug, fetchOptions: { ...fetchOptions, - cachePolicy: fetchPolicy, + cachePolicy, retryPolicy, }, operationName, }).then((results) => { updateCaches( results, - fetchPolicy !== 'no-store' && context.cache !== clientCache + cachePolicy !== 'no-store' && context.cache !== clientCache ? [context.cache, clientCache] : [context.cache], { skipNotify: !context.notifyCacheUpdate } @@ -318,7 +320,7 @@ export const createResolvers = ({ } else if (data !== undefined) { updateCaches( [{ data, error, extensions }], - fetchPolicy !== 'no-store' && context.cache !== clientCache + cachePolicy !== 'no-store' && context.cache !== clientCache ? [context.cache, clientCache] : [context.cache], { skipNotify: !context.notifyCacheUpdate } @@ -333,7 +335,7 @@ export const createResolvers = ({ debugger: debug, fetchOptions: { ...fetchOptions, - cachePolicy: fetchPolicy, + cachePolicy, retryPolicy, }, operationName, @@ -378,7 +380,10 @@ export const createResolvers = ({ return dataFn(); }, - subscribe: (fn, { onSubscribe, ...options } = {}): AsyncGenerator => { + subscribe: ( + fn, + { onSubscribe, ...options } = {} + ): AsyncGenerator & { unsubscribe: Unsubscribe } => { const { accessor, selections, subscribe } = createResolver({ ...options, onSubscribe: (unsubscribe) => { @@ -423,9 +428,6 @@ export const createResolvers = ({ } return { - [Symbol.asyncIterator]() { - return this; - }, async next() { if (rejected !== undefined) { throw rejected; @@ -448,6 +450,10 @@ export const createResolvers = ({ unsubscribe(); return asyncItDoneMessage; }, + [Symbol.asyncIterator]() { + return this; + }, + unsubscribe, }; }, }; From 556654f82b99a4a32336180a712659ee44f14646 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 3 Apr 2023 09:32:51 +0800 Subject: [PATCH 030/122] feat(packages/react): Added proxy mode for useMutation --- .changeset/hot-donuts-hunt.md | 5 + examples/react/src/components/meta.tsx | 1 + examples/react/src/graphql/gqty.ts | 2 + examples/react/src/pages/mutations.tsx | 122 ++++++++++++ packages/gqty/src/Accessor/resolve.ts | 13 +- .../gqty/src/Client/compat/queryFetcher.ts | 6 +- packages/gqty/src/Client/context.ts | 2 +- packages/gqty/src/Schema/types.ts | 2 +- packages/react/src/mutation/useMutation.ts | 186 ++++++++++++++---- packages/react/src/useSafeRender.ts | 27 +++ 10 files changed, 323 insertions(+), 43 deletions(-) create mode 100644 .changeset/hot-donuts-hunt.md create mode 100644 examples/react/src/pages/mutations.tsx create mode 100644 packages/react/src/useSafeRender.ts diff --git a/.changeset/hot-donuts-hunt.md b/.changeset/hot-donuts-hunt.md new file mode 100644 index 000000000..ca54b47bb --- /dev/null +++ b/.changeset/hot-donuts-hunt.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +Added proxy mode for useMutation diff --git a/examples/react/src/components/meta.tsx b/examples/react/src/components/meta.tsx index 6228f49c0..45a1cfe1e 100644 --- a/examples/react/src/components/meta.tsx +++ b/examples/react/src/components/meta.tsx @@ -24,6 +24,7 @@ const NavigationList = [ '/uploadFile', '/transactionQuery1', '/transactionQuery2', + '/mutations', ]; export const MetaClient = () => { diff --git a/examples/react/src/graphql/gqty.ts b/examples/react/src/graphql/gqty.ts index 513bbfadb..73446a5b0 100644 --- a/examples/react/src/graphql/gqty.ts +++ b/examples/react/src/graphql/gqty.ts @@ -16,6 +16,8 @@ import { } from './schema.generated'; const queryFetcher: QueryFetcher = async function (query, variables) { + await new Promise((r) => setTimeout(r, 1000)); + const endpoint = typeof window === 'undefined' ? 'http://localhost:3000/api/graphql' diff --git a/examples/react/src/pages/mutations.tsx b/examples/react/src/pages/mutations.tsx new file mode 100644 index 000000000..54d58490e --- /dev/null +++ b/examples/react/src/pages/mutations.tsx @@ -0,0 +1,122 @@ +import { Button, HStack, Stack, Text } from '@chakra-ui/react'; +import { selectFields } from 'gqty'; +import { type NextPage } from 'next'; +import { FunctionComponent, Suspense, useState } from 'react'; +import { useMutation, useQuery } from '../components/client'; +import { Human } from '../graphql/schema.generated'; + +const LazyMutationComponent: FunctionComponent = () => { + const [renameHuman, lazyState] = useMutation( + (mutation, { name }: { name: string }) => { + const human = mutation.renameHuman({ id: '1', name }); + + human?.id; + human?.name; + } + ); + + return ( + <> + Lazy Mutation + + {JSON.stringify(lazyState, null, 2)} + + ); +}; + +const HumanComponent: FunctionComponent<{ human: Human | null }> = ({ + human: user, +}) => { + if (user === null) { + return <>No such human.; + } + + return ( + <> + + 👱🏻‍♂️ {user.id}. {user.name} + +
    + {user.dogs?.map((dog) => ( +
  • 🐶 {dog.name}
  • + ))} +
+ + ); +}; + +const ProxyMutationComponent: FunctionComponent = () => { + const { $state, renameHuman } = useMutation(); + const [human, setHuman] = useState(); + + return ( + <> + Proxy Mutation + + {JSON.stringify($state, null, 2)} + {human && } + + ); +}; + +const ProxyMutationComponentWithSuspense: FunctionComponent = () => { + const { $state, renameHuman } = useMutation({ suspense: true }); + + return ( + <> + Proxy Mutation (Suspense) + + + ); +}; + +const MutationPage: NextPage = () => { + const query = useQuery(); + + return ( + + + + + + + + + + + + + + + + query.humans: + + {JSON.stringify(selectFields(query.humans, '*'), null, 2)} + + + ); +}; + +export default MutationPage; diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index 73fdf32f6..a1802a8a6 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -11,7 +11,7 @@ import { Type, } from '../Schema'; import type { Selection } from '../Selection'; -import { isObject } from '../Utils'; +import { deepAssign, isObject } from '../Utils'; import type { Meta } from './meta'; import { $meta, $setMeta } from './meta'; import { createSkeleton, isSkeleton } from './skeleton'; @@ -159,10 +159,13 @@ export const resolve = ( const unsubscribe = context.cache.subscribe( [cacheKeys.join('.')], - (cache) => { - if (isObject(cache) && isObject(data)) { - // FIXME: This deshells norbjs - // deepAssign(data, [get(cache, cacheKeys.join('.'))]); + (incoming) => { + if (isObject(incoming) && isObject(data)) { + cache.data = deepAssign( + {}, + [get(incoming, cacheKeys.join('.')), data], + context.cache.normalizationOptions?.onConflict + ) as CacheObject; } } ); diff --git a/packages/gqty/src/Client/compat/queryFetcher.ts b/packages/gqty/src/Client/compat/queryFetcher.ts index 547420336..028bb8c83 100644 --- a/packages/gqty/src/Client/compat/queryFetcher.ts +++ b/packages/gqty/src/Client/compat/queryFetcher.ts @@ -5,11 +5,11 @@ export type LegacyQueryFetcher> = ( query: string, variables: Record, fetchOptions?: Omit -) => Promise> | ExecutionResult; +) => Promise> | ExecutionResult; export const createLegacyQueryFetcher = = Record>( queryFetcher: LegacyQueryFetcher ): QueryFetcher => - ({ query, variables = {} }, fetchOptions) => - queryFetcher(query, variables, fetchOptions) as ExecutionResult; + async ({ query, variables = {} }, fetchOptions) => + queryFetcher(query, variables, fetchOptions); diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index 8a13dcf38..78b3ef0fa 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -64,7 +64,7 @@ export const createContext = ({ // Suggests a fetch on a stale or missing cache. // - // We add a minimum of 100 ms delay for caches with immedidate staleness, + // We add a minimum of 100 ms leeway for caches with immedidate staleness, // this prevents components from infinite rendering loop. this.shouldFetch ||= data === undefined || age < now - 100; this.hasCacheHit ||= data !== undefined; diff --git a/packages/gqty/src/Schema/types.ts b/packages/gqty/src/Schema/types.ts index 8f5cf1535..b96f75989 100644 --- a/packages/gqty/src/Schema/types.ts +++ b/packages/gqty/src/Schema/types.ts @@ -27,7 +27,7 @@ export type ScalarsEnumsHash = Record; export type QueryFetcher> = ( payload: QueryPayload, fetchOptions?: Omit -) => Promise> | ExecutionResult; +) => Promise> | ExecutionResult; export type QueryPayload< TExtension extends Record = Record diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 9e304e0a9..53e2054fd 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -1,12 +1,13 @@ import { BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions } from 'gqty'; import * as React from 'react'; import type { OnErrorHandler } from '../common'; +import { useSafeRender } from '../useSafeRender'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseMutationOptions { - noCache?: boolean; onCompleted?: (data: TData) => void; onError?: OnErrorHandler; + operationName?: string; /** * Retry behaviour * @@ -17,16 +18,18 @@ export interface UseMutationOptions { * Refetch specific queries after mutation completion. * * You can give functions or parts of the schema to be refetched + * + * @deprecated */ refetchQueries?: unknown[]; /** * Await refetch resolutions before calling the mutation actually complete + * + * @deprecated */ awaitRefetchQueries?: boolean; - /** - * Enable suspense behavior - */ - suspense?: boolean; + /** Skip the cache update after a successful fetch. */ + noCache?: boolean; /** * Activate special handling of non-serializable variables, * for example, files uploading @@ -35,35 +38,158 @@ export interface UseMutationOptions { * @deprecated */ nonSerializableVariables?: boolean; + /** + * Enable suspense behavior + */ + suspense?: boolean; } -export interface UseMutationState { - data: TData | undefined; +export type UseMutationState = { error?: GQtyError; isLoading: boolean; -} +}; export interface UseMutation { + (options?: UseMutationOptions): TSchema['mutation'] & { + $state: UseMutationState; + }; + ( - mutationFn?: ( - mutation: NonNullable, - args: TArgs - ) => TData, + fn?: (mutation: NonNullable, args: TArgs) => TData, options?: UseMutationOptions ): readonly [ - (options?: { fn?: typeof mutationFn; args: TArgs }) => Promise, - UseMutationState + (options?: { fn?: typeof fn; args: TArgs }) => Promise, + UseMutationState & { data?: TData extends void ? unknown : TData } ]; } export const createUseMutation = ( - { resolve, refetch }: GQtyClient, + { createResolver, resolve, refetch }: GQtyClient, { defaults: { mutationSuspense: defaultSuspense, retry: defaultRetry }, }: ReactClientOptionsWithDefaults ) => { const useMutation: UseMutation = ( - mutationFn, + fnOrOptions?: + | UseMutationOptions + | ((mutation: NonNullable, args: unknown) => any), + options?: UseMutationOptions + ): any => { + if (typeof fnOrOptions === 'function') { + return useLazyMutation(fnOrOptions, options); + } else { + return useProxyMutation(fnOrOptions); + } + }; + + const useProxyMutation = ({ + onCompleted, + onError, + operationName, + retry = defaultRetry, + refetchQueries = [], + awaitRefetchQueries, + suspense = defaultSuspense, + noCache = false, + }: UseMutationOptions = {}): TSchema['mutation'] & { + $state: UseMutationState; + } => { + const { accessor, context, resolve, selections } = React.useMemo(() => { + return createResolver({ + cachePolicy: noCache ? 'no-store' : 'no-cache', + operationName, + retryPolicy: retry, + onSelect: () => { + // Trigger re-render when selection happens after rendering, the + // next useEffect() will fetch the mutation. We should skip this + // during render to prevent infinite loop. + render(); + }, + }); + }, [noCache, operationName, retry]); + + const render = useSafeRender(); + const [state, setState] = React.useState<{ + error?: GQtyError; + promise?: Promise; + }>({}); + + if (suspense) { + if (state.promise) throw state.promise; + if (state.error) throw state.error; + } + + // useEffect() has to run every render because components after this one + // may also add selections, instead we block exccessive fetch and infinite + // loops inside the callback. + React.useEffect(() => { + if (selections.size === 0 || state.promise || !context.shouldFetch) + return; + + const promise = resolve(); + + // Prevent infinite render loop + state.promise = promise; + + // Trigger one render for suspense + setState({ promise }); + + promise + .then((data) => { + const refetches = refetchQueries.map((v) => refetch(v)); + + return awaitRefetchQueries + ? Promise.all(refetches).then(() => data) + : data; + }) + .then( + (data) => { + onCompleted?.(data); + setState({}); + }, + (e) => { + const error = GQtyError.create(e); + onError?.(error); + setState({ error }); + } + ) + .finally(() => { + if (state.promise === promise) { + context.shouldFetch = false; + context.hasCacheHit = false; + context.hasCacheMiss = false; + } + + selections.clear(); + }); + }); + + return React.useMemo(() => { + return new Proxy( + { + $state: { + get error() { + return state.error; + }, + get isLoading() { + return state.promise !== undefined; + }, + }, + }, + { + get: (target, key, receiver) => + Reflect.get(target, key, receiver) ?? + Reflect.get(accessor.mutation ?? {}, key), + } + ); + }, [accessor, state]); + }; + + const useLazyMutation = ( + mutationFn: ( + mutation: NonNullable, + args: TArgs + ) => TData, { onCompleted, onError, @@ -72,14 +198,8 @@ export const createUseMutation = ( awaitRefetchQueries, suspense = defaultSuspense, noCache = false, - } = {} + }: UseMutationOptions> = {} ) => { - type TCallback = typeof mutationFn; - type TData = ReturnType>; - type TArgs = TCallback extends undefined - ? undefined - : Parameters>[1]; - const [state, setState] = React.useState<{ data?: TData; error?: GQtyError; @@ -95,7 +215,7 @@ export const createUseMutation = ( async ({ fn = mutationFn, args, - }: { fn?: TCallback; args?: TArgs } = {}) => { + }: { fn?: typeof mutationFn; args?: TArgs } = {}) => { if (!fn) { throw new GQtyError(`Please specify a mutation function.`); } @@ -114,11 +234,11 @@ export const createUseMutation = ( retryPolicy: retry, } ).then((data) => { - const refetchPromise = Promise.all( - refetchQueries.map((v) => refetch(v)) - ); + const refetches = refetchQueries.map((v) => refetch(v)); - return awaitRefetchQueries ? refetchPromise.then(() => data) : data; + return awaitRefetchQueries + ? Promise.all(refetches).then(() => data) + : data; }) as Promise; setState({ promise }); @@ -129,13 +249,13 @@ export const createUseMutation = ( setState({ data }); return data; - } catch (error) { - const theError = GQtyError.create(error); + } catch (e) { + const error = GQtyError.create(e); - onError?.(theError); - setState({ error: theError }); + onError?.(error); + setState({ error }); - throw theError; + throw error; } }, [mutationFn, noCache, retry, refetchQueries, awaitRefetchQueries] diff --git a/packages/react/src/useSafeRender.ts b/packages/react/src/useSafeRender.ts new file mode 100644 index 000000000..0ee960b36 --- /dev/null +++ b/packages/react/src/useSafeRender.ts @@ -0,0 +1,27 @@ +import { useRerender } from '@react-hookz/web'; +import { useCallback, useEffect, useRef } from 'react'; + +/** + * Triggers a re-render only when outside of a render phase, and at-most once + * before next render happens. + */ +export const useSafeRender = () => { + const isCalledRef = useRef(false); + + const isRenderingRef = useRef(true); + isRenderingRef.current = true; + + useEffect(() => { + isCalledRef.current = false; + isRenderingRef.current = false; + }); + + const render = useRerender(); + + return useCallback(() => { + if (isCalledRef.current || isRenderingRef.current) return; + isCalledRef.current = true; + + render(); + }, [render]); +}; From e3db70174a3152eb089e5efc6cb3f22c5ede642d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Apr 2023 00:36:40 +0800 Subject: [PATCH 031/122] fix: test errors --- integration/graphql-17/ava.config.mjs | 7 -- integration/graphql-17/package.json | 43 -------- integration/graphql-17/src/api.ts | 28 ----- integration/graphql-17/src/generate.ts | 5 - integration/graphql-17/src/gqty.ts | 27 ----- .../graphql-17/src/schema.generated.ts | 58 ---------- integration/graphql-17/test/main.test.ts | 10 -- integration/graphql-17/tsconfig.json | 101 ------------------ internal/test-utils/package.json | 8 ++ internal/test-utils/src/app.ts | 1 - internal/test-utils/src/index.ts | 9 +- packages/cli/package.json | 13 +-- packages/gqty/test/accessor.test.ts | 2 +- packages/gqty/test/client.test.ts | 32 +++--- packages/gqty/test/persistence.test.ts | 4 +- packages/gqty/test/playground.test.ts | 9 +- packages/gqty/test/subscriptions.test.ts | 6 +- packages/gqty/test/utils.ts | 5 +- packages/react/src/common.ts | 4 +- 19 files changed, 46 insertions(+), 326 deletions(-) delete mode 100644 integration/graphql-17/ava.config.mjs delete mode 100644 integration/graphql-17/package.json delete mode 100644 integration/graphql-17/src/api.ts delete mode 100644 integration/graphql-17/src/generate.ts delete mode 100644 integration/graphql-17/src/gqty.ts delete mode 100644 integration/graphql-17/src/schema.generated.ts delete mode 100644 integration/graphql-17/test/main.test.ts delete mode 100644 integration/graphql-17/tsconfig.json diff --git a/integration/graphql-17/ava.config.mjs b/integration/graphql-17/ava.config.mjs deleted file mode 100644 index 276f8166f..000000000 --- a/integration/graphql-17/ava.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -export default { - files: ['**/*.test.ts'], - extensions: { - ts: 'module', - }, - nodeArguments: ['--require=bob-tsm', '--loader=bob-tsm'], -}; diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json deleted file mode 100644 index 15852d2cf..000000000 --- a/integration/graphql-17/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "integration-graphql-17", - "version": "0.0.1", - "private": true, - "scripts": { - "generate": "bob-tsm src/generate.ts", - "test": "pnpm i --ignore-scripts && c8 ava" - }, - "devDependencies": { - "@gqty/cli": "workspace:^4.0.0-alpha.0", - "@graphql-ez/fastify": "^0.12.0", - "@graphql-ez/fastify-testing": "^0.4.0", - "@graphql-typed-document-node/core": "^3.2.0", - "@types/node": "^18.15.5", - "ava": "^5.2.0", - "bob-tsm": "^1.1.2", - "c8": "^7.13.0", - "esbuild": "^0.17.12", - "fastify": "^4.11.0", - "gqty": "workspace:^3.0.0-alpha.0", - "graphql": "17.0.0-alpha.2", - "graphql-ez": "^0.16.0", - "typescript": "^4.9.5" - }, - "dependenciesMeta": { - "@gqty/cli": { - "injected": true - }, - "gqty": { - "injected": true - } - }, - "dependencies": { - "@algolia/client-search": "^4.15", - "@babel/core": "^7", - "@chakra-ui/system": "^2.5.2", - "@emotion/react": "^11.0.0", - "@emotion/styled": "^11.0.0", - "prop-types": "^15.8.1", - "react": "^18", - "unist-util-visit": "^2.0.0" - } -} diff --git a/integration/graphql-17/src/api.ts b/integration/graphql-17/src/api.ts deleted file mode 100644 index 0962bcb3e..000000000 --- a/integration/graphql-17/src/api.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { CreateApp, LazyPromise } from '@graphql-ez/fastify'; -import { CreateTestClient } from '@graphql-ez/fastify-testing'; -import { - GraphQLNonNull, - GraphQLObjectType, - GraphQLSchema, - GraphQLString, -} from 'graphql'; - -export const schema = new GraphQLSchema({ - query: new GraphQLObjectType({ - name: 'Query', - fields: { - hello: { - type: new GraphQLNonNull(GraphQLString), - resolve() { - return 'Hello World'; - }, - }, - }, - }), -}); - -export const API = CreateApp({ - schema, -}); - -export const TestClient = LazyPromise(() => CreateTestClient(API)); diff --git a/integration/graphql-17/src/generate.ts b/integration/graphql-17/src/generate.ts deleted file mode 100644 index 2fa23ca72..000000000 --- a/integration/graphql-17/src/generate.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { writeGenerate } from '@gqty/cli'; -import { resolve } from 'path'; -import { schema } from './api'; - -await writeGenerate(schema, resolve(__dirname, './gqty.ts')); diff --git a/integration/graphql-17/src/gqty.ts b/integration/graphql-17/src/gqty.ts deleted file mode 100644 index 88ac62a7e..000000000 --- a/integration/graphql-17/src/gqty.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * GQty: You can safely modify this file based on your needs. - */ - -import { Cache, createClient, QueryFetcher } from 'gqty'; -import { TestClient } from './api'; -import type { GeneratedSchema } from './schema.generated'; -import { generatedSchema, scalarsEnumsHash } from './schema.generated'; - -const queryFetcher: QueryFetcher = async function (query, variables) { - return (await TestClient).query(query, { - variables, - }); -}; - -export const client = createClient({ - cache: new Cache(), - schema: generatedSchema, - scalars: scalarsEnumsHash, - queryFetcher, -}); - -const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - -export * from './schema.generated'; -export { query, mutation, mutate, subscription, resolved, refetch, track }; diff --git a/integration/graphql-17/src/schema.generated.ts b/integration/graphql-17/src/schema.generated.ts deleted file mode 100644 index 1a38c6472..000000000 --- a/integration/graphql-17/src/schema.generated.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - -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; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export interface Scalars { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; -} - -export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { - Boolean: true, - String: true, -}; -export const generatedSchema = { - mutation: {}, - query: { __typename: { __type: 'String!' }, hello: { __type: 'String!' } }, - subscription: {}, -} as const; - -export interface Mutation { - __typename?: 'Mutation'; -} - -export interface Query { - __typename?: 'Query'; - hello: ScalarsEnums['String']; -} - -export interface Subscription { - __typename?: 'Subscription'; -} - -export interface GeneratedSchema { - query: Query; - mutation: Mutation; - subscription: Subscription; -} - -export type MakeNullable = { - [K in keyof T]: T[K] | undefined; -}; - -export interface ScalarsEnums extends MakeNullable {} diff --git a/integration/graphql-17/test/main.test.ts b/integration/graphql-17/test/main.test.ts deleted file mode 100644 index 06147f372..000000000 --- a/integration/graphql-17/test/main.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import test from 'ava'; -import { query, resolved } from '../src/gqty'; - -test('Hello World', async (t) => { - const result = await resolved(() => { - return query.hello; - }); - - t.is(result, 'Hello World'); -}); diff --git a/integration/graphql-17/tsconfig.json b/integration/graphql-17/tsconfig.json deleted file mode 100644 index bdc8af29a..000000000 --- a/integration/graphql-17/tsconfig.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - - /* Modules */ - "module": "esnext" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 1b436d258..8ed652285 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -56,5 +56,13 @@ "esbuild": "^0.17.12", "tslib": "^2.5.0", "typescript": "^4.9.5" + }, + "peerDependencies": { + "graphql": "*" + }, + "peerDependenciesMeta": { + "graphql": { + "optional": true + } } } diff --git a/internal/test-utils/src/app.ts b/internal/test-utils/src/app.ts index 0f0fef9b1..16723e775 100644 --- a/internal/test-utils/src/app.ts +++ b/internal/test-utils/src/app.ts @@ -107,4 +107,3 @@ export async function createTestApp( } export * from '@graphql-ez/fastify'; -export * as fastify from 'fastify'; diff --git a/internal/test-utils/src/index.ts b/internal/test-utils/src/index.ts index 227d8dbb3..8b6da3d8f 100644 --- a/internal/test-utils/src/index.ts +++ b/internal/test-utils/src/index.ts @@ -1,8 +1,9 @@ +import * as fastify from 'fastify'; import * as randomstring from 'randomstring'; export { default as waitForExpect } from 'wait-for-expect'; - -export * as fastify from 'fastify'; +export * from './app'; +export { fastify, randomstring }; export function assertIsDefined( value: T, @@ -15,7 +16,3 @@ export function assertIsDefined( throw error; } } - -export { randomstring }; - -export * from './app'; diff --git a/packages/cli/package.json b/packages/cli/package.json index b44eca140..fc4481c4a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "gqty": "workspace:^3.0.0-alpha.0", + "graphql": "^16.0.0", "p-lazy": "^3.1.0", "undici": "^5.21.0" }, @@ -61,7 +62,6 @@ "cosmiconfig": "^8.1.3", "esbuild": "^0.17.12", "fast-glob": "^3.2.12", - "graphql": "^16.6.0", "lodash-es": "^4.17.21", "mkdirp": "^2.1.5", "open-cli": "^7.2.0", @@ -75,17 +75,6 @@ "typescript": "^4.9.5", "wait-on": "^7.0.1" }, - "peerDependencies": { - "graphql": "*" - }, - "peerDependenciesMeta": { - "graphql": { - "optional": true - } - }, - "engines": { - "node": "^12.20.0 || >=14.13.0" - }, "publishConfig": { "directory": "dist" }, diff --git a/packages/gqty/test/accessor.test.ts b/packages/gqty/test/accessor.test.ts index 606325ca9..8eba6c9ce 100644 --- a/packages/gqty/test/accessor.test.ts +++ b/packages/gqty/test/accessor.test.ts @@ -170,7 +170,7 @@ describe('setCache', () => { ({ query }) => { query.human({ name: 'aaa' }).name; }, - { fetchPolicy: 'no-cache' } + { cachePolicy: 'no-cache' } ); const humanQuery = query.human({ name: 'aaa' }); diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 5792ad9c2..d031186b6 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -16,11 +16,11 @@ describe('core#resolve', () => { }); await expect( - resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + resolve(({ query }) => query.nFetchCalls, { cachePolicy: 'default' }) ).resolves.toBe(1); await expect( - resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + resolve(({ query }) => query.nFetchCalls, { cachePolicy: 'default' }) ).resolves.toBe(1); await new Promise((resolve) => setTimeout(resolve, 150)); @@ -28,7 +28,7 @@ describe('core#resolve', () => { let promise: Promise | undefined; resolve(({ query }) => query.nFetchCalls, { awaitsFetch: false, - fetchPolicy: 'default', + cachePolicy: 'default', onFetch(p) { promise = p; }, @@ -52,7 +52,7 @@ describe('core#resolve', () => { query.nFetchCalls; return query.hello; }, - { fetchPolicy: 'default' } + { cachePolicy: 'default' } ) ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(1); @@ -63,7 +63,7 @@ describe('core#resolve', () => { query.nFetchCalls; return query.hello; }, - { fetchPolicy: 'force-cache' } + { cachePolicy: 'force-cache' } ) ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(1); @@ -77,7 +77,7 @@ describe('core#resolve', () => { query.nFetchCalls; return query.hello; }, - { fetchPolicy: 'force-cache' } + { cachePolicy: 'force-cache' } ) ).resolves.toBe('hello world'); expect(query.nFetchCalls).toBe(2); @@ -97,15 +97,15 @@ describe('core#resolve', () => { ); await expect( - resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + resolve(({ query }) => query.nFetchCalls, { cachePolicy: 'default' }) ).resolves.toBe(1); await expect( - resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'no-cache' }) + resolve(({ query }) => query.nFetchCalls, { cachePolicy: 'no-cache' }) ).resolves.toBe(2); await expect( - resolve(({ query }) => query.nFetchCalls, { fetchPolicy: 'default' }) + resolve(({ query }) => query.nFetchCalls, { cachePolicy: 'default' }) ).resolves.toBe(2); }); @@ -121,7 +121,7 @@ describe('core#resolve', () => { }); await expect( - resolve(({ query }) => query.hello, { fetchPolicy: 'no-store' }) + resolve(({ query }) => query.hello, { cachePolicy: 'no-store' }) ).resolves.toBe('hello world'); expect(query.hello).toBeUndefined(); @@ -145,7 +145,7 @@ describe('core#resolve', () => { ); await expect(() => - resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) + resolve(({ query }) => query.hello, { cachePolicy: 'only-if-cached' }) ).rejects.toThrowError(new TypeError('Failed to fetch')); await expect(resolve(({ query }) => query.hello)).resolves.toBe( @@ -153,7 +153,7 @@ describe('core#resolve', () => { ); await expect( - resolve(({ query }) => query.hello, { fetchPolicy: 'only-if-cached' }) + resolve(({ query }) => query.hello, { cachePolicy: 'only-if-cached' }) ).resolves.toBe('hello world'); }); }); @@ -412,7 +412,7 @@ describe('compat', () => { const { resolved, query } = await createTestClient( undefined, - ({ query, variables }, fetchOptions) => { + async ({ query, variables }, fetchOptions) => { expect({ query, variables, fetchOptions }).toStrictEqual({ fetchOptions: { mode: 'cors', @@ -601,9 +601,7 @@ describe('compat', () => { test('empty data', async () => { const { query, resolved } = await createTestClient( undefined, - (_query, _variables) => { - return {}; - } + async (_query, _variables) => ({}) ); const data = await resolved(() => { @@ -626,7 +624,7 @@ describe('compat', () => { { cache, fetchOptions: { - fetcher: () => ({ data: { hello: 'hello world' } }), + fetcher: async () => ({ data: { hello: 'hello world' } }), }, } ).then((results) => { diff --git a/packages/gqty/test/persistence.test.ts b/packages/gqty/test/persistence.test.ts index 937799952..10f69ca8b 100644 --- a/packages/gqty/test/persistence.test.ts +++ b/packages/gqty/test/persistence.test.ts @@ -123,7 +123,7 @@ test('basic functionality', async () => { const dataBackup1 = client1.persist(); expect(JSON.stringify(dataBackup1)).toMatchInlineSnapshot( - `"{"query":{"b306d":{"__ref":"Human:1"}},"normalized":{"Human:1":{"__typename":"Human","id":"1","name":"asd"}}}"` + `"{"query":{"b306d":{"__typename":"Human","id":"1","name":"asd"}}}"` ); const client2 = await createTestClient(); @@ -220,7 +220,7 @@ test('version check', async () => { const cacheBackupv1 = client1.persist('v1'); expect(JSON.stringify(cacheBackupv1)).toMatchInlineSnapshot( - `"{"query":{"b306d":{"__ref":"Human:1"}},"normalized":{"Human:1":{"__typename":"Human","id":"1","name":"asd"}},"version":"v1"}"` + `"{"query":{"b306d":{"__typename":"Human","id":"1","name":"asd"}},"version":"v1"}"` ); const client2 = await createTestClient(); diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 72a7f21c8..8b4303966 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -62,7 +62,14 @@ describe('playground', () => { }); test('assignSelections', async () => { - const { query, schema: cache, resolve, mutate } = await createTestClient(); + const { + query, + schema: cache, + resolve, + mutate, + } = await createTestClient(undefined, undefined, undefined, { + cache: new Cache(undefined, { normalization: true }), + }); await resolve(({ query }) => query.human({ name: 'asd' }).name); diff --git a/packages/gqty/test/subscriptions.test.ts b/packages/gqty/test/subscriptions.test.ts index a284c4a7b..e2a7d161f 100644 --- a/packages/gqty/test/subscriptions.test.ts +++ b/packages/gqty/test/subscriptions.test.ts @@ -50,7 +50,7 @@ describe('core#subscribe', () => { if (!refetched) { refetched = true; await resolve(({ query }) => query.nFetchCalls, { - fetchPolicy: 'no-cache', + cachePolicy: 'no-cache', }); } else { break; @@ -81,11 +81,11 @@ describe('core#subscribe', () => { await new Promise((r) => setTimeout(r, 100)); await resolve( ({ mutation }) => mutation.sendNotification({ message: 'aaa' }), - { fetchPolicy: 'no-cache' } + { cachePolicy: 'no-cache' } ); await resolve( ({ mutation }) => mutation.sendNotification({ message: 'bbb' }), - { fetchPolicy: 'no-cache' } + { cachePolicy: 'no-cache' } ); })(), ]); diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index 0ef165441..1cc45dd94 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -139,7 +139,7 @@ export const createTestClient = async ( addedToGeneratedSchema?: PartialDeep, queryFetcher?: QueryFetcher, config?: TestClientConfig, - clientConfig: Partial = {} + { cache = new Cache(), ...clientConfig }: Partial = {} ) => { let dogId = 0; const dogs: { name: string; id: number }[] = [ @@ -565,7 +565,7 @@ export const createTestClient = async ( const testClient = Object.assign( createGQtyClient({ - cache: new Cache(undefined, { normalization: true }), + cache, ...clientConfig, schema: deepAssign(generatedSchema, [addedToGeneratedSchema]) as Schema, fetchOptions: { @@ -576,6 +576,7 @@ export const createTestClient = async ( scalars: scalarsEnumsHash, }), { + cache, client, queries, } diff --git a/packages/react/src/common.ts b/packages/react/src/common.ts index 3754160a0..b2f44a346 100644 --- a/packages/react/src/common.ts +++ b/packages/react/src/common.ts @@ -28,9 +28,9 @@ export const legacyFetchPolicyMap: Record< LegacyFetchPolicy, FetchOptions['cachePolicy'] > = { - 'cache-and-network': 'default', - 'cache-first': 'default', + 'cache-first': 'force-cache', 'network-only': 'no-cache', + 'cache-and-network': 'default', 'no-cache': 'no-store', }; From 9dbbb39802c35e92bed5abac67cfbfca4d6d382a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Apr 2023 18:33:09 +0800 Subject: [PATCH 032/122] feat: revert proxy mode for useMutation --- packages/gqty/src/Accessor/resolve.ts | 20 ++-- packages/react/src/mutation/useMutation.ts | 125 +-------------------- 2 files changed, 14 insertions(+), 131 deletions(-) diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index a1802a8a6..3ef697313 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -35,15 +35,19 @@ export const resolve = ( const { alias, key, isUnion, cacheKeys } = selection; const isNumericSelection = +key === +key; - if (verbose && cacheKeys.length >= context.depthLimit) { - throw new GQtyError( - `Depth limit reached at ${cacheKeys.join( - '.' - )}, ignoring futther selections.` - ); + if (cacheKeys.length >= context.depthLimit) { + if (verbose) { + throw new GQtyError( + `Depth limit reached at ${cacheKeys.join( + '.' + )}, ignoring further selections.` + ); + } + + return; } - const cache = + const cache: CacheDataContainer = selection.parent === selection.root && key !== '__typename' ? // The way we structure the cache for SWR requires special treatment // for 2nd level selections, e.g. query.hello, mutation.update()... etc. @@ -513,7 +517,7 @@ export const createArrayAccessor = < meta: Meta ) => { if (!Array.isArray(meta.cache.data)) { - if (process.env.NODE_ENV !== 'production') { + if (verbose) { console.warn( 'Received invalid cache data for array accessor.', meta, diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 53e2054fd..1d15672a4 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -1,7 +1,6 @@ import { BaseGeneratedSchema, GQtyClient, GQtyError, RetryOptions } from 'gqty'; import * as React from 'react'; import type { OnErrorHandler } from '../common'; -import { useSafeRender } from '../useSafeRender'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseMutationOptions { @@ -50,10 +49,6 @@ export type UseMutationState = { }; export interface UseMutation { - (options?: UseMutationOptions): TSchema['mutation'] & { - $state: UseMutationState; - }; - ( fn?: (mutation: NonNullable, args: TArgs) => TData, options?: UseMutationOptions @@ -64,128 +59,12 @@ export interface UseMutation { } export const createUseMutation = ( - { createResolver, resolve, refetch }: GQtyClient, + { resolve, refetch }: GQtyClient, { defaults: { mutationSuspense: defaultSuspense, retry: defaultRetry }, }: ReactClientOptionsWithDefaults ) => { - const useMutation: UseMutation = ( - fnOrOptions?: - | UseMutationOptions - | ((mutation: NonNullable, args: unknown) => any), - options?: UseMutationOptions - ): any => { - if (typeof fnOrOptions === 'function') { - return useLazyMutation(fnOrOptions, options); - } else { - return useProxyMutation(fnOrOptions); - } - }; - - const useProxyMutation = ({ - onCompleted, - onError, - operationName, - retry = defaultRetry, - refetchQueries = [], - awaitRefetchQueries, - suspense = defaultSuspense, - noCache = false, - }: UseMutationOptions = {}): TSchema['mutation'] & { - $state: UseMutationState; - } => { - const { accessor, context, resolve, selections } = React.useMemo(() => { - return createResolver({ - cachePolicy: noCache ? 'no-store' : 'no-cache', - operationName, - retryPolicy: retry, - onSelect: () => { - // Trigger re-render when selection happens after rendering, the - // next useEffect() will fetch the mutation. We should skip this - // during render to prevent infinite loop. - render(); - }, - }); - }, [noCache, operationName, retry]); - - const render = useSafeRender(); - const [state, setState] = React.useState<{ - error?: GQtyError; - promise?: Promise; - }>({}); - - if (suspense) { - if (state.promise) throw state.promise; - if (state.error) throw state.error; - } - - // useEffect() has to run every render because components after this one - // may also add selections, instead we block exccessive fetch and infinite - // loops inside the callback. - React.useEffect(() => { - if (selections.size === 0 || state.promise || !context.shouldFetch) - return; - - const promise = resolve(); - - // Prevent infinite render loop - state.promise = promise; - - // Trigger one render for suspense - setState({ promise }); - - promise - .then((data) => { - const refetches = refetchQueries.map((v) => refetch(v)); - - return awaitRefetchQueries - ? Promise.all(refetches).then(() => data) - : data; - }) - .then( - (data) => { - onCompleted?.(data); - setState({}); - }, - (e) => { - const error = GQtyError.create(e); - onError?.(error); - setState({ error }); - } - ) - .finally(() => { - if (state.promise === promise) { - context.shouldFetch = false; - context.hasCacheHit = false; - context.hasCacheMiss = false; - } - - selections.clear(); - }); - }); - - return React.useMemo(() => { - return new Proxy( - { - $state: { - get error() { - return state.error; - }, - get isLoading() { - return state.promise !== undefined; - }, - }, - }, - { - get: (target, key, receiver) => - Reflect.get(target, key, receiver) ?? - Reflect.get(accessor.mutation ?? {}, key), - } - ); - }, [accessor, state]); - }; - - const useLazyMutation = ( + const useMutation = ( mutationFn: ( mutation: NonNullable, args: TArgs From f99bedc146561b059c0d020850623db93c499716 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Apr 2023 18:34:54 +0800 Subject: [PATCH 033/122] consistent API after docs --- examples/react/src/components/meta.tsx | 1 - examples/react/src/graphql/gqty.ts | 3 +- examples/react/src/pages/mutations.tsx | 122 --- packages/gqty/src/Accessor/resolve.ts | 85 +- packages/gqty/test/playground.test.ts | 24 +- packages/react/src/mutation/useMutation.ts | 10 +- packages/react/src/query/useLazyQuery.ts | 9 +- packages/react/src/query/useQuery.ts | 70 +- .../react/src/query/useTransactionQuery.ts | 34 +- .../react/src/subscription/useSubscription.ts | 15 +- packages/react/src/useOnlineEffect.ts | 14 + pnpm-lock.yaml | 771 ++---------------- 12 files changed, 221 insertions(+), 937 deletions(-) delete mode 100644 examples/react/src/pages/mutations.tsx create mode 100644 packages/react/src/useOnlineEffect.ts diff --git a/examples/react/src/components/meta.tsx b/examples/react/src/components/meta.tsx index 45a1cfe1e..6228f49c0 100644 --- a/examples/react/src/components/meta.tsx +++ b/examples/react/src/components/meta.tsx @@ -24,7 +24,6 @@ const NavigationList = [ '/uploadFile', '/transactionQuery1', '/transactionQuery2', - '/mutations', ]; export const MetaClient = () => { diff --git a/examples/react/src/graphql/gqty.ts b/examples/react/src/graphql/gqty.ts index 73446a5b0..771848925 100644 --- a/examples/react/src/graphql/gqty.ts +++ b/examples/react/src/graphql/gqty.ts @@ -20,8 +20,9 @@ const queryFetcher: QueryFetcher = async function (query, variables) { const endpoint = typeof window === 'undefined' - ? 'http://localhost:3000/api/graphql' + ? `http://0.0.0.0:3000/api/graphql` : '/api/graphql'; + const { files, clone } = extractFiles( { query, variables }, isExtractableFile diff --git a/examples/react/src/pages/mutations.tsx b/examples/react/src/pages/mutations.tsx deleted file mode 100644 index 54d58490e..000000000 --- a/examples/react/src/pages/mutations.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { Button, HStack, Stack, Text } from '@chakra-ui/react'; -import { selectFields } from 'gqty'; -import { type NextPage } from 'next'; -import { FunctionComponent, Suspense, useState } from 'react'; -import { useMutation, useQuery } from '../components/client'; -import { Human } from '../graphql/schema.generated'; - -const LazyMutationComponent: FunctionComponent = () => { - const [renameHuman, lazyState] = useMutation( - (mutation, { name }: { name: string }) => { - const human = mutation.renameHuman({ id: '1', name }); - - human?.id; - human?.name; - } - ); - - return ( - <> - Lazy Mutation - - {JSON.stringify(lazyState, null, 2)} - - ); -}; - -const HumanComponent: FunctionComponent<{ human: Human | null }> = ({ - human: user, -}) => { - if (user === null) { - return <>No such human.; - } - - return ( - <> - - 👱🏻‍♂️ {user.id}. {user.name} - -
    - {user.dogs?.map((dog) => ( -
  • 🐶 {dog.name}
  • - ))} -
- - ); -}; - -const ProxyMutationComponent: FunctionComponent = () => { - const { $state, renameHuman } = useMutation(); - const [human, setHuman] = useState(); - - return ( - <> - Proxy Mutation - - {JSON.stringify($state, null, 2)} - {human && } - - ); -}; - -const ProxyMutationComponentWithSuspense: FunctionComponent = () => { - const { $state, renameHuman } = useMutation({ suspense: true }); - - return ( - <> - Proxy Mutation (Suspense) - - - ); -}; - -const MutationPage: NextPage = () => { - const query = useQuery(); - - return ( - - - - - - - - - - - - - - - - query.humans: - - {JSON.stringify(selectFields(query.humans, '*'), null, 2)} - - - ); -}; - -export default MutationPage; diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index 3ef697313..24b1c40da 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -1,6 +1,4 @@ -import get from 'just-safe-get'; -import set from 'just-safe-set'; -import type { CacheObject } from '../Cache'; +import type { CacheDataContainer, CacheNode, CacheObject } from '../Cache'; import { flattenObject } from '../Cache/crawl'; import { isCacheObject } from '../Cache/utils'; import { GQtyError } from '../Error'; @@ -11,7 +9,7 @@ import { Type, } from '../Schema'; import type { Selection } from '../Selection'; -import { deepAssign, isObject } from '../Utils'; +import { isPlainObject } from '../Utils'; import type { Meta } from './meta'; import { $meta, $setMeta } from './meta'; import { createSkeleton, isSkeleton } from './skeleton'; @@ -51,15 +49,11 @@ export const resolve = ( selection.parent === selection.root && key !== '__typename' ? // The way we structure the cache for SWR requires special treatment // for 2nd level selections, e.g. query.hello, mutation.update()... etc. - context.cache.get(cacheKeys.join('.'), context.cacheOptions) ?? { - data: undefined, - expiresAt: Infinity, - } - : { ...meta.cache }; - - if (cache.data === undefined) { - cache.expiresAt = Infinity; - } + ensureCache(cacheKeys[0], cacheKeys[1], meta) + : Object.defineProperties( + { data: undefined, expiresAt: Infinity }, + Object.getOwnPropertyDescriptors(meta.cache) + ); let data = cache.data; @@ -96,6 +90,13 @@ export const resolve = ( if (!type) { // Scalar and scalar arrays if (context.scalars[pureType]) { + // Force expired caches, this happens when users keep intermediate + // accessors before a cache update. When properties of these stale + // accessors are accessed, they should read new data from the cache. + if (cache.expiresAt === -Infinity) { + data = context.cache.get(selection.cacheKeys.join('.'))?.data; + } + context.onSelect?.(selection, { ...cache, data }); return isArray ? (Array.isArray(data) ? data : [undefined]) : data; @@ -145,38 +146,6 @@ export const resolve = ( cache.data = data; - // Subscribe to cache changes at root level, child accessors should have new - // values reflected after cache updates. Listeners created this way cannot be - // garbage collected along with the throwaway proxies, unsubscribing the last - // one each time we access this root key. - // - // This is only useful when users hold on to an accessor while being updated. - // If accessors are read from top-level, data is read again from the cache and - // new data is already reflected. - // - // Accessor objects may be cached in the future, then these subscriptions will - // become an essential part of the system. - if (selection.parent === selection.root) { - const listenerCacheKey = `__accessorCacheListeners.${cacheKeys.join('/')}`; - - get(context, listenerCacheKey)?.(); - - const unsubscribe = context.cache.subscribe( - [cacheKeys.join('.')], - (incoming) => { - if (isObject(incoming) && isObject(data)) { - cache.data = deepAssign( - {}, - [get(incoming, cacheKeys.join('.')), data], - context.cache.normalizationOptions?.onConflict - ) as CacheObject; - } - } - ); - - set(context, listenerCacheKey, unsubscribe); - } - return isArray && !isNumericSelection ? createArrayAccessor({ cache, @@ -293,11 +262,17 @@ const objectProxyHandler: ProxyHandler = { // Extract proxy data, keep the object reference unless users deep clone it. value = deepMetadata(value) ?? value; - if (selection.cacheKeys.length <= 2) { + if (selection.ancestry.length <= 2) { const [type, field] = selection.cacheKeys; if (field) { - context.cache.set({ [type]: { [field]: { [key]: value } } }); + const data = context.cache.get(`${type}.${field}`)?.data ?? {}; + + if (!isPlainObject(data)) return false; + + data[key] = value; + + context.cache.set({ [type]: { [field]: data } }); } else { context.cache.set({ [type]: { [key]: value } }); } @@ -412,6 +387,22 @@ export const deepMetadata = (input: any) => { } }; +/** + * Read data from cache, creates an empty data slot that never expires when + * target is not found. + */ +const ensureCache = ( + type: string, + field: string, + { context: { cache, cacheOptions } }: Meta +) => { + if (!cache.get(`${type}.${field}`, cacheOptions)) { + cache.set({ [type]: { [field]: undefined } }); + } + + return cache.get(`${type}.${field}`, cacheOptions)!; +}; + /** * Look up user specified key fields for the type. Defaults to `id`, and `_id` * if `id` is not found. diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 8b4303966..14f205110 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -51,7 +51,7 @@ describe('playground', () => { expect(query.human().sons).toEqual([]); expect(JSON.stringify(cache)).toMatchInlineSnapshot( - `"{"query":{"human":{"sons":[]},"b306d":{"name":"asd"},"b4dd1":{"name":"tyu"},"hello":"XDXD"}}"` + `"{"query":{"human":{"__ref":"Human:1"},"hello":"XDXD"},"normalized":{"Human:1":{"__typename":"Human","id":"1","dogs":[{"__typename":"Dog"},{"__typename":"Dog"}],"father":{"__typename":"Human"},"name":"default","node":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}],"nullFather":null,"sons":[],"union":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}]}}}"` ); setCache(query, { @@ -106,28 +106,6 @@ describe('playground', () => { setCache(human, humanMutation); - expect(cache).toMatchInlineSnapshot(` - { - "mutation": { - "c9ed9": { - "__ref": "Human:2", - }, - }, - "normalized": { - "Human:2": { - "__typename": "Human", - "id": "2", - "name": "zxc", - }, - }, - "query": { - "b306d": { - "name": "zxc", - }, - }, - } - `); - expect(human.name).toBe('zxc'); expect(humanMutation.name).toBe('zxc'); }); diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 1d15672a4..7739db29f 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -4,7 +4,7 @@ import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseMutationOptions { - onCompleted?: (data: TData) => void; + onCompleted?: (data: TData) => Promise | void; onError?: OnErrorHandler; operationName?: string; /** @@ -50,11 +50,11 @@ export type UseMutationState = { export interface UseMutation { ( - fn?: (mutation: NonNullable, args: TArgs) => TData, + fn: (mutation: NonNullable, args: TArgs) => TData, options?: UseMutationOptions ): readonly [ (options?: { fn?: typeof fn; args: TArgs }) => Promise, - UseMutationState & { data?: TData extends void ? unknown : TData } + UseMutationState & { data?: TData } ]; } @@ -64,7 +64,7 @@ export const createUseMutation = ( defaults: { mutationSuspense: defaultSuspense, retry: defaultRetry }, }: ReactClientOptionsWithDefaults ) => { - const useMutation = ( + const useMutation: UseMutation = ( mutationFn: ( mutation: NonNullable, args: TArgs @@ -124,7 +124,7 @@ export const createUseMutation = ( const data = await promise; - onCompleted?.(data); + await onCompleted?.(data); setState({ data }); return data; diff --git a/packages/react/src/query/useLazyQuery.ts b/packages/react/src/query/useLazyQuery.ts index 252fb86e9..c6f9eb87e 100644 --- a/packages/react/src/query/useLazyQuery.ts +++ b/packages/react/src/query/useLazyQuery.ts @@ -15,6 +15,7 @@ export interface UseLazyQueryOptions { fetchPolicy?: LazyFetchPolicy; retry?: RetryOptions; suspense?: boolean; + operationName?: string; } export interface UseLazyQueryState { @@ -80,7 +81,7 @@ function InitUseLazyQueryReducer(): UseLazyQueryState { export interface UseLazyQuery { ( - queryFn: (query: GeneratedSchema['query'], args: TArgs) => TData, + fn: (query: GeneratedSchema['query'], args: TArgs) => TData, options?: UseLazyQueryOptions ): readonly [ ( @@ -90,6 +91,7 @@ export interface UseLazyQuery { fn?: (query: GeneratedSchema['query'], args: TArgs) => TData; args?: TArgs; fetchPolicy?: LazyFetchPolicy; + operationName?: string; }? ] : [ @@ -97,6 +99,7 @@ export interface UseLazyQuery { fn?: (query: GeneratedSchema['query'], args: TArgs) => TData; args: TArgs; fetchPolicy?: LazyFetchPolicy; + opertionName?: string; } ] ) => Promise, @@ -122,6 +125,7 @@ export function createUseLazyQuery( fetchPolicy: hookDefaultFetchPolicy = defaultFetchPolicy, retry = defaultRetry, suspense = defaultSuspense, + operationName: defaultOperationName, } = {} ) => { type TCallback = typeof fn; @@ -131,6 +135,7 @@ export function createUseLazyQuery( fn?: TCallback; args?: TArgs; fetchPolicy?: LazyFetchPolicy; + operationName?: string; }; const [state, dispatch] = React.useReducer( @@ -152,6 +157,7 @@ export function createUseLazyQuery( fn: resolveFn = fn, args, fetchPolicy = hookDefaultFetchPolicy, + operationName = defaultOperationName, }: TCallbackArgs = {}) => { let innerFetchPromise: Promise | undefined; @@ -165,6 +171,7 @@ export function createUseLazyQuery( innerFetchPromise = promise as Promise; }, retryPolicy: retry, + operationName, } ).then((data) => { const typedData = data as TData; diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 258b9c26b..8910905eb 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -1,5 +1,6 @@ import { useDebouncedCallback, + useIntervalEffect, usePrevious, useRerender, useThrottledState, @@ -19,6 +20,7 @@ import { OnErrorHandler, translateFetchPolicy, } from '../common'; +import { useOnlineEffect } from '../useOnlineEffect'; import { useWindowFocusEffect } from '../useWindowFocusEffect'; import type { ReactClientOptionsWithDefaults } from '../utils'; @@ -31,13 +33,18 @@ export interface UseQueryPrepareHelpers< readonly query: GeneratedSchema['query']; } export interface UseQueryOptions { + cachePolicy?: RequestCache; fetchPolicy?: LegacyFetchPolicy; notifyOnNetworkStatusChange?: boolean; onError?: OnErrorHandler; operationName?: string; prepare?: (helpers: UseQueryPrepareHelpers) => void; + refetchInterval?: number; + refetchIntervalInBackground?: boolean; + refetchOnReconnect?: boolean; refetchOnWindowVisible?: boolean; retry?: RetryOptions; + retryPolicy?: RetryOptions; staleWhileRevalidate?: boolean | object | number | string | null; suspense?: boolean; } @@ -80,21 +87,22 @@ export const createUseQuery = ): UseQuery => ({ fetchPolicy = 'cache-first', + cachePolicy = translateFetchPolicy(fetchPolicy), notifyOnNetworkStatusChange = true, onError, operationName, prepare, - refetchOnWindowVisible = false, + refetchInterval, + refetchIntervalInBackground, + refetchOnReconnect = true, + refetchOnWindowVisible = true, retry = defaultRetry, + retryPolicy = retry, staleWhileRevalidate = defaultStaleWhileRevalidate, suspense = defaultSuspense, } = {}) => { const render = useRerender(); const debouncedRender = useDebouncedCallback(render, [render], 50); - const cacheMode = useMemo( - () => translateFetchPolicy(fetchPolicy), - [fetchPolicy] - ); const { accessor: { query }, context, @@ -104,11 +112,11 @@ export const createUseQuery = } = useMemo( () => client.createResolver({ - cachePolicy: cacheMode, + cachePolicy, operationName, - retryPolicy: retry, + retryPolicy, }), - [fetchPolicy, operationName, retry] + [cachePolicy, operationName, retryPolicy] ); const [state, setState] = useThrottledState<{ @@ -128,9 +136,9 @@ export const createUseQuery = // immediately. if (context.shouldFetch && suspense) { throw client.resolve(({ query }) => prepare({ prepass, query }), { - cachePolicy: cacheMode, + cachePolicy, operationName, - retryPolicy: retry, + retryPolicy, }); } } @@ -148,7 +156,7 @@ export const createUseQuery = const { resolve, reject, promise } = pDefer(); - if (context.shouldFetch && notifyOnNetworkStatusChange) { + if (context.shouldFetch) { setState({ promise }); } @@ -165,13 +173,13 @@ export const createUseQuery = context.shouldFetch = false; context.hasCacheHit = false; context.hasCacheMiss = false; - context.notifyCacheUpdate = cacheMode !== 'default'; + context.notifyCacheUpdate = cachePolicy !== 'default'; setState({}); resolve(); }, }); - }, [context.shouldFetch]); + }, [cachePolicy, context.shouldFetch]); const refetch = useCallback( async (force = false) => { @@ -198,15 +206,15 @@ export const createUseQuery = context.shouldFetch = false; context.hasCacheHit = false; context.hasCacheMiss = false; - context.notifyCacheUpdate = cacheMode !== 'default'; + context.notifyCacheUpdate = cachePolicy !== 'default'; setState({}); } }, - [context.shouldFetch, operationName, selections] + [cachePolicy, context.shouldFetch, operationName, selections] ); - // staleWhileRevalidate + // Legacy staleWhileRevalidate const swrDiff = usePrevious(staleWhileRevalidate); useUpdateEffect(() => { if (staleWhileRevalidate && !Object.is(staleWhileRevalidate, swrDiff)) { @@ -214,13 +222,27 @@ export const createUseQuery = } }, [refetch, swrDiff]); - { - // A rerender should be enough to trigger a soft check, fetch will - // happen if any of the accessed cache value is stale. - useWindowFocusEffect(debouncedRender, { - enabled: refetchOnWindowVisible, - }); - } + // refetchInterval + useIntervalEffect(() => { + if ( + !refetchIntervalInBackground && + globalThis.document?.visibilityState !== 'visible' + ) + return; + + debouncedRender(); + }, refetchInterval); + + // refetchOnReconnect + useOnlineEffect(() => { + if (refetchOnReconnect) debouncedRender(); + }, [debouncedRender, refetchOnReconnect]); + + // A rerender should be enough to trigger a soft check, fetch will + // happen if any of the accessed cache value is stale. + useWindowFocusEffect(debouncedRender, { + enabled: refetchOnWindowVisible, + }); return useMemo(() => { return new Proxy( @@ -235,7 +257,7 @@ export const createUseQuery = get: (target, key, proxy) => Reflect.get(target, key, proxy) ?? Reflect.get( - prepare + prepare && cachePolicy !== 'no-store' ? // Using global schema accessor prevents the second pass fetch // essentially let `prepare` decides what data to fetch, data // placeholder will always render in case of a cache miss. diff --git a/packages/react/src/query/useTransactionQuery.ts b/packages/react/src/query/useTransactionQuery.ts index b12dfcf44..7446db1f5 100644 --- a/packages/react/src/query/useTransactionQuery.ts +++ b/packages/react/src/query/useTransactionQuery.ts @@ -4,18 +4,23 @@ import { useUpdateEffect, } from '@react-hookz/web'; import type { BaseGeneratedSchema, GQtyError, RetryOptions } from 'gqty'; -import type { LegacyFetchPolicy, OnErrorHandler } from '../common'; +import { + LegacyFetchPolicy, + OnErrorHandler, + translateFetchPolicy, +} from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; import type { UseQuery } from './useQuery'; export interface UseTransactionQueryState { - data: TData | undefined; + data?: TData; error?: GQtyError; + isLoading: boolean; isCalled: boolean; - promise?: Promise; } export type UseTransactionQueryOptions = { + cachePolicy?: RequestCache; fetchPolicy?: LegacyFetchPolicy; skip?: boolean; /** @@ -40,7 +45,7 @@ export type UseTransactionQueryOptions = { export interface UseTransactionQuery { ( fn: (query: TSchema['query'], variables?: TVariables) => TData, - queryOptions?: UseTransactionQueryOptions + options?: UseTransactionQueryOptions ): UseTransactionQueryState; } @@ -58,6 +63,7 @@ export function createUseTransactionQuery( fn, { fetchPolicy = defaultFetchPolicy, + cachePolicy = translateFetchPolicy(fetchPolicy), notifyOnNetworkStatusChange = true, onCompleted, onError, @@ -71,7 +77,7 @@ export function createUseTransactionQuery( } = {} ) => { const query = useQuery({ - fetchPolicy, + cachePolicy, notifyOnNetworkStatusChange, operationName, prepare: ({ query }) => (skip ? undefined : fn(query, variables)), @@ -80,7 +86,11 @@ export function createUseTransactionQuery( }); useUpdateEffect(() => { - if (!query.$state.isLoading) { + const { + $state: { isLoading, error }, + } = query; + + if (!isLoading && !error) { onCompleted?.(fn(query, variables)); } }, [query.$state.isLoading]); @@ -101,8 +111,16 @@ export function createUseTransactionQuery( }, pollInterval); return skip - ? { data: undefined, isCalled: false } - : { data: fn(query, variables), isCalled: true }; + ? { + isCalled: false, + isLoading: false, + } + : { + data: fn(query, variables), + isCalled: true, + isLoading: query.$state.isLoading, + error: query.$state.error, + }; }; return useTransactionQuery; diff --git a/packages/react/src/subscription/useSubscription.ts b/packages/react/src/subscription/useSubscription.ts index a253dd72b..d77772b7a 100644 --- a/packages/react/src/subscription/useSubscription.ts +++ b/packages/react/src/subscription/useSubscription.ts @@ -1,4 +1,4 @@ -import { useRerender } from '@react-hookz/web'; +import { useRerender, useThrottledCallback } from '@react-hookz/web'; import { BaseGeneratedSchema, GQtyClient, GQtyError } from 'gqty'; import { useEffect, useMemo, useState } from 'react'; @@ -9,6 +9,11 @@ export type UseSubscription = ( export type UseSubscriptionOptions = { onError?: (error: GQtyError) => void; operationName?: string; + /** + * Throttle delay for each re-redner, prevents busy subscriptions from + * hanging the UI. + */ + renderThrottleDelay?: number; }; export function createUseSubscription({ @@ -17,6 +22,7 @@ export function createUseSubscription({ const useSubscription: UseSubscription = ({ onError, operationName, + renderThrottleDelay = 100, } = {}) => { const { accessor: { subscription }, @@ -25,12 +31,17 @@ export function createUseSubscription({ } = useMemo(() => createResolver({ operationName }), [operationName]); const render = useRerender(); + const throttledRender = useThrottledCallback( + render, + [render], + renderThrottleDelay + ); const [error, setError] = useState(); if (error) throw error; useEffect(() => { return subscribe({ - onNext: () => render(), + onNext: () => throttledRender(), onError(error) { const theError = GQtyError.create(error); diff --git a/packages/react/src/useOnlineEffect.ts b/packages/react/src/useOnlineEffect.ts new file mode 100644 index 000000000..7bc960b7a --- /dev/null +++ b/packages/react/src/useOnlineEffect.ts @@ -0,0 +1,14 @@ +import { DependencyList, useEffect } from 'react'; + +export const useOnlineEffect = ( + fn: (...args: unknown[]) => unknown, + deps?: DependencyList +) => { + useEffect(() => { + globalThis.addEventListener?.('online', fn); + + return () => { + globalThis.removeEventListener?.('online', fn); + }; + }, deps); +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df8732eb2..9d214e623 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -333,81 +333,6 @@ importers: specifier: ^4.2.1 version: 4.2.1(@types/node@18.15.5) - integration/graphql-17: - dependencies: - '@algolia/client-search': - specifier: ^4.15 - version: 4.15.0 - '@babel/core': - specifier: ^7 - version: 7.21.0 - '@chakra-ui/system': - specifier: ^2.5.2 - version: 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.0.0) - '@emotion/react': - specifier: ^11.0.0 - version: 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': - specifier: ^11.0.0 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - prop-types: - specifier: ^15.8.1 - version: 15.8.1 - react: - specifier: ^18 - version: 18.0.0 - unist-util-visit: - specifier: ^2.0.0 - version: 2.0.3 - devDependencies: - '@gqty/cli': - specifier: workspace:^4.0.0-alpha.0 - version: file:packages/cli/dist(graphql@17.0.0-alpha.2) - '@graphql-ez/fastify': - specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) - '@graphql-ez/fastify-testing': - specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) - '@graphql-typed-document-node/core': - specifier: ^3.2.0 - version: 3.2.0(graphql@17.0.0-alpha.2) - '@types/node': - specifier: ^18.15.5 - version: 18.15.5 - ava: - specifier: ^5.2.0 - version: 5.2.0 - bob-tsm: - specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) - c8: - specifier: ^7.13.0 - version: 7.13.0 - esbuild: - specifier: ^0.17.12 - version: 0.17.12 - fastify: - specifier: ^4.11.0 - version: 4.11.0 - gqty: - specifier: workspace:^3.0.0-alpha.0 - version: file:packages/gqty/dist(graphql@17.0.0-alpha.2) - graphql: - specifier: 17.0.0-alpha.2 - version: 17.0.0-alpha.2 - graphql-ez: - specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - typescript: - specifier: ^4.9.5 - version: 4.9.5 - dependenciesMeta: - '@gqty/cli': - injected: true - gqty: - injected: true - internal/test-utils: dependencies: '@graphql-ez/fastify': @@ -415,7 +340,7 @@ importers: version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/fastify-testing': specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) @@ -601,6 +526,9 @@ importers: gqty: specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist + graphql: + specifier: ^16.0.0 + version: 16.6.0 p-lazy: specifier: ^3.1.0 version: 3.1.0 @@ -656,9 +584,6 @@ importers: fast-glob: specifier: ^3.2.12 version: 3.2.12 - graphql: - specifier: ^16.6.0 - version: 16.6.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -2612,15 +2537,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/color-mode@2.1.12(react@18.0.0): - resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@18.0.0) - react: 18.0.0 - dev: false - /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: @@ -2989,14 +2905,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@18.0.0): - resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.0.0 - dev: false - /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: @@ -3015,15 +2923,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-utils@2.0.12(react@18.0.0): - resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/utils': 2.0.15 - react: 18.0.0 - dev: false - /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: @@ -3226,25 +3125,6 @@ packages: react-fast-compare: 3.2.0 dev: false - /@chakra-ui/system@2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@18.0.0): - resolution: {integrity: sha512-nmQZi/YeI6u0UkUHIRcS/iJ71DZDjD3Yk90IGElkkQdGMR4dYKGV3RwBMNoIbpRUKZXDuqUGsXGSLERXwwiqzw==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - dependencies: - '@chakra-ui/color-mode': 2.1.12(react@18.0.0) - '@chakra-ui/object-utils': 2.0.8 - '@chakra-ui/react-utils': 2.0.12(react@18.0.0) - '@chakra-ui/styled-system': 2.6.2 - '@chakra-ui/theme-utils': 2.0.12 - '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - react: 18.0.0 - react-fast-compare: 3.2.0 - dev: false - /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: @@ -4017,6 +3897,7 @@ packages: ajv: 8.11.0 ajv-formats: 2.1.1(ajv@8.11.0) fast-uri: 2.1.0 + dev: false /@fastify/ajv-compiler@3.5.0: resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} @@ -4031,9 +3912,11 @@ packages: dependencies: fastify-plugin: 4.3.0 mnemonist: 0.39.5 + dev: false /@fastify/deepmerge@1.1.0: resolution: {integrity: sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==} + dev: false /@fastify/error@3.0.0: resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} @@ -4042,6 +3925,7 @@ packages: resolution: {integrity: sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==} dependencies: fast-json-stringify: 5.4.0 + dev: false /@fastify/fast-json-stringify-compiler@4.2.0: resolution: {integrity: sha512-ypZynRvXA3dibfPykQN3RB5wBdEUgSGgny8Qc6k163wYPLD4mEGEDkACp+00YmqkGvIm8D/xYoHajwyEdWD/eg==} @@ -4284,7 +4168,7 @@ packages: - supports-color dev: true - /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2): + /@graphql-ez/client@0.6.1(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -4294,13 +4178,13 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.0-alpha.2) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 - graphql: 17.0.0-alpha.2 + graphql: 16.6.0 undici: 5.7.0 + dev: false - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -4308,15 +4192,16 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@graphql-ez/client': 0.6.1(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) fastify: 4.11.0 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + graphql: 16.6.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' + dev: false /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} @@ -4340,27 +4225,6 @@ packages: graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) dev: false - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): - resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} - engines: {node: '>=14.13.1'} - peerDependencies: - '@types/node': '*' - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - peerDependenciesMeta: - fastify: - optional: true - graphql: - optional: true - dependencies: - '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - '@types/node': 18.15.5 - fastify: 4.11.0 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} @@ -4519,15 +4383,6 @@ packages: '@types/node': 18.15.5 graphql: 16.6.0 - /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): - resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} - peerDependencies: - '@types/node': '*' - graphql: '*' - dependencies: - '@types/node': 18.15.5 - graphql: 17.0.0-alpha.2 - /@graphql-tools/batch-execute@8.5.18(graphql@16.6.0): resolution: {integrity: sha512-mNv5bpZMLLwhkmPA6+RP81A6u3KF4CSKLf3VX9hbomOkQR4db8pNs8BOvpZU54wKsUzMzdlws/2g/Dabyb2Vsg==} peerDependencies: @@ -4754,13 +4609,6 @@ packages: dependencies: graphql: 16.6.0 - /@graphql-typed-document-node/core@3.2.0(graphql@17.0.0-alpha.2): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 17.0.0-alpha.2 - /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3): resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} peerDependencies: @@ -5452,13 +5300,6 @@ packages: dependencies: graphql: 16.6.0 - /@pablosz/graphql-helix@2.0.3(graphql@17.0.0-alpha.2): - resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} - peerDependencies: - graphql: '*' - dependencies: - graphql: 17.0.0-alpha.2 - /@pnpm/types@8.8.0: resolution: {integrity: sha512-IKUpbWRHDB9C4Yy4UeBpeYhU7eIsLj50jF5HNRUkbJnM0CWHPLxX9TGCI+ov8pgGeTP1t1g0GPDHD6en9D8LxQ==} engines: {node: '>=14.6'} @@ -6517,9 +6358,11 @@ packages: engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 + dev: false /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + dev: false /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} @@ -6580,14 +6423,6 @@ packages: - supports-color dev: true - /aggregate-error@4.0.1: - resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} - engines: {node: '>=12'} - dependencies: - clean-stack: 4.2.0 - indent-string: 5.0.0 - dev: true - /ajv-formats@2.1.1(ajv@8.11.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -6597,6 +6432,7 @@ packages: optional: true dependencies: ajv: 8.11.0 + dev: false /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -6713,6 +6549,7 @@ packages: /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: false /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -6754,11 +6591,6 @@ packages: engines: {node: '>=8'} dev: true - /array-find-index@1.0.2: - resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} - engines: {node: '>=0.10.0'} - dev: true - /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true @@ -6782,11 +6614,6 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /arrgv@1.0.2: - resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} - engines: {node: '>=8.0.0'} - dev: true - /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} @@ -6797,11 +6624,6 @@ packages: engines: {node: '>=8'} dev: true - /arrify@3.0.0: - resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} - engines: {node: '>=12'} - dev: true - /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -6817,6 +6639,7 @@ packages: /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + dev: false /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} @@ -6838,65 +6661,6 @@ packages: postcss-value-parser: 4.2.0 dev: false - /ava@5.2.0: - resolution: {integrity: sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==} - engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'} - hasBin: true - peerDependencies: - '@ava/typescript': '*' - peerDependenciesMeta: - '@ava/typescript': - optional: true - dependencies: - acorn: 8.8.1 - acorn-walk: 8.2.0 - ansi-styles: 6.2.1 - arrgv: 1.0.2 - arrify: 3.0.0 - callsites: 4.0.0 - cbor: 8.1.0 - chalk: 5.2.0 - chokidar: 3.5.3 - chunkd: 2.0.1 - ci-info: 3.7.1 - ci-parallel-vars: 1.0.1 - clean-yaml-object: 0.1.0 - cli-truncate: 3.1.0 - code-excerpt: 4.0.0 - common-path-prefix: 3.0.0 - concordance: 5.0.4 - currently-unhandled: 0.4.1 - debug: 4.3.4 - del: 7.0.0 - emittery: 1.0.1 - figures: 5.0.0 - globby: 13.1.3 - ignore-by-default: 2.1.0 - indent-string: 5.0.0 - is-error: 2.2.2 - is-plain-object: 5.0.0 - is-promise: 4.0.0 - matcher: 5.0.0 - mem: 9.0.2 - ms: 2.1.3 - p-event: 5.0.1 - p-map: 5.5.0 - picomatch: 2.3.1 - pkg-conf: 4.0.0 - plur: 5.1.0 - pretty-ms: 8.0.0 - resolve-cwd: 3.0.0 - slash: 3.0.0 - stack-utils: 2.0.6 - strip-ansi: 7.0.1 - supertap: 3.0.1 - temp-dir: 3.0.0 - write-file-atomic: 5.0.0 - yargs: 17.6.2 - transitivePeerDependencies: - - supports-color - dev: true - /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -6910,6 +6674,7 @@ packages: fastq: 1.13.0 transitivePeerDependencies: - supports-color + dev: false /axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} @@ -7091,6 +6856,7 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} @@ -7108,10 +6874,6 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /blueimp-md5@2.19.0: - resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} - dev: true - /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -7292,6 +7054,7 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + dev: false /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} @@ -7335,25 +7098,6 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - /c8@7.13.0: - resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} - engines: {node: '>=10.12.0'} - hasBin: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@istanbuljs/schema': 0.1.3 - find-up: 5.0.0 - foreground-child: 2.0.0 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-report: 3.0.0 - istanbul-reports: 3.1.5 - rimraf: 3.0.2 - test-exclude: 6.0.0 - v8-to-istanbul: 9.0.1 - yargs: 16.2.0 - yargs-parser: 20.2.9 - dev: true - /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -7365,11 +7109,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /callsites@4.0.0: - resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} - engines: {node: '>=12.20'} - dev: true - /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: @@ -7426,13 +7165,6 @@ packages: tslib: 2.5.0 upper-case-first: 2.0.2 - /cbor@8.1.0: - resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} - engines: {node: '>=12.19'} - dependencies: - nofilter: 3.1.0 - dev: true - /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false @@ -7554,18 +7286,10 @@ packages: optionalDependencies: fsevents: 2.3.2 - /chunkd@2.0.1: - resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} - dev: true - /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} - /ci-parallel-vars@1.0.1: - resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} - dev: true - /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} @@ -7577,31 +7301,11 @@ packages: resolution: {integrity: sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==} dev: false - /clean-stack@4.2.0: - resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} - engines: {node: '>=12'} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - - /clean-yaml-object@0.1.0: - resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} - engines: {node: '>=0.10.0'} - dev: true - /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} dev: true - /cli-truncate@3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 - dev: true - /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7618,14 +7322,6 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -7643,13 +7339,6 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - /code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - convert-to-spaces: 2.0.1 - dev: true - /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} @@ -7741,10 +7430,6 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true - /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -7778,20 +7463,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - /concordance@5.0.4: - resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} - engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} - dependencies: - date-time: 3.1.0 - esutils: 2.0.3 - fast-diff: 1.2.0 - js-string-escape: 1.0.1 - lodash: 4.17.21 - md5-hex: 3.0.1 - semver: 7.3.8 - well-known-symbols: 2.0.0 - dev: true - /concurrently@7.6.0: resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} @@ -7837,11 +7508,6 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true @@ -8050,13 +7716,6 @@ packages: stream-transform: 2.1.3 dev: true - /currently-unhandled@0.4.1: - resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} - engines: {node: '>=0.10.0'} - dependencies: - array-find-index: 1.0.2 - dev: true - /d3-array@1.2.4: resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} dev: false @@ -8560,13 +8219,6 @@ packages: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} - /date-time@3.1.0: - resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} - engines: {node: '>=6'} - dependencies: - time-zone: 1.0.0 - dev: true - /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -8698,20 +8350,6 @@ packages: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false - /del@7.0.0: - resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} - engines: {node: '>=14.16'} - dependencies: - globby: 13.1.3 - graceful-fs: 4.2.10 - is-glob: 4.0.3 - is-path-cwd: 3.0.0 - is-path-inside: 4.0.0 - p-map: 5.5.0 - rimraf: 3.0.2 - slash: 4.0.0 - dev: true - /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: @@ -8861,11 +8499,6 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - /emittery@1.0.1: - resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} - engines: {node: '>=14.16'} - dev: true - /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -9021,6 +8654,7 @@ packages: /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + dev: false /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} @@ -9230,6 +8864,7 @@ packages: /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + dev: false /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -9237,6 +8872,7 @@ packages: /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} + dev: false /execa@0.2.2: resolution: {integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ==} @@ -9368,14 +9004,11 @@ packages: /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: false /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff@1.2.0: - resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} - dev: true - /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -9398,6 +9031,7 @@ packages: fast-deep-equal: 3.1.3 fast-uri: 2.1.0 rfdc: 1.3.0 + dev: false /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -9407,10 +9041,12 @@ packages: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} dependencies: fast-decode-uri-component: 1.0.1 + dev: false /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} + dev: false /fast-shallow-equal@1.0.0: resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} @@ -9418,6 +9054,7 @@ packages: /fast-uri@2.1.0: resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==} + dev: false /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} @@ -9452,6 +9089,7 @@ packages: tiny-lru: 10.0.1 transitivePeerDependencies: - supports-color + dev: false /fastify@4.15.0: resolution: {integrity: sha512-m/CaRN8nf5uyYdrDe2qqq+0z3oGyE+A++qlKQoLJTI4WI0nWK9D6R3FxXQ3MVwt/md977GMR4F43pE9oqrS2zw==} @@ -9509,14 +9147,6 @@ packages: web-streams-polyfill: 3.2.1 dev: true - /figures@5.0.0: - resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} - engines: {node: '>=14'} - dependencies: - escape-string-regexp: 5.0.0 - is-unicode-supported: 1.3.0 - dev: true - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -9561,6 +9191,7 @@ packages: fast-deep-equal: 3.1.3 fast-querystring: 1.0.0 safe-regex2: 2.0.0 + dev: false /find-my-way@7.6.0: resolution: {integrity: sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ==} @@ -9659,14 +9290,6 @@ packages: is-callable: 1.2.7 dev: true - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true - /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} dev: false @@ -9971,24 +9594,6 @@ packages: transitivePeerDependencies: - '@types/node' - /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): - resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} - engines: {node: '>=14.13.1'} - peerDependencies: - graphql: '*' - peerDependenciesMeta: - graphql: - optional: true - dependencies: - '@envelop/core': 3.0.4 - '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) - '@pablosz/graphql-helix': 2.0.3(graphql@17.0.0-alpha.2) - graphql: 17.0.0-alpha.2 - tiny-lru: 10.0.1 - transitivePeerDependencies: - - '@types/node' - /graphql-sse@2.1.0(graphql@16.6.0): resolution: {integrity: sha512-N1e/MqBzAAw27NZ8rsX3SBbgJ/gUBTOnkn9C1wiS7HpchQopPlURDjH3ROSuHqRePepD39itQi1Woy+gIjvz8w==} engines: {node: '>=12'} @@ -10032,10 +9637,6 @@ packages: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - /graphql@17.0.0-alpha.2: - resolution: {integrity: sha512-aRAd/BQ5hSO0+l7x+sHBfJVUp2JUOjPTE/iwJ3BhtYNH/MC7n4gjlZbKvnBVFZZAczyMS3vezS4teEZivoqIzw==} - engines: {node: ^14.19.0 || ^16.10.0 || >=18.0.0} - /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} @@ -10314,11 +9915,6 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-by-default@2.1.0: - resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} - engines: {node: '>=10 <11 || >=12 <13 || >=14'} - dev: true - /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -10410,11 +10006,6 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /irregular-plurals@3.4.1: - resolution: {integrity: sha512-JR7VL+1Kd9z79bE+2uSgifpzrTwLWmTvyeUewhxZCHVtpPImAsLk4adfRxg86uvdsJ8etYYrpzN7vRT30gGnOA==} - engines: {node: '>=8'} - dev: true - /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} @@ -10524,10 +10115,6 @@ packages: hasBin: true dev: true - /is-error@2.2.2: - resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} - dev: true - /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -10541,11 +10128,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true - /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} @@ -10593,21 +10175,11 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: true - /is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - dev: true - /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -10618,11 +10190,6 @@ packages: engines: {node: '>=12'} dev: false - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true - /is-port-reachable@4.0.0: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10632,10 +10199,6 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - dev: true - /is-reference@3.0.0: resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} dependencies: @@ -10713,11 +10276,6 @@ packages: dependencies: unc-path-regex: 0.1.2 - /is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - dev: true - /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: @@ -11289,11 +10847,6 @@ packages: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: true - /js-string-escape@1.0.1: - resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} - engines: {node: '>= 0.8'} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -11400,18 +10953,23 @@ packages: /just-extend@6.2.0: resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + dev: false /just-has@2.3.0: resolution: {integrity: sha512-JzxCot/ETqLDullSSC5OtT/PLWiqgRNO5z33gVit6BoCXe/6BHut33o9ZunG5jQSqeY4EyzFnl8Wqc7S8Ci/wQ==} + dev: false /just-memoize@2.2.0: resolution: {integrity: sha512-zriv+MY+61RXT0QsrO1ZJtL5umouqqSWmCGBkp2wJm35kniunBAA4qhUKx8Lvg/QcwrF9xuw9E6PkevKFf4boQ==} + dev: false /just-safe-get@4.2.0: resolution: {integrity: sha512-+tS4Bvgr/FnmYxOGbwziJ8I2BFk+cP1gQHm6rm7zo61w1SbxBwWGEq/Ryy9Gb6bvnloPq6pz7Bmm4a0rjTNlXA==} + dev: false /just-safe-set@4.2.1: resolution: {integrity: sha512-La5CP41Ycv52+E4g7w1sRV8XXk7Sp8a/TwWQAYQKn6RsQz1FD4Z/rDRRmqV3wJznS1MDF3YxK7BCudX1J8FxLg==} + dev: false /kebab-case@1.0.2: resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} @@ -11459,6 +11017,7 @@ packages: cookie: 0.5.0 process-warning: 2.0.0 set-cookie-parser: 2.5.1 + dev: false /lilconfig@2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} @@ -11467,11 +11026,6 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /load-json-file@7.0.1: - resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /load-script@1.0.0: resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} dev: false @@ -11605,13 +11159,6 @@ packages: dependencies: tmpl: 1.0.5 - /map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: true - /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} @@ -11639,20 +11186,6 @@ packages: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: false - /matcher@5.0.0: - resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - escape-string-regexp: 5.0.0 - dev: true - - /md5-hex@3.0.1: - resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} - engines: {node: '>=8'} - dependencies: - blueimp-md5: 2.19.0 - dev: true - /mdast-util-definitions@5.1.1: resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} dependencies: @@ -11844,14 +11377,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /mem@9.0.2: - resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} - engines: {node: '>=12.20'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 4.0.0 - dev: true - /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false @@ -12292,11 +11817,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -12352,6 +11872,7 @@ packages: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} dependencies: obliterator: 2.0.4 + dev: false /modern-normalize@1.1.0: resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==} @@ -12385,6 +11906,7 @@ packages: resolution: {integrity: sha512-xdgjZeoqBQcsinnaglxw/lLTcEicRQ3PZq8/yUIXzVXQ6ZfkUDljvOm6goZ6oINkwYqna3rapMon1N4GEtQD7Q==} dependencies: multidict: link:../multidict + dev: false /multimatch@4.0.0: resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} @@ -12586,11 +12108,6 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - /nofilter@3.1.0: - resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} - engines: {node: '>=12.19'} - dev: true - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -12672,6 +12189,7 @@ packages: /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + dev: false /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} @@ -12707,9 +12225,11 @@ packages: /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + dev: false /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + dev: false /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} @@ -12808,21 +12328,10 @@ packages: engines: {node: '>=12'} dev: false - /p-defer@1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: true - /p-defer@3.0.0: resolution: {integrity: sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==} engines: {node: '>=8'} - - /p-event@5.0.1: - resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-timeout: 5.1.0 - dev: true + dev: false /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} @@ -12834,6 +12343,7 @@ packages: /p-lazy@3.1.0: resolution: {integrity: sha512-sCJn0Cdahs6G6SX9+DUihVFUhrzDEduzE5xeViVBGtoqy5dBWko7W8T6Kk6TjR2uevRXJO7CShfWrqdH5s3w3g==} engines: {node: '>=8'} + dev: false /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -12879,18 +12389,6 @@ packages: engines: {node: '>=6'} dev: true - /p-map@5.5.0: - resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} - engines: {node: '>=12'} - dependencies: - aggregate-error: 4.0.1 - dev: true - - /p-timeout@5.1.0: - resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} - engines: {node: '>=12'} - dev: true - /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -12937,11 +12435,6 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-ms@3.0.0: - resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} - engines: {node: '>=12'} - dev: true - /parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} dev: false @@ -13063,9 +12556,11 @@ packages: dependencies: readable-stream: 4.2.0 split2: 4.1.0 + dev: false /pino-std-serializers@6.0.0: resolution: {integrity: sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==} + dev: false /pino@8.7.0: resolution: {integrity: sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==} @@ -13082,32 +12577,18 @@ packages: safe-stable-stringify: 2.4.1 sonic-boom: 3.2.0 thread-stream: 2.2.0 + dev: false /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - /pkg-conf@4.0.0: - resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - find-up: 6.3.0 - load-json-file: 7.0.1 - dev: true - /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - /plur@5.1.0: - resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - irregular-plurals: 3.4.1 - dev: true - /polished@4.2.2: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} @@ -13249,13 +12730,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /pretty-ms@8.0.0: - resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} - engines: {node: '>=14.16'} - dependencies: - parse-ms: 3.0.0 - dev: true - /pretty-quick@3.1.3(prettier@2.8.6): resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} engines: {node: '>=10.13'} @@ -13274,10 +12748,12 @@ packages: /process-warning@2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} + dev: false /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + dev: false /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} @@ -13370,6 +12846,7 @@ packages: /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: false /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -13731,13 +13208,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 - /react@18.0.0: - resolution: {integrity: sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - dev: false - /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -13803,6 +13273,7 @@ packages: buffer: 6.0.3 events: 3.3.0 process: 0.11.10 + dev: false /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} @@ -13820,6 +13291,7 @@ packages: /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} + dev: false /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -14036,6 +13508,7 @@ packages: /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} + dev: false /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -14043,6 +13516,7 @@ packages: /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: false /rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} @@ -14145,10 +13619,12 @@ packages: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 + dev: false /safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} + dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -14186,6 +13662,7 @@ packages: /secure-json-parse@2.5.0: resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} + dev: false /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} @@ -14238,13 +13715,6 @@ packages: type-fest: 2.19.0 dev: false - /serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} - engines: {node: '>=10'} - dependencies: - type-fest: 0.13.1 - dev: true - /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: @@ -14295,6 +13765,7 @@ packages: /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} + dev: false /set-harmonic-interval@1.0.1: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} @@ -14408,14 +13879,6 @@ packages: engines: {node: '>=14.16'} dev: false - /slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} @@ -14439,6 +13902,7 @@ packages: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} dependencies: atomic-sleep: 1.0.0 + dev: false /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} @@ -14514,6 +13978,7 @@ packages: /split2@4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} + dev: false /split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} @@ -14775,16 +14240,6 @@ packages: symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /supertap@3.0.1: - resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - indent-string: 5.0.0 - js-yaml: 3.14.1 - serialize-error: 7.0.1 - strip-ansi: 7.0.1 - dev: true - /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -14875,11 +14330,6 @@ packages: engines: {node: '>=8'} dev: true - /temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - dev: true - /tempy@3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} @@ -14911,6 +14361,7 @@ packages: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} dependencies: real-require: 0.2.0 + dev: false /throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} @@ -14921,11 +14372,6 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /time-zone@1.0.0: - resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} - engines: {node: '>=4'} - dev: true - /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false @@ -15283,6 +14729,7 @@ packages: /undici@5.7.0: resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} engines: {node: '>=12.18'} + dev: false /unfetch@5.0.0: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} @@ -15763,11 +15210,6 @@ packages: - utf-8-validate dev: true - /well-known-symbols@2.0.0: - resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} - engines: {node: '>=6'} - dev: true - /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -15897,14 +15339,6 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /write-file-atomic@5.0.0: - resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -15987,11 +15421,6 @@ packages: camelcase: 5.3.1 decamelize: 1.2.0 - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true - /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -16012,19 +15441,6 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: true - /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} @@ -16065,54 +15481,3 @@ packages: /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: false - - file:packages/cli/dist(graphql@17.0.0-alpha.2): - resolution: {directory: packages/cli/dist, type: directory} - id: file:packages/cli/dist - name: '@gqty/cli' - version: 4.0.0-alpha.0 - engines: {node: ^12.20.0 || >=14.13.0} - hasBin: true - peerDependencies: - graphql: '*' - peerDependenciesMeta: - graphql: - optional: true - dependencies: - gqty: link:packages/gqty/dist - graphql: 17.0.0-alpha.2 - p-lazy: 3.1.0 - undici: 5.7.0 - dev: true - - file:packages/gqty/dist(graphql@17.0.0-alpha.2): - resolution: {directory: packages/gqty/dist, type: directory} - id: file:packages/gqty/dist - name: gqty - version: 3.0.0-alpha.0 - engines: {node: ^12.20.0 || >=14.13.0} - peerDependencies: - graphql: '*' - graphql-sse: ^2.1.0 - graphql-ws: ^5.11.3 - peerDependenciesMeta: - graphql: - optional: true - graphql-sse: - optional: true - graphql-ws: - optional: true - dependencies: - '@gqty/utils': link:packages/utils/dist - flatted: 3.2.7 - graphql: 17.0.0-alpha.2 - just-extend: 6.2.0 - just-has: 2.3.0 - just-memoize: 2.2.0 - just-safe-get: 4.2.0 - just-safe-set: 4.2.1 - multidict: 1.0.5 - object-hash: 3.0.0 - p-defer: 3.0.0 - p-lazy: 3.1.0 - dev: true From ad4fd9e286a11425d912499e40a13244c5f7df55 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Apr 2023 22:47:45 +0800 Subject: [PATCH 034/122] feat: Added onComplete for useMutation --- packages/react/src/mutation/useMutation.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 7739db29f..d8fe97db2 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -4,7 +4,9 @@ import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; export interface UseMutationOptions { - onCompleted?: (data: TData) => Promise | void; + onComplete?: (data: TData) => Promise | void; + /** @deprecated Use onComplete instead. */ + onCompleted?: (data: TData) => void; onError?: OnErrorHandler; operationName?: string; /** @@ -71,6 +73,7 @@ export const createUseMutation = ( ) => TData, { onCompleted, + onComplete = onCompleted, onError, retry = defaultRetry, refetchQueries = [], @@ -124,7 +127,7 @@ export const createUseMutation = ( const data = await promise; - await onCompleted?.(data); + await onComplete?.(data); setState({ data }); return data; From 451b7144bdac55d2f3504ba8c5eab0c76d13cfd7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Apr 2023 22:57:24 +0800 Subject: [PATCH 035/122] chore: changesets --- .changeset/afraid-flowers-thank.md | 3 ++- .changeset/cool-wolves-own.md | 5 ----- .changeset/empty-worms-smell.md | 2 +- .changeset/grumpy-clouds-notice.md | 2 +- .changeset/hip-kangaroos-give.md | 2 +- .changeset/hot-donuts-hunt.md | 5 ----- .changeset/pre.json | 1 - .changeset/real-camels-run.md | 5 +++++ .changeset/small-penguins-invent.md | 2 +- 9 files changed, 11 insertions(+), 16 deletions(-) delete mode 100644 .changeset/cool-wolves-own.md delete mode 100644 .changeset/hot-donuts-hunt.md create mode 100644 .changeset/real-camels-run.md diff --git a/.changeset/afraid-flowers-thank.md b/.changeset/afraid-flowers-thank.md index e951bb00e..8be950505 100644 --- a/.changeset/afraid-flowers-thank.md +++ b/.changeset/afraid-flowers-thank.md @@ -1,5 +1,6 @@ --- +'gqty': minor '@gqty/react': minor --- -Added `operationName` in `useTransactionQuery()` +Added `operationName` in `resolved()`, `inlineResolved()`, `useTransactionQuery()` and `useLazyQuery()` diff --git a/.changeset/cool-wolves-own.md b/.changeset/cool-wolves-own.md deleted file mode 100644 index d07d4395c..000000000 --- a/.changeset/cool-wolves-own.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'gqty': minor ---- - -Add `operationName` option to `resolved()` and `inlineResolved()`. diff --git a/.changeset/empty-worms-smell.md b/.changeset/empty-worms-smell.md index 1039a6b31..ac8be24f1 100644 --- a/.changeset/empty-worms-smell.md +++ b/.changeset/empty-worms-smell.md @@ -2,4 +2,4 @@ '@gqty/cli': major --- -dropped inferrable types from generated schema +Dropped inferrable types from generated schema diff --git a/.changeset/grumpy-clouds-notice.md b/.changeset/grumpy-clouds-notice.md index 99e3d8906..d7e63219d 100644 --- a/.changeset/grumpy-clouds-notice.md +++ b/.changeset/grumpy-clouds-notice.md @@ -2,4 +2,4 @@ '@gqty/react': minor --- -Upgraded to the new core +Upgrade to the new core diff --git a/.changeset/hip-kangaroos-give.md b/.changeset/hip-kangaroos-give.md index 3c54812a6..9fb12b73b 100644 --- a/.changeset/hip-kangaroos-give.md +++ b/.changeset/hip-kangaroos-give.md @@ -2,4 +2,4 @@ 'gqty': major --- -QueryFetcher now accepts QueryPayload instead of 3 parameters +QueryFetcher now accepts QueryPayload as the first parameter diff --git a/.changeset/hot-donuts-hunt.md b/.changeset/hot-donuts-hunt.md deleted file mode 100644 index ca54b47bb..000000000 --- a/.changeset/hot-donuts-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@gqty/react': minor ---- - -Added proxy mode for useMutation diff --git a/.changeset/pre.json b/.changeset/pre.json index 1b926ba4f..fe5f9163c 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -16,7 +16,6 @@ }, "changesets": [ "afraid-flowers-thank", - "cool-wolves-own", "cyan-seas-relax", "dull-hotels-listen", "empty-worms-smell", diff --git a/.changeset/real-camels-run.md b/.changeset/real-camels-run.md new file mode 100644 index 000000000..cea9f7496 --- /dev/null +++ b/.changeset/real-camels-run.md @@ -0,0 +1,5 @@ +--- +'@gqty/react': minor +--- + +feat: Added onComplete for useMutation diff --git a/.changeset/small-penguins-invent.md b/.changeset/small-penguins-invent.md index 2fbc31039..a79ea50c2 100644 --- a/.changeset/small-penguins-invent.md +++ b/.changeset/small-penguins-invent.md @@ -2,4 +2,4 @@ '@gqty/react': minor --- -Window focus refetching +Added `refetchInteraval`, `refetchIntervalInBackground`, `refetchOnReconnect` and `refetchOnWindowVisible` in `useQuery`. From 9ea134b8cbca439fbb8c34b6faaf676c97bd7db6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 6 Apr 2023 22:38:33 +0800 Subject: [PATCH 036/122] feat(packages/cli): interactive mode --- .changeset/lemon-bags-behave.md | 5 + package.json | 1 - packages/cli/package.json | 17 +- packages/cli/src/bin.ts | 38 +-- packages/cli/src/commands/default.ts | 289 ++++++++++++++++++ .../commands/default/convertHeadersInput.ts | 17 ++ .../cli/src/commands/default/fetchSchema.ts | 195 ++++++++++++ .../src/commands/default/generateClient.ts | 66 ++++ .../src/commands/default/getCommandName.ts | 18 ++ .../commands/default/getUserPackageManager.ts | 22 ++ packages/cli/src/commands/default/logger.ts | 32 ++ .../cli/src/commands/default/promptInstall.ts | 84 +++++ packages/cli/src/commands/generate.ts | 38 +++ packages/cli/src/config.ts | 207 ++++++++----- packages/cli/src/deps.ts | 13 +- packages/cli/src/envelop.ts | 6 +- packages/cli/src/generate.ts | 78 +++-- packages/cli/src/index.ts | 6 +- packages/cli/src/inspectWriteGenerate.ts | 18 +- packages/cli/src/introspection.ts | 4 +- packages/cli/src/writeGenerate.ts | 16 +- packages/cli/test/generate.test.ts | 13 +- .../cli/test/inspectWriteGenerate.test.ts | 21 +- packages/cli/test/utils.ts | 4 +- packages/cli/test/writeGenerate.test.ts | 8 +- packages/gqty/test/utils.ts | 4 +- pnpm-lock.yaml | 259 +++++++++++++--- tsconfig.json | 3 +- 28 files changed, 1222 insertions(+), 260 deletions(-) create mode 100644 .changeset/lemon-bags-behave.md create mode 100644 packages/cli/src/commands/default.ts create mode 100644 packages/cli/src/commands/default/convertHeadersInput.ts create mode 100644 packages/cli/src/commands/default/fetchSchema.ts create mode 100644 packages/cli/src/commands/default/generateClient.ts create mode 100644 packages/cli/src/commands/default/getCommandName.ts create mode 100644 packages/cli/src/commands/default/getUserPackageManager.ts create mode 100644 packages/cli/src/commands/default/logger.ts create mode 100644 packages/cli/src/commands/default/promptInstall.ts create mode 100644 packages/cli/src/commands/generate.ts diff --git a/.changeset/lemon-bags-behave.md b/.changeset/lemon-bags-behave.md new file mode 100644 index 000000000..cef159bed --- /dev/null +++ b/.changeset/lemon-bags-behave.md @@ -0,0 +1,5 @@ +--- +'@gqty/cli': minor +--- + +feat: interactive mode diff --git a/package.json b/package.json index 033b1fbca..6150bed7a 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,6 @@ "overrides": { "trim@<0.0.3": ">=0.0.3", "glob-parent@<5.1.2": ">=5.1.2", - "undici": "5.7.0", "mermaid@<8.13.8": ">=8.13.8", "@braintree/sanitize-url@<6.0.0": ">=6.0.0", "dset@<3.1.2": ">=3.1.2", diff --git a/packages/cli/package.json b/packages/cli/package.json index fc4481c4a..be49a16a1 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -40,39 +40,48 @@ "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { - "gqty": "workspace:^3.0.0-alpha.0", - "graphql": "^16.0.0", - "p-lazy": "^3.1.0", - "undici": "^5.21.0" + "gqty": "workspace:^3.0.0-alpha.0" }, "devDependencies": { "@graphql-codegen/core": "^3.1.0", "@graphql-codegen/typescript": "^3.0.2", "@graphql-tools/delegate": "^9.0.25", + "@graphql-tools/schema": "^9.0.17", "@graphql-tools/utils": "^9.2.0", "@graphql-tools/wrap": "^9.3.4", "@size-limit/preset-small-lib": "^8.2.4", + "@types/inquirer": "^8.2.6", "@types/lodash-es": "^4.14.191", + "@types/micromatch": "^4.0.2", "@types/mkdirp": "^1.0.2", + "@types/ms": "^0.7.31", "@types/node": "^18.15.5", "bob-ts": "^4.1.1", "bob-tsm": "^1.1.2", + "chalk": "^5.2.0", "changesets-github-release": "^0.1.0", "commander": "^10.0.0", "cosmiconfig": "^8.1.3", "esbuild": "^0.17.12", "fast-glob": "^3.2.12", + "graphql": "^16.0.0", + "inquirer": "^8.2.5", "lodash-es": "^4.17.21", + "micromatch": "^4.0.5", "mkdirp": "^2.1.5", + "ms": "^2.1.3", "open-cli": "^7.2.0", + "p-lazy": "^3.1.0", "prettier": "^2.8.6", "rimraf": "^4.4.0", "serve": "^14.2.0", "size-limit": "^8.2.4", "test-utils": "workspace:^0.1.0", "tmp-promise": "^3.0.3", + "trading-signals": "^3.7.0", "tslib": "^2.5.0", "typescript": "^4.9.5", + "undici": "^5.21.0", "wait-on": "^7.0.1" }, "publishConfig": { diff --git a/packages/cli/src/bin.ts b/packages/cli/src/bin.ts index 72bd6abfe..c314844d4 100644 --- a/packages/cli/src/bin.ts +++ b/packages/cli/src/bin.ts @@ -1,43 +1,15 @@ -import { defaultConfig } from './config'; +import * as defaultCommand from './commands/default'; +import * as generateCommand from './commands/generate'; import * as deps from './deps.js'; import { __innerState } from './innerState'; -import { inspectWriteGenerate } from './inspectWriteGenerate'; __innerState.isCLI = true; declare const __VERSION__: string; -deps.program.version(__VERSION__).description('CLI for gqty'); +deps.program.version(__VERSION__); -deps.program - .command('generate [endpoint] [destination]') - .option('--react', 'Create React client') - .description( - `Inspect or read from a file a GraphQL Schema and generate the gqty client in the specified directory (./src/generated/graphql.ts by default). -EXAMPLE 1: "gqty generate ./schema.gql --react" -EXAMPLE 2: "gqty generate http://localhost:3000/graphql src/gqty/index.ts" -EXAMPLE 3 (Configuration file): "gqty generate"` - ) - .action(async (endpoint, destination, opts) => { - let react; - if (opts.react != null) { - react = defaultConfig.react = - typeof opts.react === 'boolean' ? opts.react : !!opts.react; - } - - await inspectWriteGenerate({ - endpoint, - destination, - cli: true, - generateOptions: { - react, - }, - }).catch((err) => { - if (err instanceof Error) delete err.stack; - console.error(err); - process.exit(1); - }); - process.exit(0); - }); +generateCommand.addCommand(deps.program); +defaultCommand.addCommand(deps.program); deps.program.parse(process.argv); diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts new file mode 100644 index 000000000..18198da27 --- /dev/null +++ b/packages/cli/src/commands/default.ts @@ -0,0 +1,289 @@ +import { type PackageJSON } from 'bob-esbuild/config/packageJson'; +import type { Command } from 'commander'; +import { cosmiconfig } from 'cosmiconfig'; +import { readFile, watch } from 'node:fs/promises'; +import { type GQtyConfig } from '../config'; +import { inquirer, micromatch, SMA, throttle } from '../deps'; +import { convertHeadersInput } from './default/convertHeadersInput'; +import { fetchSchemas, isURL } from './default/fetchSchema'; +import { generateClient } from './default/generateClient'; +import { getCommandName } from './default/getCommandName'; +import { logger } from './default/logger'; +import { promptInstall, runInstall } from './default/promptInstall'; + +export type CommandOptions = { + header?: string[]; + react?: boolean; + subscriptions?: string; + target?: string; + typescript?: boolean; + watch: boolean; +}; + +export const addCommand = (command: Command) => { + return command + .name(getCommandName()) + .usage(`[options] [endpoints...]`) + .argument('[endpoints...]', 'GraphQL endpoints or schema files.') + .option( + '-H, --header
', + 'Custom header for the introspection query.', + (value, previous: string[]) => [...previous, value], + [] + ) + .option('--react', 'Include React hooks in the genreated client.') + .option( + '--subscriptions ', + 'Includes specified package as subscription client, must be graphql-ws compatible.' + ) + .option('--target', 'Destination path for the generated client.') + .option( + '--typescript', + 'Generates a TypeScript client over a JavaScript one.' + ) + .option( + '-w, --watch', + 'Activate watch mode, regenerate on change changes.', + false + ) + .action(async (argv: string[], options: CommandOptions) => { + const config: GQtyConfig = await cosmiconfig('gqty') + .search() + .then((result) => result?.config ?? {}); + + let endpoints = argv; + + if (endpoints.length === 0) { + if (!process.stdin.isTTY) { + logger.error('Please provide your GraphQL endpoint(s).'); + process.exit(1); + } + + endpoints = await promptEndpoints(); + } + + if (endpoints.length === 0) { + return logger.error('Please provide your GraphQL endpoint(s).'); + } + + // Make sure we have a object for `fetchSchemas` to fill in user headers. + if (!config.introspectionOptions) { + config.introspectionOptions = {}; + } + + const schema = await fetchSchemas(endpoints, { + headers: convertHeadersInput(options.header), + headersByEndpoint: config.introspectionOptions, + }); + + if (Object.keys(config.introspectionOptions ?? {}).length > 0) { + // TODO: Save config to file. + } + + const manifest = await (async () => { + try { + return JSON.parse( + await readFile('package.json', { encoding: 'utf-8' }) + ) as PackageJSON; + } catch { + return; + } + })(); + + // Detect React and TypeScript from package.json. + if (manifest) { + config.react ??= manifest.dependencies?.['react'] !== undefined; + + config.javascriptOutput ??= + manifest.dependencies?.['typescript'] === undefined && + manifest.devDependencies?.['typescript'] === undefined; + } + + // Detect Subscriptions from schema. + if (schema.getSubscriptionType()) { + config.subscriptions ??= 'graphql-ws'; + } + + // CLI options + { + if (options.react) { + config.react = true; + } + + if (options.subscriptions) { + config.subscriptions = options.subscriptions; + } + + if (options.typescript) { + config.javascriptOutput = false; + } + + if (options.target) { + config.destination = options.target; + } + } + + // Enter interactive mode if user did not provide arguments. + if (argv.length === 0) { + config.react = await promptReact(config.react ?? false); + + config.subscriptions = await promptSubscriptions( + config.subscriptions + ? config.subscriptions === true + ? 'graphql-ws' + : config.subscriptions + : undefined + ); + + config.javascriptOutput = !(await promptTypescript( + !config.javascriptOutput + )); + } + + config.destination ??= config.javascriptOutput + ? 'gqty/index.js' + : 'gqty/index.ts'; + + if (isURL(argv[0])) { + config.endpoint = argv[0]; + } + + await generateClient(schema, { + destination: '', + ...config, + }); + + if (argv.length === 0) { + await promptInstall(config); + } else if (manifest) { + await runInstall(manifest, config); + } + + // Watch mode + if (options.watch) { + const { printSchema } = await import('graphql'); + const sma = new SMA(3); + const getMovingAverage = () => { + try { + return sma.getResult(); + } catch { + if (sma.prices.length === 0) return 0; + + return sma.prices.reduce((a, b) => a + b, 0) / sma.prices.length; + } + }; + const doGenerateSchema = throttle( + async () => { + if (mutexLock) return; + + mutexLock = true; + + const start = Date.now(); + + try { + const schema = await fetchSchemas(endpoints, { + headers: convertHeadersInput(options.header), + headersByEndpoint: config.introspectionOptions, + silent: true, + }); + + const schemaText = printSchema(schema); + + if (schemaText === lastSchema) return; + + lastSchema = schemaText; + + await generateClient(schema, { + destination: '', + ...config, + }); + + sma.update(Date.now() - start); + } finally { + mutexLock = false; + } + }, + 1000, + { leading: true, trailing: true } + ); + + let mutexLock = false; + let lastSchema: string = printSchema(schema); + + logger.info('[GQty] Watching for schema changes... (Ctrl+C to exit)'); + + // Polling loop, only happens with URL endpoints. + if (endpoints.some((endpoint) => isURL(endpoint))) { + (async () => { + while (true) { + const wait = Math.max( + 5000, + Math.min(30000, getMovingAverage() * 10) + ); + + await new Promise((resolve) => setTimeout(resolve, wait)); + + doGenerateSchema(); + } + })(); + } + + // Watch file changes + (async () => { + for await (const { filename } of watch('.', { recursive: true })) { + if (micromatch.isMatch(filename, endpoints)) { + doGenerateSchema(); + } + } + })(); + } + + // TODO: Change all `import type` from generated.ts to `import { type ... }` + }); +}; + +const promptEndpoints = async () => { + const { endpoints } = await inquirer.prompt<{ endpoints: string }>({ + name: 'endpoints', + type: 'input', + message: 'Where is your GraphQL endpoint or schema files?', + }); + + return endpoints + .split(/[,\s+]/) + .map((s) => s.trim()) + .filter(Boolean); +}; + +const promptReact = async (defaultValue: boolean) => { + const { react } = await inquirer.prompt<{ react: boolean }>({ + name: 'react', + type: 'confirm', + message: 'Are you using React with GQty?', + default: defaultValue, + }); + + return react; +}; + +const promptSubscriptions = async (defaultValue?: string) => { + const { subscriptions } = await inquirer.prompt<{ subscriptions: string }>({ + name: 'subscriptions', + type: 'input', + message: 'Do you need a subscription client? (leave empty to skip)', + default: defaultValue?.trim() || undefined, + }); + + return subscriptions || false; +}; + +const promptTypescript = async (defaultValue: boolean) => { + const { typescript } = await inquirer.prompt<{ typescript: boolean }>({ + name: 'typescript', + type: 'confirm', + message: 'Do you want a TypeScript client over vanilla.js?', + default: defaultValue, + }); + + return typescript; +}; diff --git a/packages/cli/src/commands/default/convertHeadersInput.ts b/packages/cli/src/commands/default/convertHeadersInput.ts new file mode 100644 index 000000000..4fbba7a02 --- /dev/null +++ b/packages/cli/src/commands/default/convertHeadersInput.ts @@ -0,0 +1,17 @@ +export const convertHeadersInput = (headers?: string[]) => { + if (!headers?.length) return; + + const headersObject: Record = {}; + + for (const header of headers) { + const [key, value] = header.trim().split(/\s*:\s*/); + + if (key && value) { + headersObject[key] = value; + } + } + + if (Object.keys(headersObject).length === 0) return; + + return headersObject; +}; diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts new file mode 100644 index 000000000..d2880babc --- /dev/null +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -0,0 +1,195 @@ +import { AsyncExecutor } from '@graphql-tools/utils'; +import { buildSchema, GraphQLSchema, type ExecutionResult } from 'graphql'; +import { readFile } from 'node:fs/promises'; +import { extname } from 'path'; +import { type RequestInit, type Response } from 'undici'; +import { type GQtyConfig } from '../../config'; +import * as deps from '../../deps'; +import { convertHeadersInput } from './convertHeadersInput'; +import { logger } from './logger'; + +const schemaFileExtensions = ['.gql', '.graphql']; + +export class FetchError extends Error { + readonly name = 'FetchError'; + + constructor(readonly request: RequestInit, readonly response: Response) { + super( + `Received status code ${response.status} when introspecting ${response.url}` + ); + } +} + +export type FetchSchemasOptions = { + headers?: Record; + headersByEndpoint?: GQtyConfig['introspectionOptions']; + silent?: boolean; +}; + +export const fetchSchemas = async ( + endpoints: string[], + options: FetchSchemasOptions +) => { + const schemas: GraphQLSchema[] = []; + + if (!options.headersByEndpoint) { + options.headersByEndpoint = {}; + } + + for (const endpoint of endpoints) { + const { headers, headersByEndpoint } = options; + + const doFetchSchema = async () => { + const schema = await fetchSchema(endpoint, { + headers: headers ?? headersByEndpoint[endpoint]?.headers, + silent: options.silent, + }); + + if (schema === undefined) return; + + schemas.push(schema); + }; + + try { + await doFetchSchema(); + } catch (e) { + if ( + e instanceof FetchError && + e.response.status === 401 && + headers === undefined && + headersByEndpoint[endpoint]?.headers === undefined + ) { + process.stdout.write('\r'); + + const endpoint = e.response.url; + const inHeaders = await promptHeaders(endpoint); + + // If still no headers provided, throw. + if (inHeaders === undefined) { + terminateWithError(e); + } + + headersByEndpoint[endpoint] = { headers: inHeaders }; + + try { + await doFetchSchema(); + } catch (e) { + terminateWithError(e); + } + } else { + terminateWithError(e); + } + } + } + + if (schemas.length === 0) { + terminateWithError(new Error('No schemas found.')); + } + + if (!options.silent) { + logger.successProgress('Schema introspection completed.'); + console.log(''); + } + + return deps.mergeSchemas({ schemas }); +}; + +const terminateWithError = (e: unknown) => { + if (e instanceof Error) { + logger.error(e.message); + process.exit(1); + } + + throw e; +}; + +const fetchSchema = async ( + endpoint: string, + options?: Pick & { silent?: boolean } +): Promise => { + if (isURL(endpoint)) { + if (!options?.silent) { + logger.infoProgress( + `Fetching schema from remote endpoint '${endpoint}'...` + ); + } + + const executor: AsyncExecutor> = async ({ + document, + variables, + extensions = {}, + }) => { + const { print } = await import('graphql'); + const request: RequestInit = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + }, + body: JSON.stringify({ + query: print(document), + variables, + extensions: { + ...extensions, + endpoint, + }, + }), + }; + const response = await deps.fetch(endpoint, request); + + if (response.status >= 400) { + throw new FetchError(request, response); + } + + const body = await response.text(); + + try { + return JSON.parse(body) as ExecutionResult; + } catch { + throw new SyntaxError( + `Invalid JSON received from ${endpoint}: "${ + body.length > 50 + ? body.slice(0, 50).replace(/\n/g, '') + '...' + : body + }".` + ); + } + }; + + return await deps.schemaFromExecutor(executor); + } else { + const files = await deps + .fg(endpoint) + .then((files) => + files.filter((file) => schemaFileExtensions.includes(extname(file))) + ); + + if (files.length === 0) return; + + const fileContents: string[] = []; + + for (const file of files) { + if (!options?.silent) { + logger.infoProgress(`Reading schema file ${file} ...`); + } + + fileContents.push(await readFile(file, { encoding: 'utf-8' })); + } + + return buildSchema(fileContents.join('\n')); + } +}; + +const promptHeaders = async (endpoint: string) => { + if (!process.stdin.isTTY) return; + + const { headers } = await deps.inquirer.prompt<{ headers: string }>({ + name: 'headers', + type: 'input', + message: `Any authorization headers when introspecting ${endpoint}? (comma separated)`, + }); + + return convertHeadersInput(headers.split(/,/)); +}; + +export const isURL = (input: string) => /^https?:\/\//.test(input); diff --git a/packages/cli/src/commands/default/generateClient.ts b/packages/cli/src/commands/default/generateClient.ts new file mode 100644 index 000000000..c9b77f6d7 --- /dev/null +++ b/packages/cli/src/commands/default/generateClient.ts @@ -0,0 +1,66 @@ +import { type GraphQLSchema } from 'graphql'; +import { unlink } from 'node:fs/promises'; +import { SetRequired, type GQtyConfig } from '../../config'; +import { inquirer } from '../../deps'; +import { writeGenerate } from '../../writeGenerate'; +import { logger } from './logger'; + +export const generateClient = async ( + schema: GraphQLSchema, + configuration: SetRequired +) => { + logger.infoProgress(`Generating client and schema ...`); + + await writeGenerate( + schema, + configuration.destination, + configuration, + async (existingFile) => { + process.stdout.write('\r'); + + if ( + configuration.subscriptions && + !existingFile.includes('createSubscriptionsClient') && + (await promptRegenerate( + `Subscrioption client not found in ${configuration.destination}, do you want to regenerate it?` + )) + ) { + await unlink(configuration.destination); + await writeGenerate(schema, configuration.destination, configuration); + return; + } + + if ( + configuration.react && + !existingFile.includes('createReactClient') && + (await promptRegenerate( + `React hooks not found in ${configuration.destination}, do you want to regenerate it?` + )) + ) { + await unlink(configuration.destination); + await writeGenerate(schema, configuration.destination, configuration); + return; + } + + if (existingFile.includes('export const {')) { + logger.warn( + `To prevent possible bundling issues, it's recommended to change the export syntax from "export const { query, ... } = client;" to "const { query, ... } = client; export { query, ... };"` + ); + } + } + ); + + logger.successProgress(`Code generation completed.`); + console.log(''); +}; + +const promptRegenerate = async (message: string): Promise => { + const { regenerate } = await inquirer.prompt<{ regenerate: boolean }>({ + type: 'confirm', + name: 'regenerate', + message, + default: false, + }); + + return regenerate; +}; diff --git a/packages/cli/src/commands/default/getCommandName.ts b/packages/cli/src/commands/default/getCommandName.ts new file mode 100644 index 000000000..5400442ea --- /dev/null +++ b/packages/cli/src/commands/default/getCommandName.ts @@ -0,0 +1,18 @@ +import { getUserPackageManager } from './getUserPackageManager'; + +export const getCommandName = () => { + switch (getUserPackageManager()) { + case 'npm': { + return 'npx @gqty/cli'; + } + case 'pnpm': { + return 'pnpm dlx @gqty/cli'; + } + case 'yarn': { + return 'yarn dlx @gqty/cli'; + } + default: { + return 'gqty'; + } + } +}; diff --git a/packages/cli/src/commands/default/getUserPackageManager.ts b/packages/cli/src/commands/default/getUserPackageManager.ts new file mode 100644 index 000000000..66d3b6381 --- /dev/null +++ b/packages/cli/src/commands/default/getUserPackageManager.ts @@ -0,0 +1,22 @@ +// Credit: https://github.com/t3-oss/create-t3-app/blob/next/cli/src/utils/getUserPkgManager.ts + +import { existsSync } from 'node:fs'; + +export type PackageManager = 'npm' | 'pnpm' | 'yarn'; + +export const getUserPackageManager: () => PackageManager | undefined = () => { + // This environment variable is set by npm and yarn but pnpm seems less consistent + const userAgent = process.env.npm_config_user_agent; + + if (userAgent) { + if (userAgent.startsWith('yarn') || existsSync('yarn.lock')) { + return 'yarn'; + } else if (userAgent.startsWith('pnpm') || existsSync('pnpm-lock.yaml')) { + return 'pnpm'; + } else { + return 'npm'; + } + } + + return; +}; diff --git a/packages/cli/src/commands/default/logger.ts b/packages/cli/src/commands/default/logger.ts new file mode 100644 index 000000000..f2bcc54b8 --- /dev/null +++ b/packages/cli/src/commands/default/logger.ts @@ -0,0 +1,32 @@ +import chalk from 'chalk'; + +export const logger = { + error(...args: unknown[]) { + console.log(chalk.red('✗'), ...args); + }, + warn(...args: unknown[]) { + console.log(chalk.yellow('!'), ...args); + }, + info(...args: unknown[]) { + console.log(chalk.cyan('i'), ...args); + }, + success(...args: unknown[]) { + console.log(chalk.green('✔'), ...args); + }, + + errorProgress(message: string) { + process.stdout.write(progressMessage(chalk.red('✗') + ' ' + message)); + }, + warnProgress(message: string) { + process.stdout.write(progressMessage(chalk.yellow('!') + ' ' + message)); + }, + infoProgress(message: string) { + process.stdout.write(progressMessage(chalk.cyan('i') + ' ' + message)); + }, + successProgress(message: string) { + process.stdout.write(progressMessage(chalk.green('✔') + ' ' + message)); + }, +}; + +const progressMessage = (message: string) => + `\r${message}`.padEnd((process.stdout.columns ?? 0) - 2, ' '); diff --git a/packages/cli/src/commands/default/promptInstall.ts b/packages/cli/src/commands/default/promptInstall.ts new file mode 100644 index 000000000..b9f6bd6f3 --- /dev/null +++ b/packages/cli/src/commands/default/promptInstall.ts @@ -0,0 +1,84 @@ +import { type PackageJSON } from 'bob-esbuild/config/packageJson'; +import { type GQtyConfig } from '../../config'; +import { inquirer } from '../../deps'; +import { + getUserPackageManager, + type PackageManager, +} from './getUserPackageManager'; + +export const promptInstall = async (configuration: GQtyConfig) => { + const packages = getInstallPackages(configuration); + const command = getUserPackageManager() ?? 'npm'; + const args = getInstallCommand(command).concat(packages); + + const { install } = await inquirer.prompt<{ install: boolean }>({ + type: 'confirm', + name: 'install', + message: `Do you want us to run "${command} ${args[0]}" for you?`, + default: true, + }); + + if (!install) return; + + const { spawnSync } = await import('child_process'); + + spawnSync(command, args, { stdio: 'inherit' }); +}; + +/** + * Install missing packages with the current package manager. + */ +export const runInstall = async ( + { dependencies, devDependencies }: PackageJSON, + configuration: GQtyConfig +) => { + const deps = new Set([ + ...Object.keys(dependencies ?? {}), + ...Object.keys(devDependencies ?? {}), + ]); + const pkgs = getInstallPackages(configuration).filter( + (pkg) => !deps.has(pkg) + ); + + if (pkgs.length === 0) return; + + const command = getUserPackageManager() ?? 'npm'; + const args = getInstallCommand(command).concat(pkgs); + const { spawnSync } = await import('child_process'); + + spawnSync(command, args, { stdio: 'inherit' }); +}; + +const getInstallCommand = (packager: PackageManager) => { + switch (packager) { + case 'npm': { + return ['install', '--save-dev']; + } + case 'pnpm': { + return ['add', '--save-dev']; + } + case 'yarn': { + return ['add', '--dev']; + } + } +}; + +const getInstallPackages = (configuration: GQtyConfig) => { + const packages = ['gqty']; + + if (configuration.react) { + packages.push('@gqty/react'); + } + + if (configuration.subscriptions === true) { + packages.push('graphql-ws'); + } else if (configuration.subscriptions) { + packages.push(configuration.subscriptions); + } + + if (!configuration.javascriptOutput) { + packages.push('typescript'); + } + + return packages; +}; diff --git a/packages/cli/src/commands/generate.ts b/packages/cli/src/commands/generate.ts new file mode 100644 index 000000000..22ebaad54 --- /dev/null +++ b/packages/cli/src/commands/generate.ts @@ -0,0 +1,38 @@ +import type { Command } from 'commander'; + +export const addCommand = (command: Command) => { + return command + .command('generate [endpoint] [destination]', { hidden: true }) + .option('--react', 'Create React client') + .description( + `Inspect or read from a file a GraphQL Schema and generate the gqty client in the specified directory (./src/generated/graphql.ts by default). +EXAMPLE 1: "gqty generate ./schema.gql --react" +EXAMPLE 2: "gqty generate http://localhost:3000/graphql src/gqty/index.ts" +EXAMPLE 3 (Configuration file): "gqty generate"` + ) + .action(async (endpoint, destination, opts) => { + const { defaultConfig } = await import('../config'); + const { inspectWriteGenerate } = await import('../inspectWriteGenerate'); + + let react; + if (opts.react != null) { + react = defaultConfig.react = + typeof opts.react === 'boolean' ? opts.react : !!opts.react; + } + + try { + await inspectWriteGenerate({ + endpoint, + destination, + cli: true, + generateOptions: { + react, + }, + }); + } catch (err) { + if (err instanceof Error) delete err.stack; + console.error(err); + process.exit(1); + } + }); +}; diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 1051785b8..fe32ef0b3 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -1,11 +1,11 @@ -import { promises } from 'fs'; -import { createRequire } from 'module'; -import { resolve } from 'path'; -import type { Loader } from './deps'; +import { promises } from 'node:fs'; +import { createRequire } from 'node:module'; +import { resolve } from 'node:path'; +import { type RequestInit } from 'undici'; import * as deps from './deps.js'; -import type { GenerateOptions } from './generate'; +import { type GenerateOptions } from './generate'; import { __innerState } from './innerState'; -import type { IntrospectionOptions } from './introspection'; +import { type IntrospectionOptions } from './introspection'; import { formatPrettier } from './prettier'; const cjsRequire = globalThis.require || createRequire(import.meta.url); @@ -13,8 +13,24 @@ const cjsRequire = globalThis.require || createRequire(import.meta.url); export type GQtyConfig = GenerateOptions & { /** * Introspection options + * + * @deprecated Use `introspectionOptions` instead */ introspection?: IntrospectionOptions; + /** + * Introspection options for multple endpoints. + * + * ```json + * { + * "https://example.com/graphql": { + * "headers": { + * "Authorization": "Bearer ..." + * } + * } + * } + * ``` + */ + introspectionOptions?: Record>; /** * Client generation destination */ @@ -33,11 +49,13 @@ function isStringRecord(v: unknown): v is Record { export const DUMMY_ENDPOINT = 'SPECIFY_ENDPOINT_OR_SCHEMA_FILE_PATH_HERE'; -export const defaultConfig: Omit< - Required, - 'endpoint' | 'transformSchema' -> & - Pick = { +export type SetRequired = Omit & + Required>; + +export const defaultConfig: SetRequired< + GQtyConfig, + Exclude +> = { react: (() => { try { cjsRequire.resolve('react'); @@ -184,6 +202,31 @@ export function getValidConfig(v: unknown): GQtyConfig { } break; } + case 'introspectionOptions': { + if (isPlainObject(value)) { + const introspectionOptions: GQtyConfig['introspectionOptions'] = {}; + + for (const [endpoint, httpExecutorOptions] of Object.entries( + value + )) { + if (isPlainObject(httpExecutorOptions)) { + introspectionOptions[endpoint] = httpExecutorOptions; + } else { + warnConfig( + `${key}.${endpoint}`, + httpExecutorOptions, + '"object of strings"', + {} + ); + } + } + + newConfig[key] = introspectionOptions; + } else { + warnConfig(key, value, 'object', defaultConfig[key]); + } + break; + } case 'transformSchema': { if (typeof value === 'function') { newConfig[key] = value as GQtyConfig['transformSchema']; @@ -212,84 +255,88 @@ export function getValidConfig(v: unknown): GQtyConfig { const defaultFilePath = resolve(process.cwd(), 'gqty.config.cjs'); -type DeepReadonly = T extends (infer R)[] - ? DeepReadonlyArray - : T extends Function - ? T - : T extends object - ? DeepReadonlyObject - : T; - -interface DeepReadonlyArray extends ReadonlyArray> {} - -type DeepReadonlyObject = { - readonly [P in keyof T]: DeepReadonly; -}; - const defaultGQtyConfig = { filepath: defaultFilePath, config: defaultConfig, }; -export const gqtyConfigPromise: Promise<{ +type GQtyConfigResult = { + config: GQtyConfig; filepath: string; - config: DeepReadonly; -}> = new Promise(async (resolve) => { - try { - const cjsLoader: Loader = (filePath) => { - return cjsRequire(filePath); - }; - const config = await deps - .cosmiconfig('gqty', { - searchPlaces: ['gqty.config.cjs', 'gqty.config.js', 'package.json'], - loaders: { - '.cjs': cjsLoader, - '.js': cjsLoader, - }, - }) - .search(); - - if (!config || config.isEmpty) { - const filepath = config?.filepath || defaultFilePath; - - const NODE_ENV = process.env['NODE_ENV']; - - if ( - NODE_ENV !== 'test' && - NODE_ENV !== 'production' && - __innerState.isCLI - ) { - const { format } = formatPrettier({ - parser: 'typescript', - }); + isEmpty?: boolean; +}; - const config: GQtyConfig = { ...defaultConfig }; - delete config.preImport; - delete config.enumsAsStrings; +let gqtyConfigPromise: Promise | undefined = undefined; - await promises.writeFile( - defaultFilePath, - await format(` - /** - * @type {import("@gqty/cli").GQtyConfig} - */ - const config = ${JSON.stringify(config)}; +export const loadOrGenerateConfig = async ({ + writeConfigFile = false, +}: { + writeConfigFile?: boolean; +} = {}): Promise => { + if (gqtyConfigPromise === undefined) { + gqtyConfigPromise = new Promise(async (resolve) => { + try { + const cjsLoader: deps.Loader = (filePath) => { + return cjsRequire(filePath); + }; + const config = await deps + .cosmiconfig('gqty', { + searchPlaces: ['gqty.config.cjs', 'gqty.config.js', 'package.json'], + loaders: { + '.cjs': cjsLoader, + '.js': cjsLoader, + }, + }) + .search(); - module.exports = config;`) - ); - } - return resolve({ - filepath, - config: defaultConfig, - }); - } + if (!config || config.isEmpty) { + const filepath = config?.filepath || defaultFilePath; + + const NODE_ENV = process.env['NODE_ENV']; + + if ( + NODE_ENV !== 'test' && + NODE_ENV !== 'production' && + __innerState.isCLI + ) { + const { format } = formatPrettier({ + parser: 'typescript', + }); + + const config: GQtyConfig = { ...defaultConfig }; + delete config.preImport; + delete config.enumsAsStrings; + + if (writeConfigFile) { + await promises.writeFile( + defaultFilePath, + await format(` + /** + * @type {import("@gqty/cli").GQtyConfig} + */ + const config = ${JSON.stringify(config)}; - resolve({ - config: getValidConfig(config.config), - filepath: config.filepath, + module.exports = config;`) + ); + } + } + + return resolve({ + filepath, + config: defaultConfig, + }); + } + + resolve({ + config: getValidConfig(config.config), + filepath: config.filepath, + }); + } catch (err) { + console.error(err); + resolve(defaultGQtyConfig); + } }); - } catch (err) { - console.error(err); - resolve(defaultGQtyConfig); } -}); + + return gqtyConfigPromise; +}; diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index e1cc52a44..4da722e7b 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -1,10 +1,19 @@ +import micromatch from 'micromatch'; + export { codegen } from '@graphql-codegen/core'; export * as typescriptPlugin from '@graphql-codegen/typescript'; +export { mergeSchemas } from '@graphql-tools/schema'; export { printSchemaWithDirectives } from '@graphql-tools/utils'; export { schemaFromExecutor, wrapSchema } from '@graphql-tools/wrap'; export { program } from 'commander'; -export { cosmiconfig, Loader } from 'cosmiconfig'; +export { cosmiconfig, type Loader } from 'cosmiconfig'; export { default as fg } from 'fast-glob'; +export { default as inquirer } from 'inquirer'; export { default as sortBy } from 'lodash-es/sortBy.js'; +export { default as throttle } from 'lodash-es/throttle.js'; export { default as mkdirp } from 'mkdirp'; -export { default as prettier, Options as PrettierOptions } from 'prettier'; +export { default as ms } from 'ms'; +export { default as prettier, type Options as PrettierOptions } from 'prettier'; +export { FasterSMA as SMA } from 'trading-signals'; +export { fetch } from 'undici'; +export { micromatch }; diff --git a/packages/cli/src/envelop.ts b/packages/cli/src/envelop.ts index 9345b3ed0..116a1ea1d 100644 --- a/packages/cli/src/envelop.ts +++ b/packages/cli/src/envelop.ts @@ -1,6 +1,6 @@ import type { GraphQLSchema } from 'graphql'; import PLazy from 'p-lazy'; -import type { defaultConfig, gqtyConfigPromise } from './config'; +import type { defaultConfig, loadOrGenerateConfig } from './config'; import type { GenerateOptions, TransformSchemaOptions } from './generate'; import type { OnExistingFileConflict, writeGenerate } from './writeGenerate'; @@ -30,12 +30,12 @@ export function useGenerateGQty(config?: UseGenerateGQtyOptions): { } { const pluginDeps = new PLazy<{ writeGenerate: typeof writeGenerate; - gqtyConfig: Awaited['config']; + gqtyConfig: Awaited>['config']; defaultConfig: typeof defaultConfig; }>((resolve, reject) => { return Promise.all([ import('./writeGenerate'), - import('./config').then((v) => v.gqtyConfigPromise), + import('./config').then((v) => v.loadOrGenerateConfig()), import('./config'), ]) .then( diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index cab17f6f2..350fc1c33 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -5,7 +5,7 @@ import { ScalarsEnumsHash, Schema, SchemaUnionsKey, - Type + Type, } from 'gqty'; import type { GraphQLEnumType, @@ -15,10 +15,10 @@ import type { GraphQLObjectType, GraphQLScalarType, GraphQLSchema, - GraphQLUnionType + GraphQLUnionType, } from 'graphql'; import * as graphql from 'graphql'; -import { defaultConfig, gqtyConfigPromise } from './config'; +import { defaultConfig, type GQtyConfig } from './config'; import * as deps from './deps.js'; import { formatPrettier } from './prettier'; @@ -73,10 +73,10 @@ export interface GenerateOptions { */ enumsAsConst?: boolean; /** - * Generate subscriptions client + * Generate subscriptions client with target package * @default false */ - subscriptions?: boolean; + subscriptions?: boolean | string; /** * Generate Javascript code instead of TypeScript * @@ -103,16 +103,17 @@ export interface TransformSchemaOptions { export async function generate( schema: GraphQLSchema, { - preImport, - scalarTypes, - react, endpoint, - enumsAsStrings, enumsAsConst, - subscriptions, + enumsAsStrings, + introspection, javascriptOutput, + preImport, + react, + scalarTypes, + subscriptions, transformSchema, - }: GenerateOptions = {}, + }: GQtyConfig = {}, { ignoreArgs }: TransformSchemaOptions = {} ): Promise<{ clientCode: string; @@ -122,45 +123,39 @@ export async function generate( scalarsEnumsHash: ScalarsEnumsHash; isJavascriptOutput: boolean; }> { - const gqtyConfig = (await gqtyConfigPromise).config; - - const isJavascriptOutput = - javascriptOutput ?? - gqtyConfig.javascriptOutput ?? - defaultConfig.javascriptOutput; + const isJavascriptOutput = javascriptOutput ?? defaultConfig.javascriptOutput; if (isJavascriptOutput) { - if (gqtyConfig.enumsAsStrings) { + if (enumsAsStrings) { console.warn( `"enumsAsStrings" is automatically set as "true" with "javascriptOutput" enabled.` ); } enumsAsStrings = true; } else { - enumsAsStrings ??= gqtyConfig.enumsAsStrings ?? false; + enumsAsStrings ??= false; } if (isJavascriptOutput) { - if (gqtyConfig.enumsAsConst) { + if (enumsAsConst) { console.warn( `"enumsAsConst" is automatically set as "false" with "javascriptOutput" enabled.` ); } enumsAsConst = false; } - enumsAsConst ??= gqtyConfig.enumsAsConst ?? defaultConfig.enumsAsConst; + enumsAsConst ??= enumsAsConst ?? defaultConfig.enumsAsConst; - scalarTypes ||= gqtyConfig.scalarTypes || defaultConfig.scalarTypes; + scalarTypes ||= scalarTypes || defaultConfig.scalarTypes; endpoint ||= - gqtyConfig.endpoint || - gqtyConfig.introspection?.endpoint || + endpoint || + introspection?.endpoint || defaultConfig.endpoint || defaultConfig.introspection.endpoint; - react ??= gqtyConfig.react ?? defaultConfig.react; - preImport ??= gqtyConfig.preImport ?? defaultConfig.preImport; - subscriptions ??= gqtyConfig.subscriptions ?? defaultConfig.subscriptions; - transformSchema ??= gqtyConfig.transformSchema; + react ??= defaultConfig.react; + preImport ??= defaultConfig.preImport; + subscriptions ??= defaultConfig.subscriptions; const { format } = formatPrettier({ parser: 'typescript', @@ -913,20 +908,22 @@ export async function generate( * GQty: You can safely modify this file based on your needs. */ - ${react ? `import { createReactClient } from "@gqty/react"` : ''} - ${ + ${[ + react ? `import { createReactClient } from "@gqty/react";` : '', subscriptions - ? `import { createClient as createSubscriptionsClient } from "graphql-ws"` - : '' - } - ${isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";'} - import { createClient, Cache } from "gqty"; - ${ + ? `import { createClient as createSubscriptionsClient } from "${ + subscriptions === true ? 'graphql-ws' : subscriptions + }";` + : '', + isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";', + 'import { Cache, createClient } from "gqty";', isJavascriptOutput ? '' - : 'import type { GeneratedSchema } from "./schema.generated";' - } - import { generatedSchema, scalarsEnumsHash } from "./schema.generated"; + : 'import type { GeneratedSchema } from "./schema.generated";', + 'import { generatedSchema, scalarsEnumsHash } from "./schema.generated";', + ] + .filter(Boolean) + .join('\n')} ${queryFetcher} @@ -963,8 +960,7 @@ export async function generate( isJavascriptOutput ? `${typeDoc( 'import("gqty").GQtyClient' - )} - export const client = createClient({ + )}export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, cache, diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index f048e317e..1343438eb 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,7 +1,7 @@ +export { defaultConfig, loadOrGenerateConfig } from './config'; +export type { GQtyConfig as gqtyConfig, GQtyConfig } from './config'; export * from './generate'; +export { __innerState } from './innerState'; export * from './inspectWriteGenerate'; export * from './introspection'; export * from './writeGenerate'; -export type { GQtyConfig as gqtyConfig, GQtyConfig } from './config'; -export { defaultConfig, gqtyConfigPromise } from './config'; -export { __innerState } from './innerState'; diff --git a/packages/cli/src/inspectWriteGenerate.ts b/packages/cli/src/inspectWriteGenerate.ts index 895842696..ec77adb8f 100644 --- a/packages/cli/src/inspectWriteGenerate.ts +++ b/packages/cli/src/inspectWriteGenerate.ts @@ -2,7 +2,7 @@ import { existsSync, promises } from 'fs'; import type { GraphQLSchema, IntrospectionQuery } from 'graphql'; import * as graphql from 'graphql'; import { extname, resolve } from 'path'; -import { defaultConfig, DUMMY_ENDPOINT, gqtyConfigPromise } from './config'; +import { defaultConfig, DUMMY_ENDPOINT, loadOrGenerateConfig } from './config'; import * as deps from './deps.js'; import type { GenerateOptions, TransformSchemaOptions } from './generate'; import { getRemoteSchema } from './introspection'; @@ -51,14 +51,16 @@ export async function inspectWriteGenerate({ defaultConfig.destination = destination; } + const { config, filepath } = await loadOrGenerateConfig({ + writeConfigFile: true, + }); + if (endpoint) { defaultConfig.introspection.endpoint = endpoint; } else if (existsSync(resolve('./schema.gql'))) { endpoint = './schema.gql'; defaultConfig.introspection.endpoint = endpoint; } else { - const { config, filepath } = await gqtyConfigPromise; - const configIntrospectionEndpoint = config.introspection && config.introspection.endpoint; @@ -80,14 +82,14 @@ export async function inspectWriteGenerate({ } if (!destination) { - const configDestination = (await gqtyConfigPromise).config.destination; + const configDestination = config.destination; destination = configDestination || defaultConfig.destination; } destination = resolve(destination); - const genOptions = Object.assign({}, generateOptions); + const genOptions = Object.assign({}, config, generateOptions); let schema: GraphQLSchema; @@ -175,10 +177,8 @@ export async function inspectWriteGenerate({ destination, genOptions, async (existingFile) => { - const subscriptions = - genOptions.subscriptions ?? - (await gqtyConfigPromise).config.subscriptions; - const react = genOptions.react ?? (await gqtyConfigPromise).config.react; + const subscriptions = genOptions.subscriptions ?? config.subscriptions; + const react = genOptions.react ?? config.react; const advice = `\nIf you meant to change this, please remove "${destination}" and re-run code generation.`; diff --git a/packages/cli/src/introspection.ts b/packages/cli/src/introspection.ts index 16b833f09..2d35d2495 100644 --- a/packages/cli/src/introspection.ts +++ b/packages/cli/src/introspection.ts @@ -1,7 +1,7 @@ import type { AsyncExecutor } from '@graphql-tools/utils'; import type { GraphQLSchema } from 'graphql'; import * as graphql from 'graphql'; -import { defaultConfig, gqtyConfigPromise } from './config'; +import { defaultConfig, loadOrGenerateConfig } from './config'; import * as deps from './deps.js'; export interface IntrospectionOptions { @@ -27,7 +27,7 @@ export const getRemoteSchema = async ( ): Promise => { const executor: AsyncExecutor = async ({ document, variables }) => { headers ||= - (await gqtyConfigPromise).config.introspection?.headers || + (await loadOrGenerateConfig()).config.introspection?.headers || defaultConfig.introspection.headers; const query = graphql.print(document); const { request } = await import('undici'); diff --git a/packages/cli/src/writeGenerate.ts b/packages/cli/src/writeGenerate.ts index beab70e0e..ec4263c21 100644 --- a/packages/cli/src/writeGenerate.ts +++ b/packages/cli/src/writeGenerate.ts @@ -1,12 +1,12 @@ import { existsSync, promises } from 'fs'; import type { GraphQLSchema } from 'graphql'; import { dirname, resolve } from 'path'; -import { defaultConfig, gqtyConfigPromise } from './config'; +import { defaultConfig, GQtyConfig } from './config'; import * as deps from './deps.js'; -import { generate, GenerateOptions, TransformSchemaOptions } from './generate'; +import { generate, TransformSchemaOptions } from './generate'; export type OnExistingFileConflict = - | ((existingFile: string) => void) + | ((existingFile: string) => void | Promise) | undefined; async function writeClientCode({ @@ -23,7 +23,7 @@ async function writeClientCode({ const existingFile = await promises.readFile(destinationPath, { encoding: 'utf-8', }); - onExistingFileConflict(existingFile); + await onExistingFileConflict(existingFile); } return; } @@ -93,14 +93,12 @@ async function writeSchemaCode({ export async function writeGenerate( schema: GraphQLSchema, destinationPath: string, - generateOptions: GenerateOptions = {}, + configuration: GQtyConfig, onExistingFileConflict?: OnExistingFileConflict, transformsGenerate?: TransformSchemaOptions ) { const isJavascriptOutput = - generateOptions.javascriptOutput ?? - (await gqtyConfigPromise).config.javascriptOutput ?? - defaultConfig.javascriptOutput; + configuration.javascriptOutput ?? defaultConfig.javascriptOutput; if (isJavascriptOutput) { if (!destinationPath.endsWith('.js')) { @@ -129,7 +127,7 @@ export async function writeGenerate( destinationPath = resolve(destinationPath); const [{ clientCode, schemaCode, javascriptSchemaCode }] = await Promise.all([ - generate(schema, generateOptions, transformsGenerate), + generate(schema, configuration, transformsGenerate), deps.mkdirp(dirname(destinationPath)), ]); diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index cbbbb3a16..37c8cc08a 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -128,7 +128,7 @@ test('basic functionality works', async () => { import { createReactClient } from '@gqty/react'; import { createClient as createSubscriptionsClient } from 'graphql-ws'; import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -322,9 +322,8 @@ test('custom scalars works', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1414,9 +1413,7 @@ test('javascript output works', async () => { import { createReactClient } from '@gqty/react'; import { createClient as createSubscriptionsClient } from 'graphql-ws'; - - import { createClient, Cache } from 'gqty'; - + import { Cache, createClient } from 'gqty'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; /** @@ -1475,7 +1472,6 @@ test('javascript output works', async () => { /** * @type {import("gqty").GQtyClient} */ - export const client = createClient({ schema: generatedSchema, scalars: scalarsEnumsHash, @@ -1760,9 +1756,8 @@ test('ignoreArgs transform', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index cac5fea6d..5581a8e3e 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -59,9 +59,8 @@ test('basic inspectWriteGenerate functionality', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -284,9 +283,8 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -508,9 +506,8 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -731,9 +728,8 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -998,9 +994,8 @@ describe('from multiple files', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1281,9 +1276,8 @@ test('specify generateOptions to inspectWriteGenerate', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -1653,9 +1647,8 @@ describe('CLI behavior', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; diff --git a/packages/cli/test/utils.ts b/packages/cli/test/utils.ts index b84e1a94b..568c1ddf8 100644 --- a/packages/cli/test/utils.ts +++ b/packages/cli/test/utils.ts @@ -1,7 +1,7 @@ -import { gqtyConfigPromise } from '../src/config'; import fs from 'fs'; import { resolve } from 'path'; import tmp from 'tmp-promise'; +import { loadOrGenerateConfig } from '../src/config'; export async function getTempDir({ initClientFile, @@ -33,5 +33,5 @@ export async function getTempDir({ } afterAll(async () => { - await gqtyConfigPromise; + await loadOrGenerateConfig({ writeConfigFile: true }); }); diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 87c137672..97b24d6a0 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -1,6 +1,7 @@ import fs from 'fs'; import path from 'path'; import { createTestApp, gql } from 'test-utils'; +import { loadOrGenerateConfig } from '../src/config'; import { writeGenerate } from '../src/writeGenerate'; import { getTempDir } from './utils'; @@ -241,9 +242,8 @@ test('creates dir, generates code and writes new file', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { createClient, Cache } from 'gqty'; + import { Cache, createClient } from 'gqty'; import type { GeneratedSchema } from './schema.generated'; import { generatedSchema, scalarsEnumsHash } from './schema.generated'; @@ -366,9 +366,11 @@ test('generates code and writes existing file', async () => { try { try { + const { config } = await loadOrGenerateConfig(); await writeGenerate( (await testAppPromise).getEnveloped().schema, - tempDir.clientPath + tempDir.clientPath, + config ); throw Error("shouldn't react"); diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index 1cc45dd94..c4080b0e1 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -3,14 +3,14 @@ import PLazy from 'p-lazy'; import { createTestApp, gql, TestApp } from 'test-utils'; import type { PartialDeep } from 'type-fest'; import { WebSocket } from 'ws'; -import { gqtyConfigPromise } from '../../cli/src/config'; +import { loadOrGenerateConfig } from '../../cli/src/config'; import { generate } from '../../cli/src/generate'; import { Cache, QueryFetcher, Schema, SchemaUnionsKey } from '../src'; import { ClientOptions, createClient as createGQtyClient } from '../src/Client'; import { deepAssign } from '../src/Utils'; afterAll(async () => { - await gqtyConfigPromise; + await loadOrGenerateConfig({ writeConfigFile: true }); }); export type Maybe = T | null; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d214e623..93258d323 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,7 +3,6 @@ lockfileVersion: '6.0' overrides: trim@<0.0.3: '>=0.0.3' glob-parent@<5.1.2: '>=5.1.2' - undici: 5.7.0 mermaid@<8.13.8: '>=8.13.8' '@braintree/sanitize-url@<6.0.0': '>=6.0.0' dset@<3.1.2: '>=3.1.2' @@ -526,15 +525,6 @@ importers: gqty: specifier: workspace:^3.0.0-alpha.0 version: link:../gqty/dist - graphql: - specifier: ^16.0.0 - version: 16.6.0 - p-lazy: - specifier: ^3.1.0 - version: 3.1.0 - undici: - specifier: 5.7.0 - version: 5.7.0 devDependencies: '@graphql-codegen/core': specifier: ^3.1.0 @@ -545,6 +535,9 @@ importers: '@graphql-tools/delegate': specifier: ^9.0.25 version: 9.0.28(graphql@16.6.0) + '@graphql-tools/schema': + specifier: ^9.0.17 + version: 9.0.17(graphql@16.6.0) '@graphql-tools/utils': specifier: ^9.2.0 version: 9.2.1(graphql@16.6.0) @@ -554,9 +547,15 @@ importers: '@size-limit/preset-small-lib': specifier: ^8.2.4 version: 8.2.4(size-limit@8.2.4) + '@types/inquirer': + specifier: ^8.2.6 + version: 8.2.6 '@types/lodash-es': specifier: ^4.14.191 version: 4.17.7 + '@types/micromatch': + specifier: ^4.0.2 + version: 4.0.2 '@types/mkdirp': specifier: ^1.0.2 version: 1.0.2 @@ -569,6 +568,9 @@ importers: bob-tsm: specifier: ^1.1.2 version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + chalk: + specifier: ^5.2.0 + version: 5.2.0 changesets-github-release: specifier: ^0.1.0 version: 0.1.0 @@ -584,15 +586,30 @@ importers: fast-glob: specifier: ^3.2.12 version: 3.2.12 + graphql: + specifier: ^16.0.0 + version: 16.6.0 + inquirer: + specifier: ^8.2.5 + version: 8.2.5 lodash-es: specifier: ^4.17.21 version: 4.17.21 + micromatch: + specifier: ^4.0.5 + version: 4.0.5 mkdirp: specifier: ^2.1.5 version: 2.1.5 + ms: + specifier: ^2.1.3 + version: 2.1.3 open-cli: specifier: ^7.2.0 version: 7.2.0 + p-lazy: + specifier: ^3.1.0 + version: 3.1.0 prettier: specifier: ^2.8.6 version: 2.8.6 @@ -611,12 +628,18 @@ importers: tmp-promise: specifier: ^3.0.3 version: 3.0.3 + trading-signals: + specifier: ^3.7.0 + version: 3.7.0 tslib: specifier: ^2.5.0 version: 2.5.0 typescript: specifier: ^4.9.5 version: 4.9.5 + undici: + specifier: ^5.21.0 + version: 5.21.0 wait-on: specifier: ^7.0.1 version: 7.0.1 @@ -3956,7 +3979,7 @@ packages: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-tools/schema': 9.0.14(graphql@16.6.0) + '@graphql-tools/schema': 9.0.17(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.4.1 @@ -3968,7 +3991,7 @@ packages: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) - '@graphql-tools/schema': 9.0.16(graphql@16.6.0) + '@graphql-tools/schema': 9.0.17(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 @@ -4181,7 +4204,7 @@ packages: '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 graphql: 16.6.0 - undici: 5.7.0 + undici: 5.21.0 dev: false /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): @@ -4402,7 +4425,7 @@ packages: dependencies: '@graphql-tools/batch-execute': 8.5.18(graphql@16.6.0) '@graphql-tools/executor': 0.0.15(graphql@16.6.0) - '@graphql-tools/schema': 9.0.16(graphql@16.6.0) + '@graphql-tools/schema': 9.0.17(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) dataloader: 2.2.2 graphql: 16.6.0 @@ -4469,25 +4492,24 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/merge@8.3.16(graphql@16.6.0): - resolution: {integrity: sha512-In0kcOZcPIpYOKaqdrJ3thdLPE7TutFnL9tbrHUy2zCinR2O/blpRC48jPckcs0HHrUQ0pGT4HqvzMkZUeEBAw==} + /@graphql-tools/merge@8.3.18(graphql@16.6.0): + resolution: {integrity: sha512-R8nBglvRWPAyLpZL/f3lxsY7wjnAeE0l056zHhcO/CgpvK76KYUt9oEkR05i8Hmt8DLRycBN0FiotJ0yDQWTVA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.1.4(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: false + dev: true - /@graphql-tools/merge@8.3.18(graphql@16.6.0): - resolution: {integrity: sha512-R8nBglvRWPAyLpZL/f3lxsY7wjnAeE0l056zHhcO/CgpvK76KYUt9oEkR05i8Hmt8DLRycBN0FiotJ0yDQWTVA==} + /@graphql-tools/merge@8.4.0(graphql@16.6.0): + resolution: {integrity: sha512-3XYCWe0d3I4F1azNj1CdShlbHfTIfiDgj00R9uvFH8tHKh7i1IWN3F7QQYovcHKhayaR6zPok3YYMESYQcBoaA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: true /@graphql-tools/optimize@1.3.1(graphql@16.6.0): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} @@ -4522,29 +4544,28 @@ packages: value-or-promise: 1.0.11 dev: false - /@graphql-tools/schema@9.0.14(graphql@16.6.0): - resolution: {integrity: sha512-U6k+HY3Git+dsOEhq+dtWQwYg2CAgue8qBvnBXoKu5eEeH284wymMUoNm0e4IycOgMCJANVhClGEBIkLRu3FQQ==} + /@graphql-tools/schema@9.0.16(graphql@16.6.0): + resolution: {integrity: sha512-kF+tbYPPf/6K2aHG3e1SWIbapDLQaqnIHVRG6ow3onkFoowwtKszvUyOASL6Krcv2x9bIMvd1UkvRf9OaoROQQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.3.16(graphql@16.6.0) - '@graphql-tools/utils': 9.1.4(graphql@16.6.0) + '@graphql-tools/merge': 8.3.18(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: false + dev: true - /@graphql-tools/schema@9.0.16(graphql@16.6.0): - resolution: {integrity: sha512-kF+tbYPPf/6K2aHG3e1SWIbapDLQaqnIHVRG6ow3onkFoowwtKszvUyOASL6Krcv2x9bIMvd1UkvRf9OaoROQQ==} + /@graphql-tools/schema@9.0.17(graphql@16.6.0): + resolution: {integrity: sha512-HVLq0ecbkuXhJlpZ50IHP5nlISqH2GbNgjBJhhRzHeXhfwlUOT4ISXGquWTmuq61K0xSaO0aCjMpxe4QYbKTng==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.3.18(graphql@16.6.0) + '@graphql-tools/merge': 8.4.0(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} @@ -4713,7 +4734,7 @@ packages: remark-emoji: 3.0.2 shiki: 0.10.1 tiny-lru: 8.0.2 - undici: 5.7.0 + undici: 5.0.0 transitivePeerDependencies: - '@chakra-ui/react' - '@mdx-js/react' @@ -5864,12 +5885,20 @@ packages: dependencies: '@babel/types': 7.21.4 + /@types/big.js@6.1.6: + resolution: {integrity: sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA==} + dev: true + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 '@types/node': 18.15.5 + /@types/braces@3.0.1: + resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} + dev: true + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: @@ -5959,6 +5988,13 @@ packages: /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} + /@types/inquirer@8.2.6: + resolution: {integrity: sha512-3uT88kxg8lNzY8ay2ZjP44DKcRaTGztqeIvN2zHvhzIBH/uAPaL75aBtdNRKbA7xXoMbBt5kX0M00VKAnfOYlA==} + dependencies: + '@types/through': 0.0.30 + rxjs: 7.8.0 + dev: true + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: @@ -6055,6 +6091,12 @@ packages: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: false + /@types/micromatch@4.0.2: + resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} + dependencies: + '@types/braces': 3.0.1 + dev: true + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} @@ -6156,6 +6198,12 @@ packages: '@types/jest': 29.5.0 dev: true + /@types/through@0.0.30: + resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} + dependencies: + '@types/node': 18.15.5 + dev: true + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true @@ -6856,7 +6904,6 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} @@ -6870,10 +6917,22 @@ packages: engines: {node: '>=0.6'} dev: true + /big.js@6.2.1: + resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} + dev: true + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -6991,7 +7050,7 @@ packages: string-width: 5.1.2 type-fest: 2.19.0 widest-line: 4.0.1 - wrap-ansi: 8.0.1 + wrap-ansi: 8.1.0 dev: true /bplist-parser@0.2.0: @@ -7049,6 +7108,13 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -7082,7 +7148,6 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 - dev: false /bytes-iec@3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} @@ -7306,6 +7371,23 @@ packages: engines: {node: '>=10'} dev: true + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7620,7 +7702,7 @@ packages: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.6.7 - undici: 5.7.0 + undici: 5.5.1 web-streams-polyfill: 3.2.1 transitivePeerDependencies: - encoding @@ -9147,6 +9229,13 @@ packages: web-streams-polyfill: 3.2.1 dev: true + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -9983,6 +10072,27 @@ packages: css-in-js-utils: 2.0.1 dev: false + /inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} @@ -10150,6 +10260,11 @@ packages: is-docker: 3.0.0 dev: true + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: @@ -10276,6 +10391,11 @@ packages: dependencies: unc-path-regex: 0.1.2 + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: @@ -11097,6 +11217,14 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false @@ -11919,6 +12047,10 @@ packages: minimatch: 3.1.2 dev: true + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} peerDependencies: @@ -12314,6 +12446,21 @@ packages: word-wrap: 1.2.3 dev: true + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.7.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -12343,7 +12490,6 @@ packages: /p-lazy@3.1.0: resolution: {integrity: sha512-sCJn0Cdahs6G6SX9+DUihVFUhrzDEduzE5xeViVBGtoqy5dBWko7W8T6Kk6TjR2uevRXJO7CShfWrqdH5s3w3g==} engines: {node: '>=8'} - dev: false /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -13505,6 +13651,14 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} @@ -13573,6 +13727,11 @@ packages: execa: 5.1.1 dev: true + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -14055,7 +14214,6 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - dev: false /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} @@ -14476,6 +14634,14 @@ packages: punycode: 2.1.1 dev: true + /trading-signals@3.7.0: + resolution: {integrity: sha512-+32o/02mwZPUw0x9kLtxnmZn0+NeJVg6ljFjyav7XOHJo53eLgxEd5qHXW79erOzBkvWtN4ebGsqO1/Q7HynsQ==} + engines: {node: '>= 10.9', yarn: '>= 1'} + dependencies: + '@types/big.js': 6.1.6 + big.js: 6.2.1 + dev: true + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -14726,8 +14892,19 @@ packages: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} - /undici@5.7.0: - resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} + /undici@5.0.0: + resolution: {integrity: sha512-VhUpiZ3No1DOPPQVQnsDZyfcbTTcHdcgWej1PdFnSvOeJmOVDgiOHkunJmBLfmjt4CqgPQddPVjSWW0dsTs5Yg==} + engines: {node: '>=12.18'} + dev: false + + /undici@5.21.0: + resolution: {integrity: sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==} + engines: {node: '>=12.18'} + dependencies: + busboy: 1.6.0 + + /undici@5.5.1: + resolution: {integrity: sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==} engines: {node: '>=12.18'} dev: false @@ -15320,8 +15497,8 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.0.1: - resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} dependencies: ansi-styles: 6.2.1 diff --git a/tsconfig.json b/tsconfig.json index b417ee33a..0d19e199f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,8 +23,7 @@ "@gqty/cli": ["packages/cli/src/index.ts"], "@gqty/cli/*": ["packages/cli/src/*"], "test-utils": ["internal/test-utils/src/index.ts"] - }, - "importsNotUsedAsValues": "error" + } }, "include": ["packages", "internal"], "exclude": ["**/dist", "**/test", "**/website", "**/docs-website"] From 8d9f919368168c6b767599aae4d323ba3dc6aec6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 7 Apr 2023 20:35:04 +0800 Subject: [PATCH 037/122] feat: added examples/gnt --- examples/gnt/.eslintrc.json | 3 + examples/gnt/.gitignore | 35 + examples/gnt/.vscode/settings.json | 4 + examples/gnt/README.md | 7 + examples/gnt/app/Avatar.tsx | 31 + examples/gnt/app/Card.tsx | 13 + examples/gnt/app/MyComponent.tsx | 32 + examples/gnt/app/Skeleton.tsx | 11 + examples/gnt/app/SmallText.tsx | 33 + examples/gnt/app/Text.tsx | 32 + examples/gnt/app/api/hello/route.ts | 3 + examples/gnt/app/favicon.ico | Bin 0 -> 25931 bytes examples/gnt/app/globals.css | 27 + examples/gnt/app/layout.tsx | 18 + examples/gnt/app/page.tsx | 131 ++ examples/gnt/gqty/index.ts | 115 + examples/gnt/gqty/schema.generated.ts | 370 ++++ examples/gnt/next.config.js | 11 + examples/gnt/package.json | 28 + examples/gnt/postcss.config.js | 6 + examples/gnt/public/next.svg | 1 + examples/gnt/public/vercel.svg | 1 + examples/gnt/tailwind.config.js | 18 + examples/gnt/tsconfig.json | 28 + packages/react/package.json | 9 +- pnpm-lock.yaml | 2899 +++++++++++++------------ 26 files changed, 2529 insertions(+), 1337 deletions(-) create mode 100644 examples/gnt/.eslintrc.json create mode 100644 examples/gnt/.gitignore create mode 100644 examples/gnt/.vscode/settings.json create mode 100644 examples/gnt/README.md create mode 100644 examples/gnt/app/Avatar.tsx create mode 100644 examples/gnt/app/Card.tsx create mode 100644 examples/gnt/app/MyComponent.tsx create mode 100644 examples/gnt/app/Skeleton.tsx create mode 100644 examples/gnt/app/SmallText.tsx create mode 100644 examples/gnt/app/Text.tsx create mode 100644 examples/gnt/app/api/hello/route.ts create mode 100644 examples/gnt/app/favicon.ico create mode 100644 examples/gnt/app/globals.css create mode 100644 examples/gnt/app/layout.tsx create mode 100644 examples/gnt/app/page.tsx create mode 100644 examples/gnt/gqty/index.ts create mode 100644 examples/gnt/gqty/schema.generated.ts create mode 100644 examples/gnt/next.config.js create mode 100644 examples/gnt/package.json create mode 100644 examples/gnt/postcss.config.js create mode 100644 examples/gnt/public/next.svg create mode 100644 examples/gnt/public/vercel.svg create mode 100644 examples/gnt/tailwind.config.js create mode 100644 examples/gnt/tsconfig.json diff --git a/examples/gnt/.eslintrc.json b/examples/gnt/.eslintrc.json new file mode 100644 index 000000000..a2ceebebd --- /dev/null +++ b/examples/gnt/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["next/babel", "next/core-web-vitals"] +} diff --git a/examples/gnt/.gitignore b/examples/gnt/.gitignore new file mode 100644 index 000000000..8f322f0d8 --- /dev/null +++ b/examples/gnt/.gitignore @@ -0,0 +1,35 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/examples/gnt/.vscode/settings.json b/examples/gnt/.vscode/settings.json new file mode 100644 index 000000000..99438ebd2 --- /dev/null +++ b/examples/gnt/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "typescript.tsdk": "../../node_modules/.pnpm/typescript@4.9.5/node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/examples/gnt/README.md b/examples/gnt/README.md new file mode 100644 index 000000000..86b2e40e0 --- /dev/null +++ b/examples/gnt/README.md @@ -0,0 +1,7 @@ +# GQty Next.js Template (GNT) + +Created via `create-next-app` for Next v13 and React 18. + +This is a playground for experimenting edge cases and behavior for `@gqty/react`, it doesn't serves a purpose of an example on it's own. + +Future examples will be born from the results of this playground. diff --git a/examples/gnt/app/Avatar.tsx b/examples/gnt/app/Avatar.tsx new file mode 100644 index 000000000..6cbe445d0 --- /dev/null +++ b/examples/gnt/app/Avatar.tsx @@ -0,0 +1,31 @@ +import { Character, Maybe } from '@/gqty'; +import NextImage from 'next/image'; +import { type FunctionComponent } from 'react'; +import Skeleton from './Skeleton'; + +const avatarStyle = `inline-block rounded-full mr-3`; + +const Avatar: FunctionComponent<{ character?: Maybe }> = ({ + character, +}) => ( + + } + > + {character?.image && ( + + )} + +); + +export default Avatar; diff --git a/examples/gnt/app/Card.tsx b/examples/gnt/app/Card.tsx new file mode 100644 index 000000000..e49e2bf8a --- /dev/null +++ b/examples/gnt/app/Card.tsx @@ -0,0 +1,13 @@ +import { type FunctionComponent, type HTMLAttributes } from 'react'; + +const Card: FunctionComponent> = ({ + className, + ...props +}) => ( +
+); + +export default Card; diff --git a/examples/gnt/app/MyComponent.tsx b/examples/gnt/app/MyComponent.tsx new file mode 100644 index 000000000..f101275d0 --- /dev/null +++ b/examples/gnt/app/MyComponent.tsx @@ -0,0 +1,32 @@ +'use client'; + +import { useQuery } from '@/gqty'; +import { type FunctionComponent } from 'react'; +import Avatar from './Avatar'; +import Card from './Card'; +import SmallText from './SmallText'; +import Text from './Text'; + +export type Props = {}; + +const MyComponent: FunctionComponent = () => { + const query = useQuery(); + + return ( + <> + {query.characters()?.results?.map((character) => ( + + + +
+ {character?.name} + {character?.species} + {character?.origin?.name} +
+
+ ))} + + ); +}; + +export default MyComponent; diff --git a/examples/gnt/app/Skeleton.tsx b/examples/gnt/app/Skeleton.tsx new file mode 100644 index 000000000..700d52408 --- /dev/null +++ b/examples/gnt/app/Skeleton.tsx @@ -0,0 +1,11 @@ +import { FunctionComponent, ReactNode } from 'react'; + +export type Props = { + fallback?: ReactNode; +}; + +const Skeleton: FunctionComponent = ({ children, fallback }) => { + return <>{children ?? fallback}; +}; + +export default Skeleton; diff --git a/examples/gnt/app/SmallText.tsx b/examples/gnt/app/SmallText.tsx new file mode 100644 index 000000000..49af88a8e --- /dev/null +++ b/examples/gnt/app/SmallText.tsx @@ -0,0 +1,33 @@ +import { FunctionComponent } from 'react'; +import Skeleton from './Skeleton'; + +const SmallText: FunctionComponent<{ textLength?: number }> = ({ + textLength = 25, + children, +}) => ( +

+ +   + + } + > + {children} + +

+); + +export default SmallText; diff --git a/examples/gnt/app/Text.tsx b/examples/gnt/app/Text.tsx new file mode 100644 index 000000000..64b112502 --- /dev/null +++ b/examples/gnt/app/Text.tsx @@ -0,0 +1,32 @@ +import { FunctionComponent } from 'react'; +import Skeleton from './Skeleton'; + +const Text: FunctionComponent<{ textLength?: number }> = ({ + textLength = 25, + children, +}) => ( + +   + + } + > + {children} + +); + +export default Text; diff --git a/examples/gnt/app/api/hello/route.ts b/examples/gnt/app/api/hello/route.ts new file mode 100644 index 000000000..363792161 --- /dev/null +++ b/examples/gnt/app/api/hello/route.ts @@ -0,0 +1,3 @@ +export async function GET(request: Request) { + return new Response('Hello, Next.js!'); +} diff --git a/examples/gnt/app/favicon.ico b/examples/gnt/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/examples/gnt/app/globals.css b/examples/gnt/app/globals.css new file mode 100644 index 000000000..fd81e8858 --- /dev/null +++ b/examples/gnt/app/globals.css @@ -0,0 +1,27 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + --foreground-rgb: 0, 0, 0; + --background-start-rgb: 214, 219, 220; + --background-end-rgb: 255, 255, 255; +} + +@media (prefers-color-scheme: dark) { + :root { + --foreground-rgb: 255, 255, 255; + --background-start-rgb: 0, 0, 0; + --background-end-rgb: 0, 0, 0; + } +} + +body { + color: rgb(var(--foreground-rgb)); + background: linear-gradient( + to bottom, + transparent, + rgb(var(--background-end-rgb)) + ) + rgb(var(--background-start-rgb)); +} diff --git a/examples/gnt/app/layout.tsx b/examples/gnt/app/layout.tsx new file mode 100644 index 000000000..775a88b5d --- /dev/null +++ b/examples/gnt/app/layout.tsx @@ -0,0 +1,18 @@ +import './globals.css'; + +export const metadata = { + title: 'Create Next App', + description: 'Generated by create next app', +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + {children} + + ); +} diff --git a/examples/gnt/app/page.tsx b/examples/gnt/app/page.tsx new file mode 100644 index 000000000..a08175fbb --- /dev/null +++ b/examples/gnt/app/page.tsx @@ -0,0 +1,131 @@ +import { Inter } from 'next/font/google'; +import Image from 'next/image'; +import MyComponent from './MyComponent'; + +const inter = Inter({ subsets: ['latin'] }); + +export default function Home() { + return ( +
+ +
+ ); +} + +function _Home() { + return ( +
+ ); +} diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts new file mode 100644 index 000000000..397466478 --- /dev/null +++ b/examples/gnt/gqty/index.ts @@ -0,0 +1,115 @@ +/** + * GQty: You can safely modify this file based on your needs. + */ + +import { createReactClient } from '@gqty/react'; +import type { QueryFetcher } from 'gqty'; +import { Cache, createClient } from 'gqty'; +import type { GeneratedSchema } from './schema.generated'; +import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + +const queryFetcher: QueryFetcher = async function ( + { query, variables, operationName }, + fetchOptions +) { + // Modify "https://rickandmortyapi.com/graphql" if needed + const response = await fetch('https://rickandmortyapi.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query, + variables, + operationName, + }), + mode: 'cors', + ...fetchOptions, + }); + + const json = await response.json(); + + return json; +}; + +const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } +); + +export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions: { + fetcher: queryFetcher, + }, +}); + +// Core functions +const { resolve, subscribe, schema } = client; + +// Legacy functions +const { query, mutation, mutate, subscription, resolved, refetch, track } = + client; + +const reactClient = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, + + // Set this flag based on your needs + staleWhileRevalidate: false, + }, +}); + +const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, +} = reactClient; + +export { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, +}; + +export { + resolve, + subscribe, + schema, + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +}; +export * from './schema.generated'; diff --git a/examples/gnt/gqty/schema.generated.ts b/examples/gnt/gqty/schema.generated.ts new file mode 100644 index 000000000..ec868660f --- /dev/null +++ b/examples/gnt/gqty/schema.generated.ts @@ -0,0 +1,370 @@ +/** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ + +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; +}; +/** All built-in and custom scalars, mapped to their actual values */ +export interface Scalars { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** The `Upload` scalar type represents a file upload. */ + Upload: any; +} + +export enum CacheControlScope { + PRIVATE = 'PRIVATE', + PUBLIC = 'PUBLIC', +} + +export interface FilterCharacter { + gender?: InputMaybe; + name?: InputMaybe; + species?: InputMaybe; + status?: InputMaybe; + type?: InputMaybe; +} + +export interface FilterEpisode { + episode?: InputMaybe; + name?: InputMaybe; +} + +export interface FilterLocation { + dimension?: InputMaybe; + name?: InputMaybe; + type?: InputMaybe; +} + +export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { + Boolean: true, + CacheControlScope: true, + ID: true, + Int: true, + String: true, + Upload: true, +}; +export const generatedSchema = { + Character: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + episode: { __type: '[Episode]!' }, + gender: { __type: 'String' }, + id: { __type: 'ID' }, + image: { __type: 'String' }, + location: { __type: 'Location' }, + name: { __type: 'String' }, + origin: { __type: 'Location' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + Characters: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Character]' }, + }, + Episode: { + __typename: { __type: 'String!' }, + air_date: { __type: 'String' }, + characters: { __type: '[Character]!' }, + created: { __type: 'String' }, + episode: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + }, + Episodes: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Episode]' }, + }, + FilterCharacter: { + gender: { __type: 'String' }, + name: { __type: 'String' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + FilterEpisode: { episode: { __type: 'String' }, name: { __type: 'String' } }, + FilterLocation: { + dimension: { __type: 'String' }, + name: { __type: 'String' }, + type: { __type: 'String' }, + }, + Info: { + __typename: { __type: 'String!' }, + count: { __type: 'Int' }, + next: { __type: 'Int' }, + pages: { __type: 'Int' }, + prev: { __type: 'Int' }, + }, + Location: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + dimension: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + residents: { __type: '[Character]!' }, + type: { __type: 'String' }, + }, + Locations: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Location]' }, + }, + mutation: {}, + query: { + __typename: { __type: 'String!' }, + character: { __type: 'Character', __args: { id: 'ID!' } }, + characters: { + __type: 'Characters', + __args: { filter: 'FilterCharacter', page: 'Int' }, + }, + charactersByIds: { __type: '[Character]', __args: { ids: '[ID!]!' } }, + episode: { __type: 'Episode', __args: { id: 'ID!' } }, + episodes: { + __type: 'Episodes', + __args: { filter: 'FilterEpisode', page: 'Int' }, + }, + episodesByIds: { __type: '[Episode]', __args: { ids: '[ID!]!' } }, + location: { __type: 'Location', __args: { id: 'ID!' } }, + locations: { + __type: 'Locations', + __args: { filter: 'FilterLocation', page: 'Int' }, + }, + locationsByIds: { __type: '[Location]', __args: { ids: '[ID!]!' } }, + }, + subscription: {}, +} as const; + +export interface Character { + __typename?: 'Character'; + /** + * Time at which the character was created in the database. + */ + created?: Maybe; + /** + * Episodes in which this character appeared. + */ + episode: Array>; + /** + * The gender of the character ('Female', 'Male', 'Genderless' or 'unknown'). + */ + gender?: Maybe; + /** + * The id of the character. + */ + id?: Maybe; + /** + * Link to the character's image. + * All images are 300x300px and most are medium shots or portraits since they are intended to be used as avatars. + */ + image?: Maybe; + /** + * The character's last known location + */ + location?: Maybe; + /** + * The name of the character. + */ + name?: Maybe; + /** + * The character's origin location + */ + origin?: Maybe; + /** + * The species of the character. + */ + species?: Maybe; + /** + * The status of the character ('Alive', 'Dead' or 'unknown'). + */ + status?: Maybe; + /** + * The type or subspecies of the character. + */ + type?: Maybe; +} + +export interface Characters { + __typename?: 'Characters'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Episode { + __typename?: 'Episode'; + /** + * The air date of the episode. + */ + air_date?: Maybe; + /** + * List of characters who have been seen in the episode. + */ + characters: Array>; + /** + * Time at which the episode was created in the database. + */ + created?: Maybe; + /** + * The code of the episode. + */ + episode?: Maybe; + /** + * The id of the episode. + */ + id?: Maybe; + /** + * The name of the episode. + */ + name?: Maybe; +} + +export interface Episodes { + __typename?: 'Episodes'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Info { + __typename?: 'Info'; + /** + * The length of the response. + */ + count?: Maybe; + /** + * Number of the next page (if it exists) + */ + next?: Maybe; + /** + * The amount of pages. + */ + pages?: Maybe; + /** + * Number of the previous page (if it exists) + */ + prev?: Maybe; +} + +export interface Location { + __typename?: 'Location'; + /** + * Time at which the location was created in the database. + */ + created?: Maybe; + /** + * The dimension in which the location is located. + */ + dimension?: Maybe; + /** + * The id of the location. + */ + id?: Maybe; + /** + * The name of the location. + */ + name?: Maybe; + /** + * List of characters who have been last seen in the location. + */ + residents: Array>; + /** + * The type of the location. + */ + type?: Maybe; +} + +export interface Locations { + __typename?: 'Locations'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Mutation { + __typename?: 'Mutation'; +} + +export interface Query { + __typename?: 'Query'; + /** + * Get a specific character by ID + */ + character: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all characters + */ + characters: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of characters selected by ids + */ + charactersByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific episode by ID + */ + episode: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all episodes + */ + episodes: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of episodes selected by ids + */ + episodesByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific locations by ID + */ + location: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all locations + */ + locations: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of locations selected by ids + */ + locationsByIds: (args: { + ids: Array; + }) => Maybe>>; +} + +export interface Subscription { + __typename?: 'Subscription'; +} + +export interface GeneratedSchema { + query: Query; + mutation: Mutation; + subscription: Subscription; +} + +export type MakeNullable = { + [K in keyof T]: T[K] | undefined; +}; + +export interface ScalarsEnums extends MakeNullable { + CacheControlScope: CacheControlScope | undefined; +} diff --git a/examples/gnt/next.config.js b/examples/gnt/next.config.js new file mode 100644 index 000000000..ab2d427d0 --- /dev/null +++ b/examples/gnt/next.config.js @@ -0,0 +1,11 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + appDir: true, + }, + images: { + domains: ['rickandmortyapi.com'], + }, +}; + +module.exports = nextConfig; diff --git a/examples/gnt/package.json b/examples/gnt/package.json new file mode 100644 index 000000000..587b05ccf --- /dev/null +++ b/examples/gnt/package.json @@ -0,0 +1,28 @@ +{ + "name": "ngt", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@gqty/react": "workspace:3.0.0-alpha.0", + "@react-hookz/web": "^22.0.0", + "@types/node": "18.15.11", + "@types/react": "^17.0.53", + "@types/react-dom": "^18.0.11", + "autoprefixer": "10.4.14", + "eslint": "^8.35.0", + "eslint-config-next": "13.3.0", + "gqty": "workspace:3.0.0-alpha.0", + "next": "^13.3.0", + "postcss": "8.4.21", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwindcss": "3.3.1", + "typescript": "^4.9.5" + } +} diff --git a/examples/gnt/postcss.config.js b/examples/gnt/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/examples/gnt/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/examples/gnt/public/next.svg b/examples/gnt/public/next.svg new file mode 100644 index 000000000..5174b28c5 --- /dev/null +++ b/examples/gnt/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/gnt/public/vercel.svg b/examples/gnt/public/vercel.svg new file mode 100644 index 000000000..d2f842227 --- /dev/null +++ b/examples/gnt/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/examples/gnt/tailwind.config.js b/examples/gnt/tailwind.config.js new file mode 100644 index 000000000..0c544fe5e --- /dev/null +++ b/examples/gnt/tailwind.config.js @@ -0,0 +1,18 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './pages/**/*.{js,ts,jsx,tsx}', + './components/**/*.{js,ts,jsx,tsx}', + './app/**/*.{js,ts,jsx,tsx}', + ], + theme: { + extend: { + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': + 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', + }, + }, + }, + plugins: [], +}; diff --git a/examples/gnt/tsconfig.json b/examples/gnt/tsconfig.json new file mode 100644 index 000000000..e06a4454a --- /dev/null +++ b/examples/gnt/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/react/package.json b/packages/react/package.json index ab5ffe085..c976419c1 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -119,20 +119,15 @@ "graphql": "*", "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", - "react": ">=16.14.0" + "react": "^16.14.0 || ^17 || ^18", + "react-dom": "^16.14.0 || ^17 || ^18" }, "peerDependenciesMeta": { - "graphql": { - "optional": true - }, "graphql-sse": { "optional": true }, "graphql-ws": { "optional": true - }, - "react": { - "optional": true } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93258d323..a07d4c427 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,7 +39,7 @@ importers: version: 1.1.3 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 bob-esbuild: specifier: ^4.0.3 version: 4.0.3(esbuild@0.17.12)(typescript@4.9.5) @@ -48,7 +48,7 @@ importers: version: 4.0.0(bob-esbuild@4.0.3) bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@4.9.5) bob-tsm: specifier: ^1.1.2 version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) @@ -75,7 +75,7 @@ importers: version: 8.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) open: specifier: ^8.4.2 version: 8.4.2 @@ -96,7 +96,7 @@ importers: version: 29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) + version: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -127,7 +127,7 @@ importers: devDependencies: '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 esbuild: specifier: ^0.17.12 version: 0.17.12 @@ -136,7 +136,55 @@ importers: version: 4.0.2 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + + examples/gnt: + dependencies: + '@gqty/react': + specifier: workspace:3.0.0-alpha.0 + version: link:../../packages/react/dist + '@react-hookz/web': + specifier: ^22.0.0 + version: 22.0.0(react-dom@18.2.0)(react@18.2.0) + '@types/node': + specifier: 18.15.11 + version: 18.15.11 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + autoprefixer: + specifier: 10.4.14 + version: 10.4.14(postcss@8.4.21) + eslint: + specifier: ^8.35.0 + version: 8.35.0 + eslint-config-next: + specifier: 13.3.0 + version: 13.3.0(eslint@8.35.0)(typescript@4.9.5) + gqty: + specifier: workspace:3.0.0-alpha.0 + version: link:../../packages/gqty/dist + next: + specifier: ^13.3.0 + version: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0) + postcss: + specifier: 8.4.21 + version: 8.4.21 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + tailwindcss: + specifier: 3.3.1 + version: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) typescript: specifier: ^4.9.5 version: 4.9.5 @@ -172,25 +220,25 @@ importers: version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-altair': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.11.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-dataloader': specifier: ^0.8.0 version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-upload': specifier: ^0.8.0 - version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0) + version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0) '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) '@react-hookz/web': specifier: ^22.0.0 version: 22.0.0(react-dom@17.0.2)(react@17.0.2) @@ -214,7 +262,7 @@ importers: version: 16.6.0 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + version: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) graphql-upload: specifier: ^13.0.0 version: 13.0.0(graphql@16.6.0) @@ -260,7 +308,7 @@ importers: version: 4.14.191 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/react': specifier: ^17.0.53 version: 17.0.53 @@ -281,7 +329,7 @@ importers: version: 0.17.12 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -312,7 +360,7 @@ importers: devDependencies: '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/react': specifier: ^17.0.53 version: 17.0.53 @@ -330,22 +378,22 @@ importers: version: 4.9.5 vite: specifier: ^4.2.1 - version: 4.2.1(@types/node@18.15.5) + version: 4.2.1(@types/node@18.15.11) internal/test-utils: dependencies: '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/fastify-testing': specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@rollup/plugin-babel': specifier: ^6.0.3 version: 6.0.3(@babel/core@7.21.0) @@ -357,16 +405,16 @@ importers: version: 7.0.3 fastify: specifier: ^4.11.0 - version: 4.11.0 + version: 4.15.0 graphql: specifier: ^16.6.0 version: 16.6.0 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + version: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-watch-typeahead: specifier: ^2.2.2 version: 2.2.2(jest@29.5.0) @@ -385,13 +433,13 @@ importers: devDependencies: '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) '@jest/types': specifier: ^29.5.0 version: 29.5.0 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/randomstring': specifier: ^1.1.8 version: 1.1.8 @@ -400,7 +448,7 @@ importers: version: 4.0.0(bob-esbuild@4.0.3) bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@4.9.5) concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -418,13 +466,13 @@ importers: dependencies: '@chakra-ui/icons': specifier: ^1.1.7 - version: 1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2) + version: 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react': specifier: ^1.8.9 version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/theme-tools': specifier: ^1.3.6 - version: 1.3.6(@chakra-ui/system@2.5.2) + version: 1.3.6(@chakra-ui/system@1.12.1) '@chakra-ui/utils': specifier: ^1.10.4 version: 1.10.4 @@ -445,7 +493,7 @@ importers: version: 2.3.0(react@17.0.2) '@theguild/components': specifier: ^1.12.0 - version: 1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + version: 1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) csstype: specifier: ^3.1.1 version: 3.1.1 @@ -488,7 +536,7 @@ importers: version: 12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/react': specifier: ^17.0.53 version: 17.0.53 @@ -559,12 +607,15 @@ importers: '@types/mkdirp': specifier: ^1.0.2 version: 1.0.2 + '@types/ms': + specifier: ^0.7.31 + version: 0.7.31 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@4.9.5) bob-tsm: specifier: ^1.1.2 version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) @@ -686,7 +737,7 @@ importers: version: 1.0.2 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/object-hash': specifier: ^3.0.2 version: 3.0.2 @@ -725,7 +776,7 @@ importers: version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -778,7 +829,7 @@ importers: version: 8.2.4(size-limit@8.2.4) '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/prettier': specifier: ^2.7.2 version: 2.7.2 @@ -793,7 +844,7 @@ importers: version: link:../gqty/dist jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) size-limit: specifier: ^8.2.4 version: 8.2.4 @@ -846,7 +897,7 @@ importers: version: 4.17.7 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.15.11 '@types/react': specifier: ^17.0.53 version: 17.0.53 @@ -888,7 +939,7 @@ importers: version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-environment-jsdom: specifier: ^29.5.0 version: 29.5.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) @@ -935,7 +986,7 @@ importers: devDependencies: '@types/node': specifier: ^18.15.1 - version: 18.15.5 + version: 18.15.11 '@types/ws': specifier: ^8.5.4 version: 8.5.4 @@ -968,200 +1019,165 @@ packages: resolution: {integrity: sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==} dev: true - /@algolia/autocomplete-core@1.7.2: - resolution: {integrity: sha512-eclwUDC6qfApNnEfu1uWcL/rudQsn59tjEoUYZYE2JSXZrHLRjBUGMxiCoknobU2Pva8ejb0eRxpIYDtVVqdsw==} + /@algolia/autocomplete-core@1.8.3: + resolution: {integrity: sha512-DpNL4PZTes+6pg2ysJQzZZBQUvHSYP1q8IkiJA7UoNqFMf0pdq2bSIehuiMTxNegpMjSszaB7G+o5UgxavKhWA==} dependencies: - '@algolia/autocomplete-shared': 1.7.2 + '@algolia/autocomplete-shared': 1.8.3 dev: false - /@algolia/autocomplete-js@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): - resolution: {integrity: sha512-/x0r0510yEHtTt9+JIhWa9CIvS2s95n5eSyKrCXA6QF8DYKJV+LQpGCpHnO4gEHJFEe0itVdmws3DzOZrBGa9Q==} + /@algolia/autocomplete-js@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): + resolution: {integrity: sha512-h5v/qp8CwmCUOCaNkUa+vaybnIpIoJGEfwE2Ks/84KAqIHYCBgcylwn92PkIL3gbQCok2sc6JoSIlUo0eAgPsQ==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' + algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.15.0 + '@algolia/autocomplete-core': 1.8.3 + '@algolia/autocomplete-preset-algolia': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-shared': 1.8.3 + '@algolia/client-search': 4.17.0 + algoliasearch: 4.17.0 htm: 3.1.1 - preact: 10.11.2 - transitivePeerDependencies: - - algoliasearch + preact: 10.13.2 dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2)(search-insights@2.2.1): - resolution: {integrity: sha512-dyWJ3Hpn0vGy+Lxd6BZYUupIPB/j7ZA4uzmQ+ThRQF3fjQMpDk4/zNi8/hf0r0Ow9tXOQ7ALKJtHbxWIT/f/Uw==} + /@algolia/autocomplete-plugin-algolia-insights@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0)(search-insights@2.4.0): + resolution: {integrity: sha512-JmPfWXBHMfdBp0cNB3hBIlDgy3pKGWtQz6dhd+01x9UKqmrXJQlA33zTQ/JRlAhyx2CMFbfm4zT3CPNJxfo2pg==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-shared': 1.7.2 - search-insights: 2.2.1 + '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-shared': 1.8.3 + search-insights: 2.4.0 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-plugin-query-suggestions@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): - resolution: {integrity: sha512-lM1B4tsJP+5ePHqXl4kuanmclu8uppmknNTTzWfinjuNRY2WrypwfqrBaCIztbZZYAfs7s0qeC/XXhA4PPSqoA==} + /@algolia/autocomplete-plugin-query-suggestions@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): + resolution: {integrity: sha512-a309PAFgSRkip2McMEL0qOx9vuYB2TI4axbWqrHOSm96le10oAeLeRt9WrgSLtuMz9dbWBKS/yAAPUioLLwq/Q==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' algoliasearch: '>= 4.5.1 < 6' dependencies: - '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-preset-algolia': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.15.0 - algoliasearch: 4.14.2 + '@algolia/autocomplete-core': 1.8.3 + '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-preset-algolia': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-shared': 1.8.3 + '@algolia/client-search': 4.17.0 + algoliasearch: 4.17.0 dev: false - /@algolia/autocomplete-preset-algolia@1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2): - resolution: {integrity: sha512-+RYEG6B0QiGGfRb2G3MtPfyrl0dALF3cQNTWBzBX6p5o01vCCGTTinAm2UKG3tfc2CnOMAtnPLkzNZyJUpnVJw==} + /@algolia/autocomplete-preset-algolia@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): + resolution: {integrity: sha512-M5B9VZtMtBFS8KSIzv8m0gtwVYtFBBjCvr8boBi+orbQUqzdoj5f70CqhQxUtnNcFGizHUaShUDV571F33/m7g==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.7.2 - '@algolia/client-search': 4.15.0 - algoliasearch: 4.14.2 - dev: false - - /@algolia/autocomplete-shared@1.7.2: - resolution: {integrity: sha512-QCckjiC7xXHIUaIL3ektBtjJ0w7tTA3iqKcAE/Hjn1lZ5omp7i3Y4e09rAr9ZybqirL7AbxCLLq0Ra5DDPKeug==} - dev: false - - /@algolia/autocomplete-theme-classic@1.7.2: - resolution: {integrity: sha512-bUoT4wdScyAY4oZrk3zcaGwSKYJ11MGXNFIckWWN/Bd9xqoFu8/09Ujyw5WyzYZidHrs8D3FSTJi6sfHz5g3/Q==} - dev: false - - /@algolia/cache-browser-local-storage@4.14.2: - resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} - dependencies: - '@algolia/cache-common': 4.14.2 + '@algolia/autocomplete-shared': 1.8.3 + '@algolia/client-search': 4.17.0 + algoliasearch: 4.17.0 dev: false - /@algolia/cache-common@4.14.2: - resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} + /@algolia/autocomplete-shared@1.8.3: + resolution: {integrity: sha512-llwPEemKzVhOjL9AsoZPejkaTTAsCB/2HHBQapC8LgQ2E/ipD5M1kTT6oSJskSVO5zI0YbBOCxAigZhgpPJ3eA==} dev: false - /@algolia/cache-common@4.15.0: - resolution: {integrity: sha512-Me3PbI4QurAM+3D+htIE0l1xt6+bl/18SG6Wc7bPQEZAtN7DTGz22HqhKNyLF2lR/cOfpaH7umXZlZEhIHf7gQ==} + /@algolia/autocomplete-theme-classic@1.8.3: + resolution: {integrity: sha512-sZt8uyBp5bwPTbqM+2cn/T7/OX8y8neEEtX10wWBgD7gakacn3//VEIdD1/+Yu1TJ2frWoP+SwuEbloe/zsMDg==} dev: false - /@algolia/cache-in-memory@4.14.2: - resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} + /@algolia/cache-browser-local-storage@4.17.0: + resolution: {integrity: sha512-myRSRZDIMYB8uCkO+lb40YKiYHi0fjpWRtJpR/dgkaiBlSD0plRyB6lLOh1XIfmMcSeBOqDE7y9m8xZMrXYfyQ==} dependencies: - '@algolia/cache-common': 4.14.2 + '@algolia/cache-common': 4.17.0 dev: false - /@algolia/client-account@4.14.2: - resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} - dependencies: - '@algolia/client-common': 4.14.2 - '@algolia/client-search': 4.14.2 - '@algolia/transporter': 4.14.2 + /@algolia/cache-common@4.17.0: + resolution: {integrity: sha512-g8mXzkrcUBIPZaulAuqE7xyHhLAYAcF2xSch7d9dABheybaU3U91LjBX6eJTEB7XVhEsgK4Smi27vWtAJRhIKQ==} dev: false - /@algolia/client-analytics@4.14.2: - resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} + /@algolia/cache-in-memory@4.17.0: + resolution: {integrity: sha512-PT32ciC/xI8z919d0oknWVu3kMfTlhQn3MKxDln3pkn+yA7F7xrxSALysxquv+MhFfNAcrtQ/oVvQVBAQSHtdw==} dependencies: - '@algolia/client-common': 4.14.2 - '@algolia/client-search': 4.14.2 - '@algolia/requester-common': 4.14.2 - '@algolia/transporter': 4.14.2 + '@algolia/cache-common': 4.17.0 dev: false - /@algolia/client-common@4.14.2: - resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} + /@algolia/client-account@4.17.0: + resolution: {integrity: sha512-sSEHx9GA6m7wrlsSMNBGfyzlIfDT2fkz2u7jqfCCd6JEEwmxt8emGmxAU/0qBfbhRSuGvzojoLJlr83BSZAKjA==} dependencies: - '@algolia/requester-common': 4.14.2 - '@algolia/transporter': 4.14.2 + '@algolia/client-common': 4.17.0 + '@algolia/client-search': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false - /@algolia/client-common@4.15.0: - resolution: {integrity: sha512-PlsJMObZuYw4JlG5EhYv1PHDOv7n5mD5PzqFyoNfSOYaEPRZepa3W579ya29yOu3FZ0VGMNJmB7Q5v/+/fwvIw==} + /@algolia/client-analytics@4.17.0: + resolution: {integrity: sha512-84ooP8QA3mQ958hQ9wozk7hFUbAO+81CX1CjAuerxBqjKIInh1fOhXKTaku05O/GHBvcfExpPLIQuSuLYziBXQ==} dependencies: - '@algolia/requester-common': 4.15.0 - '@algolia/transporter': 4.15.0 + '@algolia/client-common': 4.17.0 + '@algolia/client-search': 4.17.0 + '@algolia/requester-common': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false - /@algolia/client-personalization@4.14.2: - resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} + /@algolia/client-common@4.17.0: + resolution: {integrity: sha512-jHMks0ZFicf8nRDn6ma8DNNsdwGgP/NKiAAL9z6rS7CymJ7L0+QqTJl3rYxRW7TmBhsUH40wqzmrG6aMIN/DrQ==} dependencies: - '@algolia/client-common': 4.14.2 - '@algolia/requester-common': 4.14.2 - '@algolia/transporter': 4.14.2 + '@algolia/requester-common': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false - /@algolia/client-search@4.14.2: - resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} + /@algolia/client-personalization@4.17.0: + resolution: {integrity: sha512-RMzN4dZLIta1YuwT7QC9o+OeGz2cU6eTOlGNE/6RcUBLOU3l9tkCOdln5dPE2jp8GZXPl2yk54b2nSs1+pAjqw==} dependencies: - '@algolia/client-common': 4.14.2 - '@algolia/requester-common': 4.14.2 - '@algolia/transporter': 4.14.2 + '@algolia/client-common': 4.17.0 + '@algolia/requester-common': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false - /@algolia/client-search@4.15.0: - resolution: {integrity: sha512-dTwZD4u53WdmexnMcoO2Qd/+YCP3ESXKOtD2MryQ1a9dHwB2Y3Qob0kyS1PG82idwM3enbznvscI9Sf4o9PUWQ==} + /@algolia/client-search@4.17.0: + resolution: {integrity: sha512-x4P2wKrrRIXszT8gb7eWsMHNNHAJs0wE7/uqbufm4tZenAp+hwU/hq5KVsY50v+PfwM0LcDwwn/1DroujsTFoA==} dependencies: - '@algolia/client-common': 4.15.0 - '@algolia/requester-common': 4.15.0 - '@algolia/transporter': 4.15.0 + '@algolia/client-common': 4.17.0 + '@algolia/requester-common': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common@4.14.2: - resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} - dev: false - - /@algolia/logger-common@4.15.0: - resolution: {integrity: sha512-D8OFwn/HpvQz66goIcjxOKsYBMuxiruxJ3cA/bnc0EiDvSA2P2z6bNQWgS5gbstuTZIJmbhr+53NyOxFkmMNAA==} + /@algolia/logger-common@4.17.0: + resolution: {integrity: sha512-DGuoZqpTmIKJFDeyAJ7M8E/LOenIjWiOsg1XJ1OqAU/eofp49JfqXxbfgctlVZVmDABIyOz8LqEoJ6ZP4DTyvw==} dev: false - /@algolia/logger-console@4.14.2: - resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} + /@algolia/logger-console@4.17.0: + resolution: {integrity: sha512-zMPvugQV/gbXUvWBCzihw6m7oxIKp48w37QBIUu/XqQQfxhjoOE9xyfJr1KldUt5FrYOKZJVsJaEjTsu+bIgQg==} dependencies: - '@algolia/logger-common': 4.14.2 + '@algolia/logger-common': 4.17.0 dev: false - /@algolia/requester-browser-xhr@4.14.2: - resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} + /@algolia/requester-browser-xhr@4.17.0: + resolution: {integrity: sha512-aSOX/smauyTkP21Pf52pJ1O2LmNFJ5iHRIzEeTh0mwBeADO4GdG94cAWDILFA9rNblq/nK3EDh3+UyHHjplZ1A==} dependencies: - '@algolia/requester-common': 4.14.2 - dev: false - - /@algolia/requester-common@4.14.2: - resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} - dev: false - - /@algolia/requester-common@4.15.0: - resolution: {integrity: sha512-w0UUzxElbo4hrKg4QP/jiXDNbIJuAthxdlkos9nS8KAPK2XI3R9BlUjLz/ZVs4F9TDGI0mhjrNHhZ12KXcoyhg==} + '@algolia/requester-common': 4.17.0 dev: false - /@algolia/requester-node-http@4.14.2: - resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} - dependencies: - '@algolia/requester-common': 4.14.2 + /@algolia/requester-common@4.17.0: + resolution: {integrity: sha512-XJjmWFEUlHu0ijvcHBoixuXfEoiRUdyzQM6YwTuB8usJNIgShua8ouFlRWF8iCeag0vZZiUm4S2WCVBPkdxFgg==} dev: false - /@algolia/transporter@4.14.2: - resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} + /@algolia/requester-node-http@4.17.0: + resolution: {integrity: sha512-bpb/wDA1aC6WxxM8v7TsFspB7yBN3nqCGs2H1OADolQR/hiAIjAxusbuMxVbRFOdaUvAIqioIIkWvZdpYNIn8w==} dependencies: - '@algolia/cache-common': 4.14.2 - '@algolia/logger-common': 4.14.2 - '@algolia/requester-common': 4.14.2 + '@algolia/requester-common': 4.17.0 dev: false - /@algolia/transporter@4.15.0: - resolution: {integrity: sha512-JoWR+ixG3EmA0UPntQFN/FV5TasYcYu93d5+oKzHFeZ6Z7rtW5Im9iy/Oh/ggk1AAN5fTdqKewtbBpdaYDbKsQ==} + /@algolia/transporter@4.17.0: + resolution: {integrity: sha512-6xL6H6fe+Fi0AEP3ziSgC+G04RK37iRb4uUUqVAH9WPYFI8g+LYFq6iv5HS8Cbuc5TTut+Bwj6G+dh/asdb9uA==} dependencies: - '@algolia/cache-common': 4.15.0 - '@algolia/logger-common': 4.15.0 - '@algolia/requester-common': 4.15.0 + '@algolia/cache-common': 4.17.0 + '@algolia/logger-common': 4.17.0 + '@algolia/requester-common': 4.17.0 dev: false /@ampproject/remapping@2.2.0: @@ -1349,13 +1365,6 @@ packages: dependencies: '@babel/types': 7.21.4 - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - dev: false - /@babel/helper-module-imports@7.21.4: resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} engines: {node: '>=6.9.0'} @@ -1773,15 +1782,6 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.0 - '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} @@ -2366,12 +2366,6 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} @@ -2414,8 +2408,8 @@ packages: /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@braintree/sanitize-url@6.0.1: - resolution: {integrity: sha512-zr9Qs9KFQiEvMWdZesjcmRJlUck5NR+eKGS1uyKk+oYTWwlYrsoPEi6VmG6/TzBD1hKCGEimrhTgGS6hvn/xIQ==} + /@braintree/sanitize-url@6.0.2: + resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} dev: false /@chakra-ui/accordion@1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): @@ -2458,10 +2452,6 @@ packages: '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false - /@chakra-ui/anatomy@2.1.2: - resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} - dev: false - /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: @@ -2551,15 +2541,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/color-mode@2.1.12(react@17.0.2): - resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@17.0.2) - react: 17.0.2 - dev: false - /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: @@ -2662,25 +2643,14 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/icon@2.0.5(@chakra-ui/system@2.5.2)(react@17.0.2): - resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - dependencies: - '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) - '@chakra-ui/utils': 1.10.4 - react: 17.0.2 - dev: false - - /@chakra-ui/icons@1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2): + /@chakra-ui/icons@1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' dependencies: - '@chakra-ui/icon': 2.0.5(@chakra-ui/system@2.5.2)(react@17.0.2) - '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false @@ -2806,10 +2776,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/object-utils@2.0.8: - resolution: {integrity: sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q==} - dev: false - /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: @@ -2920,14 +2886,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@17.0.2): - resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 17.0.2 - dev: false - /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: @@ -2937,15 +2895,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-utils@2.0.12(react@17.0.2): - resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/utils': 2.0.15 - react: 17.0.2 - dev: false - /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: @@ -3023,10 +2972,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/shared-utils@2.0.5: - resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} - dev: false - /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: @@ -3090,14 +3035,6 @@ packages: csstype: 3.0.9 dev: false - /@chakra-ui/styled-system@2.6.2: - resolution: {integrity: sha512-BRKL0KVkukyZmK61PTOnNS/2S+RPYEJHxumj/3HdniSWQlmymRB+8NALtXfrS1G10cbRBkIglPY7/0VLNNr3OA==} - dependencies: - '@chakra-ui/shared-utils': 2.0.5 - csstype: 3.1.1 - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: @@ -3129,25 +3066,6 @@ packages: react-fast-compare: 3.2.0 dev: false - /@chakra-ui/system@2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): - resolution: {integrity: sha512-nmQZi/YeI6u0UkUHIRcS/iJ71DZDjD3Yk90IGElkkQdGMR4dYKGV3RwBMNoIbpRUKZXDuqUGsXGSLERXwwiqzw==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - dependencies: - '@chakra-ui/color-mode': 2.1.12(react@17.0.2) - '@chakra-ui/object-utils': 2.0.8 - '@chakra-ui/react-utils': 2.0.12(react@17.0.2) - '@chakra-ui/styled-system': 2.6.2 - '@chakra-ui/theme-utils': 2.0.12 - '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - react: 17.0.2 - react-fast-compare: 3.2.0 - dev: false - /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: @@ -3208,36 +3126,6 @@ packages: '@ctrl/tinycolor': 3.4.1 dev: false - /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@2.5.2): - resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - dependencies: - '@chakra-ui/system': 2.5.2(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) - '@chakra-ui/utils': 1.10.4 - '@ctrl/tinycolor': 3.4.1 - dev: false - - /@chakra-ui/theme-tools@2.0.17(@chakra-ui/styled-system@2.6.2): - resolution: {integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.2 - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.6.2 - color2k: 2.0.2 - dev: false - - /@chakra-ui/theme-utils@2.0.12: - resolution: {integrity: sha512-mxjeQRicCCj07RY2UXRRonlR4RETBsORlOD24mIip6GfrS1N0jx2FYUCTF8rMuVSjWrDvxeiyl+BVs6e8Fqv3w==} - dependencies: - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.6.2 - '@chakra-ui/theme': 2.2.5(@chakra-ui/styled-system@2.6.2) - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: @@ -3249,17 +3137,6 @@ packages: '@chakra-ui/utils': 1.10.4 dev: false - /@chakra-ui/theme@2.2.5(@chakra-ui/styled-system@2.6.2): - resolution: {integrity: sha512-hYASZMwu0NqEv6PPydu+F3I+kMNd44yR4TwjR/lXBz/LEh64L6UPY6kQjebCfgdVtsGdl3HKg+eLlfa7SvfRgw==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.2 - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.6.2 - '@chakra-ui/theme-tools': 2.0.17(@chakra-ui/styled-system@2.6.2) - dev: false - /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: @@ -3321,15 +3198,6 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/utils@2.0.15: - resolution: {integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==} - dependencies: - '@types/lodash.mergewith': 4.6.7 - css-box-model: 1.2.1 - framesync: 6.1.2 - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: @@ -3344,7 +3212,7 @@ packages: /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -3362,7 +3230,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -3380,7 +3248,7 @@ packages: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -3446,7 +3314,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -3487,7 +3355,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3497,7 +3365,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -3518,7 +3386,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -3598,7 +3466,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -3634,7 +3502,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) @@ -3665,27 +3533,20 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@envelop/core@3.0.4: - resolution: {integrity: sha512-AybIZxQsDlFQTWHy6YtX/MSQPVuw+eOFtTW90JsHn6EbmcQnD6N3edQfSiTGjggPRHLoC0+0cuYXp2Ly2r3vrQ==} - dependencies: - '@envelop/types': 3.0.1 - tslib: 2.4.0 - /@envelop/core@3.0.6: resolution: {integrity: sha512-06t1xCPXq6QFN7W1JUEf68aCwYN0OUDNAIoJe7bAqhaoa2vn7NCcuX1VHkJ/OWpmElUgCsRO6RiBbIru1in0Ig==} dependencies: '@envelop/types': 3.0.2 tslib: 2.5.0 - dev: false - /@envelop/dataloader@4.0.4(@envelop/core@3.0.6)(dataloader@2.1.0): + /@envelop/dataloader@4.0.4(@envelop/core@3.0.6)(dataloader@2.2.2): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} peerDependencies: '@envelop/core': ^3.0.4 dataloader: ^2.0.0 dependencies: '@envelop/core': 3.0.6 - dataloader: 2.1.0 + dataloader: 2.2.2 tslib: 2.5.0 dev: false @@ -3700,16 +3561,10 @@ packages: tslib: 2.5.0 dev: false - /@envelop/types@3.0.1: - resolution: {integrity: sha512-Ok62K1K+rlS+wQw77k8Pis8+1/h7+/9Wk5Fgcc2U6M5haEWsLFAHcHsk8rYlnJdEUl2Y3yJcCSOYbt1dyTaU5w==} - dependencies: - tslib: 2.5.0 - /@envelop/types@3.0.2: resolution: {integrity: sha512-pOFea9ha0EkURWxJ/35axoH9fDGP5S2cUu/5Mmo9pb8zUf+TaEot8vB670XXihFEn/92759BMjLJNWBKmNhyng==} dependencies: tslib: 2.5.0 - dev: false /@esbuild/android-arm64@0.17.12: resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} @@ -3902,26 +3757,16 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true /@eslint/js@8.35.0: resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@faker-js/faker@7.6.0: resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} dev: false - /@fastify/ajv-compiler@3.4.0: - resolution: {integrity: sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w==} - dependencies: - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) - fast-uri: 2.1.0 - dev: false - /@fastify/ajv-compiler@3.5.0: resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} dependencies: @@ -3944,12 +3789,6 @@ packages: /@fastify/error@3.0.0: resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} - /@fastify/fast-json-stringify-compiler@4.1.0: - resolution: {integrity: sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==} - dependencies: - fast-json-stringify: 5.4.0 - dev: false - /@fastify/fast-json-stringify-compiler@4.2.0: resolution: {integrity: sha512-ypZynRvXA3dibfPykQN3RB5wBdEUgSGgny8Qc6k163wYPLD4mEGEDkACp+00YmqkGvIm8D/xYoHajwyEdWD/eg==} dependencies: @@ -4191,7 +4030,7 @@ packages: - supports-color dev: true - /@graphql-ez/client@0.6.1(@types/node@18.15.5)(graphql@16.6.0): + /@graphql-ez/client@0.6.1(@types/node@18.15.11)(graphql@16.6.0): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -4201,13 +4040,13 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@types/node': 18.15.11 graphql: 16.6.0 undici: 5.21.0 dev: false - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -4215,40 +4054,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - fastify: 4.11.0 + '@graphql-ez/client': 0.6.1(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + fastify: 4.15.0 graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' dev: false - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): - resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} - engines: {node: '>=14.13.1'} - peerDependencies: - '@types/node': '*' - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - peerDependenciesMeta: - fastify: - optional: true - graphql: - optional: true - dependencies: - '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - dev: false - - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify@0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4263,32 +4080,32 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@types/node': 18.15.11 fastify: 4.15.0 graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) dev: false - /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} peerDependencies: '@types/node': '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@types/node': 18.15.11 altair-static-slim: 5.0.9 cross-undici-fetch: 0.4.14 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) mime-types: 2.1.35 transitivePeerDependencies: - encoding - graphql dev: false - /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-dv0nW2PAG4EqaFwLn0lmm45rPtQ7yqfP4ega3J3JPHM1qUCBNi/QBTk2X2V3k2bBLCyDzDtXiNNDKgu9ILKW0w==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4304,14 +4121,14 @@ packages: '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.6.0) '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.6.0) '@graphql-tools/load': 7.8.8(graphql@16.6.0) - '@graphql-tools/utils': 9.1.4(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) mkdirp: 1.0.4 - prettier: 2.8.3 + prettier: 2.8.6 transitivePeerDependencies: - '@types/node' - encoding @@ -4324,16 +4141,16 @@ packages: peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@envelop/dataloader': 4.0.4(@envelop/core@3.0.6)(dataloader@2.1.0) + '@envelop/dataloader': 4.0.4(@envelop/core@3.0.6)(dataloader@2.2.2) '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.6.0) - dataloader: 2.1.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + dataloader: 2.2.2 + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) transitivePeerDependencies: - '@envelop/core' - graphql dev: false - /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4343,16 +4160,16 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-tools/schema': 9.0.12(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-tools/schema': 9.0.17(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0): + /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0): resolution: {integrity: sha512-R/cE1vT5kZxWe4EpuwV15znWU+GSu4KsUIgdCUYcE897XO1O9+Iadn4K/RyPuRY3tv//6+7Bj5gKruJaFgmsbg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4366,16 +4183,16 @@ packages: graphql-upload: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) '@types/graphql-upload': 16.0.0 graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) graphql-upload: 13.0.0(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): + /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): resolution: {integrity: sha512-jtvw5o3rw3Y6JNFfl+CoybQWdzqy0ml+eHNelHEd1Jd1b/Jbsc9RsIyOHE6uRqOxQhsBi6/1HL+nJCUuW+/n9A==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4385,10 +4202,10 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/ws': 8.5.3 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@types/ws': 8.5.4 graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) graphql-ws: 5.11.3(graphql@16.6.0) subscriptions-transport-ws-envelop: 2.0.2(graphql@16.6.0)(ws@8.13.0) ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) @@ -4397,13 +4214,13 @@ packages: - bufferutil - utf-8-validate - /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@16.6.0): + /@graphql-ez/utils@0.2.0(@types/node@18.15.11)(graphql@16.6.0): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' graphql: '*' dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 graphql: 16.6.0 /@graphql-tools/batch-execute@8.5.18(graphql@16.6.0): @@ -4584,15 +4401,6 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/utils@9.1.4(graphql@16.6.0): - resolution: {integrity: sha512-hgIeLt95h9nQgQuzbbdhuZmh+8WV7RZ/6GbTj6t3IU4Zd2zs9yYJ2jgW/krO587GMOY8zCwrjNOMzD40u3l7Vg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.6.0 - tslib: 2.5.0 - dev: false - /@graphql-tools/utils@9.2.1(graphql@16.6.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: @@ -4653,18 +4461,18 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7(@chakra-ui/system@2.5.2)(react@17.0.2) + '@chakra-ui/icons': 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) '@mdx-js/react': 2.3.0(react@17.0.2) - '@theguild/components': 1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + '@theguild/components': 1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) immer: 9.0.12 - mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2)(unist-util-visit@2.0.3) - mermaid: 9.1.7 + mdx-mermaid: 1.3.2(mermaid@10.1.0)(react@17.0.2)(unist-util-visit@2.0.3) + mermaid: 10.1.0(react-dom@17.0.2)(react@17.0.2) next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) @@ -4750,7 +4558,7 @@ packages: next-i18next: '*' dependencies: '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@mdx-js/mdx': 2.1.5 + '@mdx-js/mdx': 2.3.0 '@types/react': 17.0.53 next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 @@ -4766,7 +4574,7 @@ packages: next-i18next: '*' dependencies: '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@mdx-js/mdx': 2.1.5 + '@mdx-js/mdx': 2.3.0 '@types/react': 17.0.53 next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 @@ -4793,16 +4601,13 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -4823,7 +4628,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -4843,14 +4648,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.7.1 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -4876,7 +4681,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-mock: 29.5.0 /@jest/expect-utils@29.5.0: @@ -4900,7 +4705,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -4931,7 +4736,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -5013,7 +4818,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.5 + '@types/node': 18.15.11 '@types/yargs': 17.0.13 chalk: 4.1.2 @@ -5055,10 +4860,21 @@ packages: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@khanacademy/simple-markdown@0.8.6(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-mAUlR9lchzfqunR89pFvNI51jQKsMpJeWYsYWw0DQcUXczn/T/V6510utgvm7X0N3zN87j1SvuKk8cMbl9IAFw==} + peerDependencies: + react: 16.14.0 + react-dom: 16.14.0 + dependencies: + '@types/react': 17.0.53 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -5067,7 +4883,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -5079,46 +4895,46 @@ packages: resolution: {integrity: sha512-SXC18cChut3F2zkVXwsb2no0fzTQ1z6swjK13XwFbF5QU/SFQM0orAItPypSdL3GvqYyzVJtz8UofzJhPEQtMw==} dependencies: '@types/estree-jsx': 0.0.1 - '@types/mdx': 2.0.3 - astring: 1.8.3 - estree-util-build-jsx: 2.2.0 - estree-util-is-identifier-name: 2.0.1 - estree-walker: 3.0.1 - hast-util-to-estree: 2.1.0 + '@types/mdx': 2.0.4 + astring: 1.8.4 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.2 markdown-extensions: 1.1.1 - periscopic: 3.0.4 - remark-mdx: 2.1.5 + periscopic: 3.1.0 + remark-mdx: 2.3.0 remark-parse: 10.0.1 remark-rehype: 10.1.0 unified: 10.1.2 - unist-util-position-from-estree: 1.1.1 - unist-util-stringify-position: 3.0.2 - unist-util-visit: 4.1.1 - vfile: 5.3.5 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.2 transitivePeerDependencies: - supports-color dev: false - /@mdx-js/mdx@2.1.5: - resolution: {integrity: sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==} + /@mdx-js/mdx@2.3.0: + resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} dependencies: '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.3 - estree-util-build-jsx: 2.2.0 - estree-util-is-identifier-name: 2.0.1 - estree-util-to-js: 1.1.0 - estree-walker: 3.0.1 - hast-util-to-estree: 2.1.0 + '@types/mdx': 2.0.4 + estree-util-build-jsx: 2.2.2 + estree-util-is-identifier-name: 2.1.0 + estree-util-to-js: 1.2.0 + estree-walker: 3.0.3 + hast-util-to-estree: 2.3.2 markdown-extensions: 1.1.1 - periscopic: 3.0.4 - remark-mdx: 2.1.5 + periscopic: 3.1.0 + remark-mdx: 2.3.0 remark-parse: 10.0.1 remark-rehype: 10.1.0 unified: 10.1.2 - unist-util-position-from-estree: 1.1.1 - unist-util-stringify-position: 3.0.2 - unist-util-visit: 4.1.1 - vfile: 5.3.5 + unist-util-position-from-estree: 1.1.2 + unist-util-stringify-position: 3.0.3 + unist-util-visit: 4.1.2 + vfile: 5.3.7 transitivePeerDependencies: - supports-color dev: false @@ -5128,7 +4944,7 @@ packages: peerDependencies: react: '>=16' dependencies: - '@types/mdx': 2.0.3 + '@types/mdx': 2.0.4 '@types/react': 17.0.53 react: 17.0.2 dev: false @@ -5192,6 +5008,16 @@ packages: /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} + /@next/env@13.3.0: + resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==} + dev: false + + /@next/eslint-plugin-next@13.3.0: + resolution: {integrity: sha512-wuGN5qSEjSgcq9fVkH0Y/qIPFjnZtW3ZPwfjJOn7l/rrf6y8J24h/lo61kwqunTyzZJm/ETGfGVU9PUs8cnzEA==} + dependencies: + glob: 7.1.7 + dev: false + /@next/swc-android-arm-eabi@12.3.4: resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} @@ -5216,6 +5042,15 @@ packages: requiresBuild: true optional: true + /@next/swc-darwin-arm64@13.3.0: + resolution: {integrity: sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-darwin-x64@12.3.4: resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} @@ -5224,6 +5059,15 @@ packages: requiresBuild: true optional: true + /@next/swc-darwin-x64@13.3.0: + resolution: {integrity: sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@next/swc-freebsd-x64@12.3.4: resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} @@ -5248,6 +5092,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-arm64-gnu@13.3.0: + resolution: {integrity: sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-arm64-musl@12.3.4: resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} @@ -5256,6 +5109,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-arm64-musl@13.3.0: + resolution: {integrity: sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-gnu@12.3.4: resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} @@ -5264,6 +5126,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-x64-gnu@13.3.0: + resolution: {integrity: sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-linux-x64-musl@12.3.4: resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} @@ -5272,6 +5143,15 @@ packages: requiresBuild: true optional: true + /@next/swc-linux-x64-musl@13.3.0: + resolution: {integrity: sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@next/swc-win32-arm64-msvc@12.3.4: resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} @@ -5280,12 +5160,30 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@12.3.4: - resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} + /@next/swc-win32-arm64-msvc@13.3.0: + resolution: {integrity: sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==} engines: {node: '>= 10'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@12.3.4: + resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@next/swc-win32-ia32-msvc@13.3.0: + resolution: {integrity: sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false optional: true /@next/swc-win32-x64-msvc@12.3.4: @@ -5296,6 +5194,15 @@ packages: requiresBuild: true optional: true + /@next/swc-win32-x64-msvc@13.3.0: + resolution: {integrity: sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -5321,6 +5228,18 @@ packages: dependencies: graphql: 16.6.0 + /@pkgr/utils@2.3.1: + resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + is-glob: 4.0.3 + open: 8.4.2 + picocolors: 1.0.0 + tiny-glob: 0.2.9 + tslib: 2.5.0 + dev: false + /@pnpm/types@8.8.0: resolution: {integrity: sha512-IKUpbWRHDB9C4Yy4UeBpeYhU7eIsLj50jF5HNRUkbJnM0CWHPLxX9TGCI+ov8pgGeTP1t1g0GPDHD6en9D8LxQ==} engines: {node: '>=14.6'} @@ -5586,6 +5505,21 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false + /@react-hookz/web@22.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jl4JgUXaiSvvDVQD2z/rq2/RaykjjLrAZxHOEQj2H38j4UFWIVhv5oKUH8yrKF4wX6tMX9gdrj62f9yGq/nSaQ==} + peerDependencies: + js-cookie: ^3.0.1 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + dependencies: + '@react-hookz/deep-equal': 1.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true @@ -5604,7 +5538,7 @@ packages: optional: true dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.18.6 + '@babel/helper-module-imports': 7.21.4 '@rollup/pluginutils': 5.0.2 dev: false @@ -5630,6 +5564,10 @@ packages: picomatch: 2.3.1 dev: false + /@rushstack/eslint-patch@1.2.0: + resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + dev: false + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: @@ -5702,7 +5640,7 @@ packages: shiki: 0.10.1 shiki-renderer-hast: 1.1.5(shiki@0.10.1) unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 transitivePeerDependencies: - supports-color dev: false @@ -5717,7 +5655,7 @@ packages: parse-numeric-range: 1.3.0 shiki: 0.10.1 unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false /@swc/helpers@0.4.11: @@ -5725,6 +5663,12 @@ packages: dependencies: tslib: 2.5.0 + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.5.0 + dev: false + /@testing-library/dom@8.19.0: resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} engines: {node: '>=12'} @@ -5744,7 +5688,7 @@ packages: engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.0.1 - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.1.3 chalk: 3.0.0 @@ -5770,7 +5714,7 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@types/react': 17.0.53 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -5785,35 +5729,35 @@ packages: react: <18.0.0 react-dom: <18.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 '@testing-library/dom': 8.19.0 '@types/react-dom': 17.0.18 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) dev: true - /@theguild/components@1.12.0(@algolia/client-search@4.15.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): + /@theguild/components@1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} peerDependencies: react: ^17.0.2 react-dom: ^17.0.2 dependencies: - '@algolia/autocomplete-js': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2)(search-insights@2.2.1) - '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(@algolia/client-search@4.15.0)(algoliasearch@4.14.2) - '@algolia/autocomplete-theme-classic': 1.7.2 + '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0)(search-insights@2.4.0) + '@algolia/autocomplete-plugin-query-suggestions': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) + '@algolia/autocomplete-theme-classic': 1.8.3 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) '@radix-ui/react-navigation-menu': 0.1.2(react-dom@17.0.2)(react@17.0.2) - algoliasearch: 4.14.2 + algoliasearch: 4.17.0 focus-trap-react: 9.0.2(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) polished: 4.2.2 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - react-instantsearch-dom: 6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2) + react-instantsearch-dom: 6.17.0(algoliasearch@4.17.0)(react-dom@17.0.2)(react@17.0.2) react-paginate: 7.1.5(react@17.0.2) - react-player: 2.11.0(react@17.0.2) - search-insights: 2.2.1 + react-player: 2.12.0(react@17.0.2) + search-insights: 2.4.0 tinykeys: 1.4.0 twin.macro: 2.8.2(ts-node@10.9.1) use-debounce: 8.0.4(react@17.0.2) @@ -5848,7 +5792,7 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} @@ -5893,7 +5837,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/braces@3.0.1: resolution: {integrity: sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==} @@ -5902,7 +5846,7 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} @@ -5913,7 +5857,7 @@ packages: '@types/connect': 3.4.35 '@types/express': 4.17.14 '@types/keygrip': 1.0.2 - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} @@ -5940,7 +5884,7 @@ packages: /@types/express-serve-static-core@4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 @@ -5959,7 +5903,7 @@ packages: /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/graphql-upload@16.0.0: resolution: {integrity: sha512-X2YD1w9cCYSRPFmYDUwfdNNcgjK3TP1uqZfmKvI9/jdGizkpkj0Q/gOzJkkPnpIhR8z0UK4lNtgeQmVW5PsyzA==} @@ -6031,7 +5975,7 @@ packages: /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 '@types/tough-cookie': 4.0.2 parse5: 7.1.1 dev: true @@ -6040,6 +5984,10 @@ packages: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: false + /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} @@ -6058,7 +6006,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/lodash-es@4.17.7: resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} @@ -6072,23 +6020,17 @@ packages: '@types/lodash': 4.14.191 dev: false - /@types/lodash.mergewith@4.6.7: - resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} - dependencies: - '@types/lodash': 4.14.191 - dev: false - /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - /@types/mdast@3.0.10: - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + /@types/mdast@3.0.11: + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/mdx@2.0.3: - resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} + /@types/mdx@2.0.4: + resolution: {integrity: sha512-qCYrNdpKwN6YO6FVnx+ulfqifKlE3lQGsNhvDaW9Oxzyob/cRLBJWow8GHBBD4NxQ7BVvtsATgLsX0vZAWmtrg==} dev: false /@types/micromatch@4.0.2: @@ -6111,19 +6053,18 @@ packages: /@types/mkdirp@1.0.2: resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 dev: true /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - dev: false /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.15.5: - resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} + /@types/node@18.15.11: + resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -6163,7 +6104,6 @@ packages: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 17.0.53 - dev: true /@types/react@17.0.53: resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} @@ -6187,7 +6127,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.15.5 + '@types/node': 18.15.11 /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -6201,7 +6141,7 @@ packages: /@types/through@0.0.30: resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 dev: true /@types/tough-cookie@4.0.2: @@ -6219,23 +6159,17 @@ packages: /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 dev: true /@types/warning@3.0.0: resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} dev: false - /@types/ws@8.5.3: - resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} - dependencies: - '@types/node': 18.15.5 - /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.15.5 - dev: true + '@types/node': 18.15.11 /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -6291,7 +6225,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/scope-manager@5.54.1: resolution: {integrity: sha512-zWKuGliXxvuxyM71UA/EcPxaviw39dB2504LqAmFDjmkpO8qNLHcmzlh6pbHs1h/7YQ9bnsO8CCcYCSA8sykUg==} @@ -6299,7 +6232,6 @@ packages: dependencies: '@typescript-eslint/types': 5.54.1 '@typescript-eslint/visitor-keys': 5.54.1 - dev: true /@typescript-eslint/type-utils@5.54.1(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-WREHsTz0GqVYLIbzIZYbmUUr95DKEKIXZNH57W3s+4bVnuF1TKe2jH8ZNH8rO1CeMY3U4j4UQeqPNkHMiGem3g==} @@ -6324,7 +6256,6 @@ packages: /@typescript-eslint/types@5.54.1: resolution: {integrity: sha512-G9+1vVazrfAfbtmCapJX8jRo2E4MDXxgm/IMOF4oGh3kq7XuK3JRkOg6y2Qu1VsTRmWETyTkWt1wxy7X7/yLkw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /@typescript-eslint/typescript-estree@5.54.1(typescript@4.9.5): resolution: {integrity: sha512-bjK5t+S6ffHnVwA0qRPTZrxKSaFYocwFIkZx5k7pvWfsB1I57pO/0M0Skatzzw1sCkjJ83AfGTL0oFIFiDX3bg==} @@ -6345,7 +6276,6 @@ packages: typescript: 4.9.5 transitivePeerDependencies: - supports-color - dev: true /@typescript-eslint/utils@5.54.1(eslint@8.35.0)(typescript@4.9.5): resolution: {integrity: sha512-IY5dyQM8XD1zfDe5X8jegX6r2EVU5o/WJnLu/znLPWCBF7KNGC+adacXnt5jEYS9JixDcoccI6CvE4RCjHMzCQ==} @@ -6373,7 +6303,6 @@ packages: dependencies: '@typescript-eslint/types': 5.54.1 eslint-visitor-keys: 3.4.0 - dev: true /@vitejs/plugin-react-refresh@1.3.6: resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} @@ -6489,7 +6418,6 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} @@ -6499,32 +6427,32 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper@3.11.1(algoliasearch@4.14.2): - resolution: {integrity: sha512-mvsPN3eK4E0bZG0/WlWJjeqe/bUD2KOEVOl0GyL/TGXn6wcpZU8NOuztGHCUKXkyg5gq6YzUakVTmnmSSO5Yiw==} + /algoliasearch-helper@3.12.0(algoliasearch@4.17.0): + resolution: {integrity: sha512-/j1U3PEwdan0n6P/QqSnSpNSLC5+cEMvyljd5CnmNmUjDlGrys+vFEOwjVEnqELIiAGMHEA/Nl3CiKVFBUYqyQ==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: '@algolia/events': 4.0.1 - algoliasearch: 4.14.2 + algoliasearch: 4.17.0 dev: false - /algoliasearch@4.14.2: - resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} + /algoliasearch@4.17.0: + resolution: {integrity: sha512-JMRh2Mw6sEnVMiz6+APsi7lx9a2jiDFF+WUtANaUVCv6uSU9UOLdo5h9K3pdP6frRRybaM2fX8b1u0nqICS9aA==} dependencies: - '@algolia/cache-browser-local-storage': 4.14.2 - '@algolia/cache-common': 4.14.2 - '@algolia/cache-in-memory': 4.14.2 - '@algolia/client-account': 4.14.2 - '@algolia/client-analytics': 4.14.2 - '@algolia/client-common': 4.14.2 - '@algolia/client-personalization': 4.14.2 - '@algolia/client-search': 4.14.2 - '@algolia/logger-common': 4.14.2 - '@algolia/logger-console': 4.14.2 - '@algolia/requester-browser-xhr': 4.14.2 - '@algolia/requester-common': 4.14.2 - '@algolia/requester-node-http': 4.14.2 - '@algolia/transporter': 4.14.2 + '@algolia/cache-browser-local-storage': 4.17.0 + '@algolia/cache-common': 4.17.0 + '@algolia/cache-in-memory': 4.17.0 + '@algolia/client-account': 4.17.0 + '@algolia/client-analytics': 4.17.0 + '@algolia/client-common': 4.17.0 + '@algolia/client-personalization': 4.17.0 + '@algolia/client-search': 4.17.0 + '@algolia/logger-common': 4.17.0 + '@algolia/logger-console': 4.17.0 + '@algolia/requester-browser-xhr': 4.17.0 + '@algolia/requester-common': 4.17.0 + '@algolia/requester-node-http': 4.17.0 + '@algolia/transporter': 4.17.0 dev: false /altair-static-slim@5.0.9: @@ -6584,6 +6512,10 @@ packages: engines: {node: '>=12'} dev: true + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: false + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} @@ -6632,7 +6564,6 @@ packages: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.0.5 - dev: true /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} @@ -6643,6 +6574,17 @@ packages: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + get-intrinsic: 1.1.3 + is-string: 1.0.7 + dev: false + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -6652,15 +6594,34 @@ packages: engines: {node: '>=0.10.0'} dev: false - /array.prototype.flat@1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 es-shim-unscopables: 1.0.0 - dev: true + + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.1.3 + dev: false /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} @@ -6675,8 +6636,12 @@ packages: /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - /astring@1.8.3: - resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} + /ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + dev: false + + /astring@1.8.4: + resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} hasBin: true dev: false @@ -6693,15 +6658,15 @@ packages: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} - /autoprefixer@10.4.13(postcss@8.4.21): - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer@10.4.14(postcss@8.4.21): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001460 + caniuse-lite: 1.0.30001474 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -6712,7 +6677,6 @@ packages: /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - dev: true /avvio@8.2.0: resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} @@ -6724,6 +6688,11 @@ packages: - supports-color dev: false + /axe-core@4.6.3: + resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + engines: {node: '>=4'} + dev: false + /axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: @@ -6733,6 +6702,12 @@ packages: - debug dev: true + /axobject-query@3.1.1: + resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + dependencies: + deep-equal: 2.0.5 + dev: false + /babel-jest@29.5.0(@babel/core@7.21.0): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6981,7 +6956,7 @@ packages: typescript: 4.9.5 dev: true - /bob-ts@4.1.1(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5): + /bob-ts@4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@4.9.5): resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -6995,7 +6970,7 @@ packages: typescript: optional: true dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 bob-esbuild-plugin: 4.0.0(esbuild@0.17.12)(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 @@ -7024,7 +6999,7 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 - content-type: 1.0.4 + content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 @@ -7089,7 +7064,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001460 + caniuse-lite: 1.0.30001474 electron-to-chromium: 1.4.284 node-releases: 2.0.10 update-browserslist-db: 1.0.10(browserslist@4.21.5) @@ -7168,7 +7143,6 @@ packages: dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 - dev: true /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -7217,11 +7191,8 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001429: - resolution: {integrity: sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==} - - /caniuse-lite@1.0.30001460: - resolution: {integrity: sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ==} + /caniuse-lite@1.0.30001474: + resolution: {integrity: sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -7388,6 +7359,10 @@ packages: engines: {node: '>= 10'} dev: true + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7448,10 +7423,6 @@ packages: simple-swizzle: 0.2.2 dev: false - /color2k@2.0.2: - resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} - dev: false - /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: @@ -7474,8 +7445,8 @@ packages: delayed-stream: 1.0.0 dev: true - /comma-separated-tokens@2.0.2: - resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false /commander@10.0.0: @@ -7483,8 +7454,9 @@ packages: engines: {node: '>=14'} dev: true - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} dev: false /commander@5.1.0: @@ -7580,9 +7552,10 @@ packages: safe-buffer: 5.2.1 dev: true - /content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + dev: true /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -7604,23 +7577,29 @@ packages: toggle-selection: 1.0.6 dev: false - /copy-to-clipboard@3.3.2: - resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} - dependencies: - toggle-selection: 1.0.6 - dev: false - /core-js-compat@3.30.0: resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} dependencies: browserslist: 4.21.5 dev: true - /core-js@3.26.0: - resolution: {integrity: sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==} + /core-js@3.30.0: + resolution: {integrity: sha512-hQotSSARoNh1mYPi9O2YaWeiq/cEB95kOrFb4NCrO4RIFt1qqNpKsaE+vy/L3oiqvND5cThqXzUU3r9F7Efztg==} requiresBuild: true dev: false + /cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + dependencies: + layout-base: 1.0.2 + dev: false + + /cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + dependencies: + layout-base: 2.0.1 + dev: false + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} @@ -7725,11 +7704,10 @@ packages: resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} dev: false - /css-in-js-utils@2.0.1: - resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} dependencies: hyphenate-style-name: 1.0.4 - isobject: 3.0.1 dev: false /css-tree@1.1.3: @@ -7798,34 +7776,42 @@ packages: stream-transform: 2.1.3 dev: true - /d3-array@1.2.4: - resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + /cytoscape-cose-bilkent@4.1.0(cytoscape@3.23.0): + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + dependencies: + cose-base: 1.0.3 + cytoscape: 3.23.0 dev: false - /d3-array@3.2.0: - resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} - engines: {node: '>=12'} + /cytoscape-fcose@2.2.0(cytoscape@3.23.0): + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 dependencies: - internmap: 2.0.3 + cose-base: 2.2.0 + cytoscape: 3.23.0 dev: false - /d3-axis@1.0.12: - resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==} + /cytoscape@3.23.0: + resolution: {integrity: sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==} + engines: {node: '>=0.10'} + dependencies: + heap: 0.2.7 + lodash: 4.17.21 dev: false - /d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + /d3-array@3.2.3: + resolution: {integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==} engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 dev: false - /d3-brush@1.1.6: - resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==} - dependencies: - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-transition: 1.3.2 + /d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} dev: false /d3-brush@3.0.0: @@ -7839,22 +7825,11 @@ packages: d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord@1.0.6: - resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==} - dependencies: - d3-array: 1.2.4 - d3-path: 1.0.9 - dev: false - /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: - d3-path: 3.0.1 - dev: false - - /d3-collection@1.0.7: - resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + d3-path: 3.1.0 dev: false /d3-color@3.1.0: @@ -7862,42 +7837,25 @@ packages: engines: {node: '>=12'} dev: false - /d3-contour@1.3.2: - resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==} - dependencies: - d3-array: 1.2.4 - dev: false - - /d3-contour@4.0.0: - resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} + /d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} engines: {node: '>=12'} dependencies: - d3-array: 3.2.0 + d3-array: 3.2.3 dev: false - /d3-delaunay@6.0.2: - resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch@1.0.6: - resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} - dev: false - /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag@1.2.5: - resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==} - dependencies: - d3-dispatch: 1.0.6 - d3-selection: 1.4.2 - dev: false - /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} @@ -7906,15 +7864,6 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv@1.2.0: - resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} - hasBin: true - dependencies: - commander: 2.20.3 - iconv-lite: 0.4.24 - rw: 1.3.3 - dev: false - /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} @@ -7925,21 +7874,11 @@ packages: rw: 1.3.3 dev: false - /d3-ease@1.0.7: - resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} - dev: false - /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch@1.2.0: - resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==} - dependencies: - d3-dsv: 1.2.0 - dev: false - /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} @@ -7947,15 +7886,6 @@ packages: d3-dsv: 3.0.1 dev: false - /d3-force@1.2.1: - resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} - dependencies: - d3-collection: 1.0.7 - d3-dispatch: 1.0.6 - d3-quadtree: 1.0.7 - d3-timer: 1.0.10 - dev: false - /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} @@ -7965,30 +7895,16 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format@1.4.5: - resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} - dev: false - /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo@1.12.1: - resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} - dependencies: - d3-array: 1.2.4 - dev: false - - /d3-geo@3.0.1: - resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} + /d3-geo@3.1.0: + resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} engines: {node: '>=12'} dependencies: - d3-array: 3.2.0 - dev: false - - /d3-hierarchy@1.1.9: - resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} + d3-array: 3.2.3 dev: false /d3-hierarchy@3.1.2: @@ -7996,12 +7912,6 @@ packages: engines: {node: '>=12'} dev: false - /d3-interpolate@1.4.0: - resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} - dependencies: - d3-color: 3.1.0 - dev: false - /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} @@ -8009,49 +7919,26 @@ packages: d3-color: 3.1.0 dev: false - /d3-path@1.0.9: - resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - dev: false - - /d3-path@3.0.1: - resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} engines: {node: '>=12'} dev: false - /d3-polygon@1.0.6: - resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==} - dev: false - /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree@1.0.7: - resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} - dev: false - /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random@1.1.2: - resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==} - dev: false - /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic@1.5.0: - resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==} - dependencies: - d3-color: 3.1.0 - d3-interpolate: 1.4.0 - dev: false - /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} @@ -8060,76 +7947,41 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale@2.2.2: - resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} - dependencies: - d3-array: 1.2.4 - d3-collection: 1.0.7 - d3-format: 1.4.5 - d3-interpolate: 1.4.0 - d3-time: 1.1.0 - d3-time-format: 2.3.0 - dev: false - /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: - d3-array: 3.2.0 + d3-array: 3.2.3 d3-format: 3.1.0 d3-interpolate: 3.0.1 - d3-time: 3.0.0 + d3-time: 3.1.0 d3-time-format: 4.1.0 dev: false - /d3-selection@1.4.2: - resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==} - dev: false - /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape@1.3.7: - resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - dependencies: - d3-path: 1.0.9 - dev: false - - /d3-shape@3.1.0: - resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} engines: {node: '>=12'} dependencies: - d3-path: 3.0.1 - dev: false - - /d3-time-format@2.3.0: - resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} - dependencies: - d3-time: 1.1.0 + d3-path: 3.1.0 dev: false /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: - d3-time: 3.0.0 + d3-time: 3.1.0 dev: false - /d3-time@1.1.0: - resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} - dev: false - - /d3-time@3.0.0: - resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} dependencies: - d3-array: 3.2.0 - dev: false - - /d3-timer@1.0.10: - resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + d3-array: 3.2.3 dev: false /d3-timer@3.0.1: @@ -8137,17 +7989,6 @@ packages: engines: {node: '>=12'} dev: false - /d3-transition@1.3.2: - resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==} - dependencies: - d3-color: 3.1.0 - d3-dispatch: 1.0.6 - d3-ease: 1.0.7 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-timer: 1.0.10 - dev: false - /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} @@ -8162,20 +8003,6 @@ packages: d3-timer: 3.0.1 dev: false - /d3-voronoi@1.1.4: - resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} - dev: false - - /d3-zoom@1.8.3: - resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==} - dependencies: - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-interpolate: 1.4.0 - d3-selection: 1.4.2 - d3-transition: 1.3.2 - dev: false - /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} @@ -8187,53 +8014,17 @@ packages: d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3@5.16.0: - resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==} - dependencies: - d3-array: 1.2.4 - d3-axis: 1.0.12 - d3-brush: 1.1.6 - d3-chord: 1.0.6 - d3-collection: 1.0.7 - d3-color: 3.1.0 - d3-contour: 1.3.2 - d3-dispatch: 1.0.6 - d3-drag: 1.2.5 - d3-dsv: 1.2.0 - d3-ease: 1.0.7 - d3-fetch: 1.2.0 - d3-force: 1.2.1 - d3-format: 1.4.5 - d3-geo: 1.12.1 - d3-hierarchy: 1.1.9 - d3-interpolate: 1.4.0 - d3-path: 1.0.9 - d3-polygon: 1.0.6 - d3-quadtree: 1.0.7 - d3-random: 1.1.2 - d3-scale: 2.2.2 - d3-scale-chromatic: 1.5.0 - d3-selection: 1.4.2 - d3-shape: 1.3.7 - d3-time: 1.1.0 - d3-time-format: 2.3.0 - d3-timer: 1.0.10 - d3-transition: 1.3.2 - d3-voronoi: 1.1.4 - d3-zoom: 1.8.3 - dev: false - - /d3@7.6.1: - resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} + /d3@7.8.4: + resolution: {integrity: sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==} engines: {node: '>=12'} dependencies: - d3-array: 3.2.0 + d3-array: 3.2.3 d3-axis: 3.0.0 d3-brush: 3.0.0 d3-chord: 3.0.1 d3-color: 3.1.0 - d3-contour: 4.0.0 - d3-delaunay: 6.0.2 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 d3-dispatch: 3.0.1 d3-drag: 3.0.0 d3-dsv: 3.0.1 @@ -8241,38 +8032,33 @@ packages: d3-fetch: 3.0.1 d3-force: 3.0.0 d3-format: 3.1.0 - d3-geo: 3.0.1 + d3-geo: 3.1.0 d3-hierarchy: 3.1.2 d3-interpolate: 3.0.1 - d3-path: 3.0.1 + d3-path: 3.1.0 d3-polygon: 3.0.1 d3-quadtree: 3.0.1 d3-random: 3.0.1 d3-scale: 4.0.2 d3-scale-chromatic: 3.0.0 d3-selection: 3.0.0 - d3-shape: 3.1.0 - d3-time: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /dagre-d3@0.6.4: - resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==} + /dagre-d3-es@7.0.10: + resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} dependencies: - d3: 5.16.0 - dagre: 0.8.5 - graphlib: 2.1.8 - lodash: 4.17.21 + d3: 7.8.4 + lodash-es: 4.17.21 dev: false - /dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - dependencies: - graphlib: 2.1.8 - lodash: 4.17.21 + /damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false /data-uri-to-buffer@4.0.0: @@ -8289,18 +8075,17 @@ packages: whatwg-url: 11.0.0 dev: true - /dataloader@2.1.0: - resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} - dev: false - /dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} - dev: true /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + dev: false + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -8312,6 +8097,17 @@ packages: ms: 2.0.0 dev: true + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8371,7 +8167,6 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.8 - dev: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -8380,7 +8175,6 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} @@ -8413,7 +8207,6 @@ packages: /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - dev: true /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} @@ -8426,7 +8219,6 @@ packages: dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: true /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} @@ -8524,12 +8316,18 @@ packages: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: false + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 - dev: true /dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} @@ -8542,8 +8340,8 @@ packages: webidl-conversions: 7.0.0 dev: true - /dompurify@2.4.0: - resolution: {integrity: sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==} + /dompurify@2.4.5: + resolution: {integrity: sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==} dev: false /dot-case@3.0.4: @@ -8577,6 +8375,10 @@ packages: /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /elkjs@0.8.2: + resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} + dev: false + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -8586,7 +8388,6 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true /emoticon@4.0.1: resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} @@ -8603,6 +8404,14 @@ packages: once: 1.4.0 dev: true + /enhanced-resolve@5.12.0: + resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: false + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -8654,7 +8463,6 @@ packages: string.prototype.trimend: 1.0.5 string.prototype.trimstart: 1.0.5 unbox-primitive: 1.0.2 - dev: true /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} @@ -8667,13 +8475,11 @@ packages: is-set: 2.0.2 is-string: 1.0.7 isarray: 2.0.5 - dev: true /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 - dev: true /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} @@ -8682,7 +8488,6 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true /esbuild@0.17.12: resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} @@ -8751,6 +8556,186 @@ packages: source-map: 0.6.1 dev: true + /eslint-config-next@13.3.0(eslint@8.35.0)(typescript@4.9.5): + resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@next/eslint-plugin-next': 13.3.0 + '@rushstack/eslint-patch': 1.2.0 + '@typescript-eslint/parser': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + eslint: 8.35.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.35.0) + eslint-plugin-react: 7.32.2(eslint@8.35.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.35.0) + typescript: 4.9.5 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-import-resolver-node@0.3.7: + resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + dependencies: + debug: 3.2.7 + is-core-module: 2.11.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0): + resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.12.0 + eslint: 8.35.0 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) + get-tsconfig: 4.5.0 + globby: 13.1.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + synckit: 0.8.5 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0): + resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + debug: 3.2.7 + eslint: 8.35.0 + eslint-import-resolver-node: 0.3.7 + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0) + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0): + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.54.1(eslint@8.35.0)(typescript@4.9.5) + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.35.0 + eslint-import-resolver-node: 0.3.7 + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.54.1)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) + has: 1.0.3 + is-core-module: 2.11.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.6 + resolve: 1.22.1 + semver: 6.3.0 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.35.0): + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + '@babel/runtime': 7.21.0 + aria-query: 5.1.3 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.6.3 + axobject-query: 3.1.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.35.0 + has: 1.0.3 + jsx-ast-utils: 3.3.3 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.0 + dev: false + + /eslint-plugin-react-hooks@4.6.0(eslint@8.35.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.35.0 + dev: false + + /eslint-plugin-react@7.32.2(eslint@8.35.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.35.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + /eslint-plugin-you-dont-need-lodash-underscore@6.12.0: resolution: {integrity: sha512-WF4mNp+k2532iswT6iUd1BX6qjd3AV4cFy/09VC82GY9SsRtvkxhUIx7JNGSe0/bLyd57oTr4inPFiIaENXhGw==} engines: {node: '>=4.0'} @@ -8772,7 +8757,6 @@ packages: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true /eslint-utils@3.0.0(eslint@8.35.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} @@ -8782,17 +8766,14 @@ packages: dependencies: eslint: 8.35.0 eslint-visitor-keys: 2.1.0 - dev: true /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} - dev: true /eslint-visitor-keys@3.4.0: resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true /eslint@8.35.0: resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} @@ -8841,7 +8822,6 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true /espree@9.5.1: resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} @@ -8850,7 +8830,6 @@ packages: acorn: 8.8.1 acorn-jsx: 5.3.2(acorn@8.8.1) eslint-visitor-keys: 3.4.0 - dev: true /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} @@ -8862,14 +8841,12 @@ packages: engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} @@ -8879,36 +8856,35 @@ packages: /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true - /estree-util-attach-comments@2.1.0: - resolution: {integrity: sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==} + /estree-util-attach-comments@2.1.1: + resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} dependencies: '@types/estree': 1.0.0 dev: false - /estree-util-build-jsx@2.2.0: - resolution: {integrity: sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==} + /estree-util-build-jsx@2.2.2: + resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} dependencies: '@types/estree-jsx': 1.0.0 - estree-util-is-identifier-name: 2.0.1 - estree-walker: 3.0.1 + estree-util-is-identifier-name: 2.1.0 + estree-walker: 3.0.3 dev: false - /estree-util-is-identifier-name@2.0.1: - resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} + /estree-util-is-identifier-name@2.1.0: + resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} dev: false - /estree-util-to-js@1.1.0: - resolution: {integrity: sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==} + /estree-util-to-js@1.2.0: + resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} dependencies: '@types/estree-jsx': 1.0.0 - astring: 1.8.3 + astring: 1.8.4 source-map: 0.7.4 dev: false - /estree-util-visit@1.2.0: - resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} + /estree-util-visit@1.2.1: + resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} dependencies: '@types/estree-jsx': 1.0.0 '@types/unist': 2.0.6 @@ -8917,14 +8893,15 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker@3.0.1: - resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.0 dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} @@ -9018,7 +8995,7 @@ packages: array-flatten: 1.1.1 body-parser: 1.20.1 content-disposition: 0.5.4 - content-type: 1.0.4 + content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 debug: 2.6.9 @@ -9117,7 +9094,10 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + + /fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false /fast-querystring@1.0.0: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} @@ -9151,28 +9131,6 @@ packages: /fastify-plugin@4.3.0: resolution: {integrity: sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==} - /fastify@4.11.0: - resolution: {integrity: sha512-JteZ8pjEqd+6n+azQnQfSJV8MUMxAmxbvC2Dx/Mybj039Lf/u3kda9Kq84uy/huCpqCzZoyHIZS5JFGF3wLztw==} - dependencies: - '@fastify/ajv-compiler': 3.4.0 - '@fastify/error': 3.0.0 - '@fastify/fast-json-stringify-compiler': 4.1.0 - abstract-logging: 2.0.1 - avvio: 8.2.0 - content-type: 1.0.4 - find-my-way: 7.3.1 - light-my-request: 5.6.1 - pino: 8.7.0 - process-warning: 2.0.0 - proxy-addr: 2.0.7 - rfdc: 1.3.0 - secure-json-parse: 2.5.0 - semver: 7.3.8 - tiny-lru: 10.0.1 - transitivePeerDependencies: - - supports-color - dev: false - /fastify@4.15.0: resolution: {integrity: sha512-m/CaRN8nf5uyYdrDe2qqq+0z3oGyE+A++qlKQoLJTI4WI0nWK9D6R3FxXQ3MVwt/md977GMR4F43pE9oqrS2zw==} dependencies: @@ -9241,7 +9199,6 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 - dev: true /file-type@18.2.1: resolution: {integrity: sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==} @@ -9273,15 +9230,6 @@ packages: - supports-color dev: true - /find-my-way@7.3.1: - resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} - engines: {node: '>=14'} - dependencies: - fast-deep-equal: 3.1.3 - fast-querystring: 1.0.0 - safe-regex2: 2.0.0 - dev: false - /find-my-way@7.6.0: resolution: {integrity: sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ==} engines: {node: '>=14'} @@ -9308,7 +9256,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -9331,7 +9278,6 @@ packages: dependencies: flatted: 3.2.7 rimraf: 3.0.2 - dev: true /flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} @@ -9377,7 +9323,6 @@ packages: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - dev: true /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} @@ -9445,12 +9390,6 @@ packages: tslib: 2.5.0 dev: false - /framesync@6.1.2: - resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} - dependencies: - tslib: 2.4.0 - dev: false - /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -9517,11 +9456,9 @@ packages: define-properties: 1.1.4 es-abstract: 1.20.4 functions-have-names: 1.2.3 - dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} @@ -9537,7 +9474,6 @@ packages: function-bind: 1.1.1 has: 1.0.3 has-symbols: 1.0.3 - dev: true /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} @@ -9570,7 +9506,10 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 - dev: true + + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: false /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} @@ -9588,6 +9527,28 @@ packages: dependencies: is-glob: 4.0.3 + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -9617,7 +9578,10 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.20.2 - dev: true + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -9650,22 +9614,18 @@ packages: ignore: 5.2.0 merge2: 1.4.1 slash: 4.0.0 - dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - dependencies: - lodash: 4.17.21 - dev: false - - /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@16.6.0): + /graphql-ez@0.16.0(@types/node@18.15.11)(graphql@16.6.0): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -9674,9 +9634,9 @@ packages: graphql: optional: true dependencies: - '@envelop/core': 3.0.4 - '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@envelop/core': 3.0.6 + '@envelop/types': 3.0.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) '@pablosz/graphql-helix': 2.0.3(graphql@16.6.0) graphql: 16.6.0 tiny-lru: 10.0.1 @@ -9750,7 +9710,6 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -9764,19 +9723,16 @@ packages: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 - dev: true /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - dev: true /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -9784,40 +9740,40 @@ packages: dependencies: function-bind: 1.1.1 - /hast-util-has-property@2.0.0: - resolution: {integrity: sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==} + /hast-util-has-property@2.0.1: + resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} dev: false - /hast-util-heading-rank@2.1.0: - resolution: {integrity: sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==} + /hast-util-heading-rank@2.1.1: + resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-parse-selector@3.1.0: - resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-to-estree@2.1.0: - resolution: {integrity: sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==} + /hast-util-to-estree@2.3.2: + resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==} dependencies: '@types/estree': 1.0.0 '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 '@types/unist': 2.0.6 - comma-separated-tokens: 2.0.2 - estree-util-attach-comments: 2.1.0 - estree-util-is-identifier-name: 2.0.1 - hast-util-whitespace: 2.0.0 - mdast-util-mdx-expression: 1.3.1 - mdast-util-mdxjs-esm: 1.3.0 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 - style-to-object: 0.3.0 - unist-util-position: 4.0.3 - zwitch: 2.0.2 + comma-separated-tokens: 2.0.3 + estree-util-attach-comments: 2.1.1 + estree-util-is-identifier-name: 2.1.0 + hast-util-whitespace: 2.0.1 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdxjs-esm: 1.3.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.1 + unist-util-position: 4.0.4 + zwitch: 2.0.4 transitivePeerDependencies: - supports-color dev: false @@ -9828,18 +9784,18 @@ packages: '@types/hast': 2.3.4 dev: false - /hast-util-whitespace@2.0.0: - resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} + /hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} dev: false - /hastscript@7.1.0: - resolution: {integrity: sha512-uBjaTTLN0MkCZxY/R2fWUOcu7FRtUVzKRO5P/RAfgsu3yFiMB1JWCO4AjeVkgHxAira1f2UecHK5WfS9QurlWA==} + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: '@types/hast': 2.3.4 - comma-separated-tokens: 2.0.2 - hast-util-parse-selector: 3.1.0 - property-information: 6.1.1 - space-separated-tokens: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.2.0 + space-separated-tokens: 2.0.2 dev: false /header-case@2.0.4: @@ -9848,6 +9804,10 @@ packages: capital-case: 1.0.4 tslib: 2.5.0 + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: false + /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false @@ -9908,8 +9868,8 @@ packages: void-elements: 3.1.0 dev: false - /html-tags@3.2.0: - resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} dev: false @@ -9986,7 +9946,7 @@ packages: /i18next@22.4.13: resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 dev: false /iconv-lite@0.4.24: @@ -9994,6 +9954,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -10066,10 +10027,11 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inline-style-prefixer@6.0.1: - resolution: {integrity: sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ==} + /inline-style-prefixer@6.0.4: + resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} dependencies: - css-in-js-utils: 2.0.1 + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 dev: false /inquirer@8.2.5: @@ -10100,7 +10062,6 @@ packages: get-intrinsic: 1.1.3 has: 1.0.3 side-channel: 1.0.4 - dev: true /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} @@ -10140,7 +10101,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -10153,7 +10113,6 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -10167,7 +10126,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} @@ -10177,7 +10135,6 @@ packages: /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - dev: true /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} @@ -10207,7 +10164,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} @@ -10217,7 +10173,6 @@ packages: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - dev: true /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} @@ -10272,19 +10227,16 @@ packages: /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - dev: true /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -10293,7 +10245,6 @@ packages: /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} - dev: true /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} @@ -10314,8 +10265,8 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-reference@3.0.0: - resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} + /is-reference@3.0.1: + resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} dependencies: '@types/estree': 1.0.0 dev: false @@ -10326,7 +10277,6 @@ packages: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - dev: true /is-relative@1.0.0: resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} @@ -10336,13 +10286,11 @@ packages: /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 - dev: true /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -10358,7 +10306,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - dev: true /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} @@ -10372,7 +10319,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array@1.1.9: resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} @@ -10383,7 +10329,6 @@ packages: es-abstract: 1.20.4 for-each: 0.3.3 has-tostringtag: 1.0.0 - dev: true /is-unc-path@1.0.0: resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} @@ -10403,20 +10348,17 @@ packages: /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 - dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 - dev: true /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} @@ -10427,20 +10369,13 @@ packages: engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - dev: true /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false - /isomorphic-unfetch@4.0.2: resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} dependencies: @@ -10522,7 +10457,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -10541,7 +10476,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): + /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10558,7 +10493,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-config: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -10568,7 +10503,7 @@ packages: - supports-color - ts-node - /jest-config@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): + /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10583,7 +10518,7 @@ packages: '@babel/core': 7.21.0 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 babel-jest: 29.5.0(@babel/core@7.21.0) chalk: 4.1.2 ci-info: 3.7.1 @@ -10603,7 +10538,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) transitivePeerDependencies: - supports-color @@ -10645,7 +10580,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) @@ -10662,7 +10597,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -10676,7 +10611,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.5 - '@types/node': 18.15.5 + '@types/node': 18.15.11 anymatch: 3.1.2 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -10723,7 +10658,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-util: 29.5.0 /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): @@ -10737,11 +10672,6 @@ packages: dependencies: jest-resolve: 29.5.0 - /jest-regex-util@29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false - /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10778,7 +10708,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -10808,7 +10738,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -10832,7 +10762,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) '@babel/traverse': 7.21.2 '@babel/types': 7.21.4 @@ -10861,7 +10791,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 chalk: 4.1.2 ci-info: 3.7.1 graceful-fs: 4.2.10 @@ -10886,35 +10816,21 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) - jest-regex-util: 29.2.0 - jest-watcher: 29.4.1 + jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + jest-regex-util: 29.4.3 + jest-watcher: 29.5.0 slash: 5.0.0 string-length: 5.0.1 strip-ansi: 7.0.1 dev: false - /jest-watcher@29.4.1: - resolution: {integrity: sha512-vFOzflGFs27nU6h8dpnVRER3O2rFtL+VMEwnG0H3KLHcllLsU8y9DchSh0AL/Rg5nN1/wSiQ+P4ByMGpuybaVw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: false - /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.5 + '@types/node': 18.15.11 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10925,12 +10841,12 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): + /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10943,12 +10859,17 @@ packages: '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-cli: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node + /jiti@1.18.2: + resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + hasBin: true + dev: false + /joi@17.7.0: resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} dependencies: @@ -10965,7 +10886,6 @@ packages: /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: true /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -11039,14 +10959,19 @@ packages: /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: false /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} @@ -11071,6 +10996,14 @@ packages: graceful-fs: 4.2.10 dev: false + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: false + /just-extend@6.2.0: resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} dev: false @@ -11111,6 +11044,24 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + /language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + dev: false + + /language-tags@1.0.5: + resolution: {integrity: sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=} + dependencies: + language-subtag-registry: 0.3.22 + dev: false + + /layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + dev: false + + /layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + dev: false + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -11129,7 +11080,6 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true /light-my-request@5.6.1: resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} @@ -11171,7 +11121,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -11182,7 +11131,6 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: true /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -11225,8 +11173,8 @@ packages: is-unicode-supported: 0.1.0 dev: true - /longest-streak@3.0.1: - resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false /loose-envify@1.4.0: @@ -11310,192 +11258,208 @@ packages: engines: {node: '>=0.10.0'} dev: false - /markdown-table@3.0.2: - resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: false - /mdast-util-definitions@5.1.1: - resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} + /mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 '@types/unist': 2.0.6 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false - /mdast-util-find-and-replace@2.2.1: - resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} + /mdast-util-find-and-replace@2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} dependencies: + '@types/mdast': 3.0.11 escape-string-regexp: 5.0.0 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 dev: false - /mdast-util-from-markdown@1.2.0: - resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} + /mdast-util-from-markdown@1.3.0: + resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 '@types/unist': 2.0.6 decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.1.0 + mdast-util-to-string: 3.2.0 micromark: 3.1.0 micromark-util-decode-numeric-character-reference: 1.0.0 micromark-util-decode-string: 1.0.2 micromark-util-normalize-identifier: 1.0.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - unist-util-stringify-position: 3.0.2 + unist-util-stringify-position: 3.0.3 uvu: 0.5.6 transitivePeerDependencies: - supports-color dev: false - /mdast-util-gfm-autolink-literal@1.0.2: - resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} + /mdast-util-gfm-autolink-literal@1.0.3: + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.1 + mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.1.0 dev: false - /mdast-util-gfm-footnote@1.0.1: - resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} + /mdast-util-gfm-footnote@1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.0.0 dev: false - /mdast-util-gfm-strikethrough@1.0.1: - resolution: {integrity: sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==} + /mdast-util-gfm-strikethrough@1.0.3: + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + mdast-util-to-markdown: 1.5.0 dev: false - /mdast-util-gfm-table@1.0.6: - resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} + /mdast-util-gfm-table@1.0.7: + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} dependencies: - '@types/mdast': 3.0.10 - markdown-table: 3.0.2 - mdast-util-from-markdown: 1.2.0 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + markdown-table: 3.0.3 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-gfm-task-list-item@1.0.1: - resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} + /mdast-util-gfm-task-list-item@1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} dependencies: - '@types/mdast': 3.0.10 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + mdast-util-to-markdown: 1.5.0 dev: false - /mdast-util-gfm@2.0.1: - resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} + /mdast-util-gfm@2.0.2: + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} dependencies: - mdast-util-from-markdown: 1.2.0 - mdast-util-gfm-autolink-literal: 1.0.2 - mdast-util-gfm-footnote: 1.0.1 - mdast-util-gfm-strikethrough: 1.0.1 - mdast-util-gfm-table: 1.0.6 - mdast-util-gfm-task-list-item: 1.0.1 - mdast-util-to-markdown: 1.3.0 + mdast-util-from-markdown: 1.3.0 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-mdx-expression@1.3.1: - resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} + /mdast-util-mdx-expression@1.3.2: + resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-mdx-jsx@2.1.0: - resolution: {integrity: sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==} + /mdast-util-mdx-jsx@2.1.2: + resolution: {integrity: sha512-o9vBCYQK5ZLGEj3tCGISJGjvafyHRVJlZmfJzSE7xjiogSzIeph/Z4zMY65q4WGRMezQBeAwPlrdymDYYYx0tA==} dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 + '@types/unist': 2.0.6 ccount: 2.0.1 - mdast-util-to-markdown: 1.3.0 - parse-entities: 4.0.0 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 + parse-entities: 4.0.1 stringify-entities: 4.0.3 - unist-util-remove-position: 4.0.1 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.2 + unist-util-remove-position: 4.0.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + transitivePeerDependencies: + - supports-color dev: false - /mdast-util-mdx@2.0.0: - resolution: {integrity: sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==} + /mdast-util-mdx@2.0.1: + resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} dependencies: - mdast-util-mdx-expression: 1.3.1 - mdast-util-mdx-jsx: 2.1.0 - mdast-util-mdxjs-esm: 1.3.0 + mdast-util-from-markdown: 1.3.0 + mdast-util-mdx-expression: 1.3.2 + mdast-util-mdx-jsx: 2.1.2 + mdast-util-mdxjs-esm: 1.3.1 + mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-mdxjs-esm@1.3.0: - resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} + /mdast-util-mdxjs-esm@1.3.1: + resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} dependencies: '@types/estree-jsx': 1.0.0 '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 - mdast-util-to-markdown: 1.3.0 + '@types/mdast': 3.0.11 + mdast-util-from-markdown: 1.3.0 + mdast-util-to-markdown: 1.5.0 transitivePeerDependencies: - supports-color dev: false - /mdast-util-to-hast@12.2.4: - resolution: {integrity: sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==} + /mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + dependencies: + '@types/mdast': 3.0.11 + unist-util-is: 5.2.1 + dev: false + + /mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} dependencies: '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-definitions: 5.1.1 + '@types/mdast': 3.0.11 + mdast-util-definitions: 5.1.2 micromark-util-sanitize-uri: 1.1.0 trim-lines: 3.0.1 - unist-builder: 3.0.0 - unist-util-generated: 2.0.0 - unist-util-position: 4.0.3 - unist-util-visit: 4.1.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 dev: false - /mdast-util-to-markdown@1.3.0: - resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} + /mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} dependencies: - '@types/mdast': 3.0.10 + '@types/mdast': 3.0.11 '@types/unist': 2.0.6 - longest-streak: 3.0.1 - mdast-util-to-string: 3.1.0 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 micromark-util-decode-string: 1.0.2 - unist-util-visit: 4.1.1 - zwitch: 2.0.2 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 dev: false - /mdast-util-to-string@3.1.0: - resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.11 dev: false /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false - /mdx-mermaid@1.3.2(mermaid@9.1.7)(react@17.0.2)(unist-util-visit@2.0.3): + /mdx-mermaid@1.3.2(mermaid@10.1.0)(react@17.0.2)(unist-util-visit@2.0.3): resolution: {integrity: sha512-8kw0tg3isKKBFzFwoe2DhIaEgKYtVeJXQtxZCCrdTPO0CTpXHnTHT0atDqsp7YkXi5iUCp/zAZPZu1cmr68T3w==} peerDependencies: mermaid: '>=8.11.0' react: ^16.8.4 || ^17.0.0 || ^18.0.0 unist-util-visit: ^2.0.0 dependencies: - mermaid: 9.1.7 + mermaid: 10.1.0(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 unist-util-visit: 2.0.3 dev: false @@ -11555,18 +11519,29 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid@9.1.7: - resolution: {integrity: sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==} - dependencies: - '@braintree/sanitize-url': 6.0.1 - d3: 7.6.1 - dagre: 0.8.5 - dagre-d3: 0.6.4 - dompurify: 2.4.0 - graphlib: 2.1.8 + /mermaid@10.1.0(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-LYekSMNJygI1VnMizAPUddY95hZxOjwZxr7pODczILInO0dhQKuhXeu4sargtnuTwCilSuLS7Uiq/Qn7HTVrmA==} + dependencies: + '@braintree/sanitize-url': 6.0.2 + '@khanacademy/simple-markdown': 0.8.6(react-dom@17.0.2)(react@17.0.2) + cytoscape: 3.23.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.23.0) + cytoscape-fcose: 2.2.0(cytoscape@3.23.0) + d3: 7.8.4 + dagre-d3-es: 7.0.10 + dayjs: 1.11.7 + dompurify: 2.4.5 + elkjs: 0.8.2 khroma: 2.0.0 - moment-mini: 2.24.0 + lodash-es: 4.17.21 + non-layered-tidy-tree-layout: 2.0.2 stylis: 4.1.3 + ts-dedent: 2.2.0 + uuid: 9.0.0 + web-worker: 1.2.0 + transitivePeerDependencies: + - react + - react-dom dev: false /methods@1.1.2: @@ -11605,8 +11580,8 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-footnote@1.0.4: - resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} + /micromark-extension-gfm-footnote@1.1.0: + resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} dependencies: micromark-core-commonmark: 1.0.6 micromark-factory-space: 1.0.0 @@ -11618,8 +11593,8 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-strikethrough@1.0.4: - resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} + /micromark-extension-gfm-strikethrough@1.0.5: + resolution: {integrity: sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-classify-character: 1.0.0 @@ -11639,14 +11614,14 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-tagfilter@1.0.1: - resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} + /micromark-extension-gfm-tagfilter@1.0.2: + resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-extension-gfm-task-list-item@1.0.3: - resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} + /micromark-extension-gfm-task-list-item@1.0.4: + resolution: {integrity: sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ==} dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 @@ -11659,22 +11634,22 @@ packages: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 - micromark-extension-gfm-footnote: 1.0.4 - micromark-extension-gfm-strikethrough: 1.0.4 + micromark-extension-gfm-footnote: 1.1.0 + micromark-extension-gfm-strikethrough: 1.0.5 micromark-extension-gfm-table: 1.0.5 - micromark-extension-gfm-tagfilter: 1.0.1 - micromark-extension-gfm-task-list-item: 1.0.3 + micromark-extension-gfm-tagfilter: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.4 micromark-util-combine-extensions: 1.0.0 micromark-util-types: 1.0.2 dev: false - /micromark-extension-mdx-expression@1.0.3: - resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} + /micromark-extension-mdx-expression@1.0.4: + resolution: {integrity: sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==} dependencies: - micromark-factory-mdx-expression: 1.0.6 + micromark-factory-mdx-expression: 1.0.7 micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.0 + micromark-util-events-to-acorn: 1.2.1 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 @@ -11684,14 +11659,14 @@ packages: resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} dependencies: '@types/acorn': 4.0.6 - estree-util-is-identifier-name: 2.0.1 - micromark-factory-mdx-expression: 1.0.6 + estree-util-is-identifier-name: 2.1.0 + micromark-factory-mdx-expression: 1.0.7 micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - vfile-message: 3.1.2 + vfile-message: 3.1.4 dev: false /micromark-extension-mdx-md@1.0.0: @@ -11705,12 +11680,12 @@ packages: dependencies: micromark-core-commonmark: 1.0.6 micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.0 + micromark-util-events-to-acorn: 1.2.1 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - unist-util-position-from-estree: 1.1.1 + unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 - vfile-message: 3.1.2 + vfile-message: 3.1.4 dev: false /micromark-extension-mdxjs@1.0.0: @@ -11718,7 +11693,7 @@ packages: dependencies: acorn: 8.8.1 acorn-jsx: 5.3.2(acorn@8.8.1) - micromark-extension-mdx-expression: 1.0.3 + micromark-extension-mdx-expression: 1.0.4 micromark-extension-mdx-jsx: 1.0.3 micromark-extension-mdx-md: 1.0.0 micromark-extension-mdxjs-esm: 1.0.3 @@ -11743,17 +11718,17 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-mdx-expression@1.0.6: - resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} + /micromark-factory-mdx-expression@1.0.7: + resolution: {integrity: sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==} dependencies: micromark-factory-space: 1.0.0 micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.0 + micromark-util-events-to-acorn: 1.2.1 micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 - unist-util-position-from-estree: 1.1.1 + unist-util-position-from-estree: 1.1.2 uvu: 0.5.6 - vfile-message: 3.1.2 + vfile-message: 3.1.4 dev: false /micromark-factory-space@1.0.0: @@ -11829,16 +11804,16 @@ packages: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: false - /micromark-util-events-to-acorn@1.2.0: - resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} + /micromark-util-events-to-acorn@1.2.1: + resolution: {integrity: sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==} dependencies: '@types/acorn': 4.0.6 '@types/estree': 1.0.0 - estree-util-visit: 1.2.0 + estree-util-visit: 1.2.1 micromark-util-types: 1.0.2 uvu: 0.5.6 - vfile-location: 4.0.1 - vfile-message: 3.1.2 + vfile-location: 4.1.0 + vfile-message: 3.1.4 dev: false /micromark-util-html-tag-name@1.1.0: @@ -12007,10 +11982,6 @@ packages: engines: {node: '>=6'} dev: false - /moment-mini@2.24.0: - resolution: {integrity: sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==} - dev: false - /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -12051,6 +12022,14 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} peerDependencies: @@ -12060,10 +12039,10 @@ packages: css-tree: 1.1.3 csstype: 3.1.1 fastest-stable-stringify: 2.0.2 - inline-style-prefixer: 6.0.1 + inline-style-prefixer: 6.0.4 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - rtl-css-js: 1.16.0 + rtl-css-js: 1.16.1 sourcemap-codec: 1.4.8 stacktrace-js: 2.0.2 stylis: 4.1.3 @@ -12103,7 +12082,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 '@types/hoist-non-react-statics': 3.3.1 - core-js: 3.26.0 + core-js: 3.30.0 hoist-non-react-statics: 3.3.2 i18next: 22.4.13 i18next-fs-backend: 2.1.1 @@ -12160,7 +12139,7 @@ packages: dependencies: '@next/env': 12.3.4 '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001429 + caniuse-lite: 1.0.30001474 postcss: 8.4.14 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -12184,6 +12163,50 @@ packages: - '@babel/core' - babel-plugin-macros + /next@13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} + engines: {node: '>=14.6.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 13.3.0 + '@swc/helpers': 0.4.14 + busboy: 1.6.0 + caniuse-lite: 1.0.30001474 + 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.21.0)(react@18.2.0) + optionalDependencies: + '@next/swc-darwin-arm64': 13.3.0 + '@next/swc-darwin-x64': 13.3.0 + '@next/swc-linux-arm64-gnu': 13.3.0 + '@next/swc-linux-arm64-musl': 13.3.0 + '@next/swc-linux-x64-gnu': 13.3.0 + '@next/swc-linux-x64-musl': 13.3.0 + '@next/swc-win32-arm64-msvc': 13.3.0 + '@next/swc-win32-ia32-msvc': 13.3.0 + '@next/swc-win32-x64-msvc': 13.3.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + dev: false + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -12240,6 +12263,10 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + /non-layered-tidy-tree-layout@2.0.2: + resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} + dev: false + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -12325,7 +12352,6 @@ packages: /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} @@ -12333,12 +12359,10 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - dev: true /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object-path@0.11.8: resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} @@ -12353,7 +12377,40 @@ packages: define-properties: 1.1.4 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true + + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + dev: false + + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + dev: false + + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.1.4 + es-abstract: 1.20.4 + dev: false + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + dev: false /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} @@ -12405,7 +12462,6 @@ packages: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: true /open@9.0.0: resolution: {integrity: sha512-yerrN5WPzgwuE3T6rxAkT1UuMLDzs4Szpug7hy9s4gru3iOTnaU0yKc1AYOVYrBzvykce5gUdr9RPNB4R+Zc/A==} @@ -12444,7 +12500,6 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 word-wrap: 1.2.3 - dev: true /ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -12521,7 +12576,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -12551,8 +12605,8 @@ packages: dependencies: callsites: 3.1.0 - /parse-entities@4.0.0: - resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} dependencies: '@types/unist': 2.0.6 character-entities: 2.0.2 @@ -12678,11 +12732,12 @@ packages: engines: {node: '>=14.16'} dev: true - /periscopic@3.0.4: - resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: - estree-walker: 3.0.1 - is-reference: 3.0.0 + '@types/estree': 1.0.0 + estree-walker: 3.0.3 + is-reference: 3.0.1 dev: false /picocolors@1.0.0: @@ -12692,6 +12747,11 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: false + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -12751,6 +12811,18 @@ packages: tslib: 2.5.0 dev: false + /postcss-import@14.1.0(postcss@8.4.21): + resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.21 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.1 + dev: false + /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} @@ -12759,6 +12831,16 @@ packages: postcss: 8.4.21 dev: false + /postcss-js@4.0.1(postcss@8.4.21): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.21 + dev: false + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -12773,7 +12855,7 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 - ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) + ts-node: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) yaml: 1.10.2 dev: false @@ -12784,11 +12866,21 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.21 - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.11 + dev: false + + /postcss-nested@6.0.0(postcss@8.4.21): + resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.21 + postcss-selector-parser: 6.0.11 dev: false - /postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + /postcss-selector-parser@6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -12819,8 +12911,8 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact@10.11.2: - resolution: {integrity: sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==} + /preact@10.13.2: + resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} dev: false /preferred-pm@3.0.3: @@ -12841,13 +12933,6 @@ packages: /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true - - /prettier@2.8.3: - resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false /prettier@2.8.6: resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} @@ -12921,8 +13006,8 @@ packages: react-is: 16.13.1 dev: false - /property-information@6.1.1: - resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} + /property-information@6.2.0: + resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} dev: false /proxy-addr@2.0.7: @@ -12973,7 +13058,7 @@ packages: commander: 8.3.0 glob: 7.2.3 postcss: 8.4.21 - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.11 dev: false /qs@6.11.0: @@ -13078,13 +13163,23 @@ packages: react: 17.0.2 scheduler: 0.20.2 + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + /react-error-boundary@3.1.4(react@17.0.2): resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 react: 17.0.2 dev: true @@ -13121,7 +13216,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.21.0 html-parse-stringify: 3.0.1 i18next: 22.4.13 react: 17.0.2 @@ -13136,34 +13231,34 @@ packages: react: 17.0.2 dev: false - /react-instantsearch-core@6.38.0(algoliasearch@4.14.2)(react@17.0.2): - resolution: {integrity: sha512-Y5denvptL+qDOHY3LxipULNun8f3t2WeO9UdiWJd9FER1vn1VBrDdSyZ5b+idxqVWhSeVbncbf98zr7EW/kFvA==} + /react-instantsearch-core@6.39.1(algoliasearch@4.17.0)(react@17.0.2): + resolution: {integrity: sha512-rvzOoNGBT2O28mmcpXfcN4pVF+p07jlDMbEKB1TRdW3jE9dm8U6uCS/X6DWqigYLr8svVRcG/Ez+wzYK+yuPZw==} peerDependencies: algoliasearch: '>= 3.1 < 5' react: '>= 16.3.0 < 19' dependencies: '@babel/runtime': 7.21.0 - algoliasearch: 4.14.2 - algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) + algoliasearch: 4.17.0 + algoliasearch-helper: 3.12.0(algoliasearch@4.17.0) prop-types: 15.8.1 react: 17.0.2 react-fast-compare: 3.2.0 dev: false - /react-instantsearch-dom@6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2): + /react-instantsearch-dom@6.17.0(algoliasearch@4.17.0)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-KwQJ0HqD9YBvO1VBS+GZC2binTfrGFRClXxDwmd014I9lyqr05m1U2NR81zD0xoBkoZwELP5RWvfpuvbEL0Gdg==} peerDependencies: react: '>= 16.3.0 < 18' react-dom: '>= 16.3.0 < 18' dependencies: '@babel/runtime': 7.21.0 - algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) + algoliasearch-helper: 3.12.0(algoliasearch@4.17.0) classnames: 2.3.2 prop-types: 15.8.1 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) react-fast-compare: 3.2.0 - react-instantsearch-core: 6.38.0(algoliasearch@4.14.2)(react@17.0.2) + react-instantsearch-core: 6.39.1(algoliasearch@4.17.0)(react@17.0.2) transitivePeerDependencies: - algoliasearch dev: false @@ -13204,8 +13299,8 @@ packages: react: 17.0.2 dev: false - /react-player@2.11.0(react@17.0.2): - resolution: {integrity: sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==} + /react-player@2.12.0(react@17.0.2): + resolution: {integrity: sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==} peerDependencies: react: '>=16.6.0' dependencies: @@ -13331,7 +13426,7 @@ packages: dependencies: '@types/js-cookie': 2.2.7 '@xobotyi/scrollbar-width': 1.9.5 - copy-to-clipboard: 3.3.2 + copy-to-clipboard: 3.3.1 fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 @@ -13354,6 +13449,19 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: false + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -13489,12 +13597,10 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 functions-have-names: 1.2.3 - dev: true /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - dev: true /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} @@ -13534,11 +13640,11 @@ packages: dependencies: '@types/hast': 2.3.4 github-slugger: 1.4.0 - hast-util-has-property: 2.0.0 - hast-util-heading-rank: 2.1.0 + hast-util-has-property: 2.0.1 + hast-util-heading-rank: 2.1.1 hast-util-to-string: 2.0.0 unified: 10.1.2 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false /relay-runtime@12.0.0: @@ -13556,24 +13662,24 @@ packages: dependencies: emoticon: 4.0.1 node-emoji: 1.11.0 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: - '@types/mdast': 3.0.10 - mdast-util-gfm: 2.0.1 + '@types/mdast': 3.0.11 + mdast-util-gfm: 2.0.2 micromark-extension-gfm: 2.0.1 unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false - /remark-mdx@2.1.5: - resolution: {integrity: sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==} + /remark-mdx@2.3.0: + resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} dependencies: - mdast-util-mdx: 2.0.0 + mdast-util-mdx: 2.0.1 micromark-extension-mdxjs: 1.0.0 transitivePeerDependencies: - supports-color @@ -13582,8 +13688,8 @@ packages: /remark-parse@10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: - '@types/mdast': 3.0.10 - mdast-util-from-markdown: 1.2.0 + '@types/mdast': 3.0.11 + mdast-util-from-markdown: 1.3.0 unified: 10.1.2 transitivePeerDependencies: - supports-color @@ -13593,8 +13699,8 @@ packages: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: '@types/hast': 2.3.4 - '@types/mdast': 3.0.10 - mdast-util-to-hast: 12.2.4 + '@types/mdast': 3.0.11 + mdast-util-to-hast: 12.3.0 unified: 10.1.2 dev: false @@ -13651,6 +13757,15 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + /restore-cursor@3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -13714,8 +13829,8 @@ packages: fsevents: 2.3.2 dev: true - /rtl-css-js@1.16.0: - resolution: {integrity: sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==} + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} dependencies: '@babel/runtime': 7.21.0 dev: false @@ -13772,7 +13887,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 is-regex: 1.1.4 - dev: true /safe-regex2@2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} @@ -13801,13 +13915,19 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} dev: false - /search-insights@2.2.1: - resolution: {integrity: sha512-JDfVGZbKqTtiKVZjAVbkNw9C9f0ib80yx6Ea17M3z4RvPmuD0GYWXuFwA9++dpbreBEMH4TC3lQ29Zq7O4b5oA==} + /search-insights@2.4.0: + resolution: {integrity: sha512-AqXxWFEIZTfOf0brQLvoAZcotrVX0xR/VoPCzBxsTZF/yO+izIH1eFCtKizR/dGI8NCMOTdc7l90hAOI68dBbg==} engines: {node: '>=8.16.0'} dev: false @@ -13968,7 +14088,7 @@ packages: peerDependencies: shiki: ^0.9 || ^0.10.0 dependencies: - hastscript: 7.1.0 + hastscript: 7.2.0 shiki: 0.10.1 dev: false @@ -13986,7 +14106,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 object-inspect: 1.12.2 - dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -14043,7 +14162,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.0 + array.prototype.flat: 1.3.1 breakword: 1.0.5 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 @@ -14097,8 +14216,8 @@ packages: deprecated: Please use @jridgewell/sourcemap-codec instead dev: false - /space-separated-tokens@2.0.1: - resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: false /spawn-command@0.0.2-1: @@ -14256,13 +14375,25 @@ packages: strip-ansi: 7.0.1 dev: true + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.4 + get-intrinsic: 1.1.3 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: false + /string.prototype.trimend@1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 - dev: true /string.prototype.trimstart@1.0.5: resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} @@ -14270,7 +14401,6 @@ packages: call-bind: 1.0.2 define-properties: 1.1.4 es-abstract: 1.20.4 - dev: true /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -14305,7 +14435,6 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: true /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} @@ -14351,8 +14480,8 @@ packages: peek-readable: 5.0.0 dev: true - /style-to-object@0.3.0: - resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + /style-to-object@0.4.1: + resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} dependencies: inline-style-parser: 0.1.1 dev: false @@ -14380,6 +14509,24 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 + /styled-jsx@5.1.1(@babel/core@7.21.0)(react@18.2.0): + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.21.0 + client-only: 0.0.1 + react: 18.2.0 + dev: false + /stylis@4.1.3: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false @@ -14398,6 +14545,19 @@ packages: symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + /sucrase@3.31.0: + resolution: {integrity: sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: false + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -14433,11 +14593,19 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.3.1 + tslib: 2.5.0 + dev: false + /tabbable@5.3.3: resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} dev: false - /tailwindcss@2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1): + /tailwindcss@2.2.19(autoprefixer@10.4.14)(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} engines: {node: '>=12.13.0'} hasBin: true @@ -14446,7 +14614,7 @@ packages: postcss: ^8.0.9 dependencies: arg: 5.0.2 - autoprefixer: 10.4.13(postcss@8.4.21) + autoprefixer: 10.4.14(postcss@8.4.21) bytes: 3.1.2 chalk: 4.1.2 chokidar: 3.5.3 @@ -14458,7 +14626,7 @@ packages: fast-glob: 3.2.12 fs-extra: 10.1.0 glob-parent: 6.0.2 - html-tags: 3.2.0 + html-tags: 3.3.1 is-color-stop: 1.1.0 is-glob: 4.0.3 lodash: 4.17.21 @@ -14471,7 +14639,7 @@ packages: postcss-js: 3.0.3 postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) postcss-nested: 5.0.6(postcss@8.4.21) - postcss-selector-parser: 6.0.10 + postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 purgecss: 4.1.3 @@ -14483,6 +14651,46 @@ packages: - ts-node dev: false + /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): + resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} + engines: {node: '>=12.13.0'} + hasBin: true + peerDependencies: + postcss: ^8.0.9 + dependencies: + arg: 5.0.2 + chokidar: 3.5.3 + color-name: 1.1.4 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.2.12 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.18.2 + lilconfig: 2.0.6 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.21 + postcss-import: 14.1.0(postcss@8.4.21) + postcss-js: 4.0.1(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-nested: 6.0.0(postcss@8.4.21) + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + quick-lru: 5.1.1 + resolve: 1.22.1 + sucrase: 3.31.0 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: false + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} @@ -14513,7 +14721,19 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: false /thread-stream@2.2.0: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} @@ -14534,6 +14754,13 @@ packages: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: false + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false @@ -14665,10 +14892,19 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false + /ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + dev: false + /ts-easing@0.2.0: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: false + /ts-jest@29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14695,7 +14931,7 @@ packages: bs-logger: 0.2.6 esbuild: 0.17.12 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -14704,7 +14940,7 @@ packages: typescript: 4.9.5 yargs-parser: 21.1.1 - /ts-node@10.9.1(@types/node@18.15.5)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@18.15.11)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14723,7 +14959,7 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.5 + '@types/node': 18.15.11 acorn: 8.8.1 acorn-walk: 8.2.0 arg: 4.1.3 @@ -14748,12 +14984,18 @@ packages: typescript: 4.9.5 dev: true + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.7 + strip-bom: 3.0.0 + dev: false + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false @@ -14769,7 +15011,6 @@ packages: dependencies: tslib: 1.14.1 typescript: 4.9.5 - dev: true /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} @@ -14791,7 +15032,7 @@ packages: dependencies: '@babel/parser': 7.21.2 '@babel/template': 7.20.7 - autoprefixer: 10.4.13(postcss@8.4.21) + autoprefixer: 10.4.14(postcss@8.4.21) babel-plugin-macros: 2.8.0 chalk: 4.1.2 clean-set: 1.1.2 @@ -14802,7 +15043,7 @@ packages: lodash.merge: 4.6.2 postcss: 8.4.21 string-similarity: 4.0.4 - tailwindcss: 2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1) + tailwindcss: 2.2.19(autoprefixer@10.4.14)(postcss@8.4.21)(ts-node@10.9.1) timsort: 0.3.0 transitivePeerDependencies: - ts-node @@ -14820,7 +15061,6 @@ packages: engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -14834,7 +15074,6 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -14886,7 +15125,6 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} @@ -14944,7 +15182,7 @@ packages: is-buffer: 2.0.5 is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.5 + vfile: 5.3.2 dev: false /unique-string@3.0.0: @@ -14954,53 +15192,49 @@ packages: crypto-random-string: 4.0.0 dev: true - /unist-builder@3.0.0: - resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /unist-util-generated@2.0.0: - resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} + /unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} dev: false /unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} dev: false - /unist-util-is@5.1.1: - resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + dependencies: + '@types/unist': 2.0.6 dev: false - /unist-util-position-from-estree@1.1.1: - resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} + /unist-util-position-from-estree@1.1.2: + resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-position@4.0.3: - resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} + /unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-remove-position@4.0.1: - resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} + /unist-util-remove-position@4.0.2: + resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} dependencies: '@types/unist': 2.0.6 - unist-util-visit: 4.1.1 + unist-util-visit: 4.1.2 dev: false /unist-util-remove@3.1.0: resolution: {integrity: sha512-rO/sIghl13eN8irs5OBN2a4RC10MsJdiePCfwrvnzGtgIbHcDXr2REr0qi9F2r/CIb1r9FyyFmcMRIGs+EyUFw==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 dev: false - /unist-util-stringify-position@3.0.2: - resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} dependencies: '@types/unist': 2.0.6 dev: false @@ -15012,11 +15246,11 @@ packages: unist-util-is: 4.1.0 dev: false - /unist-util-visit-parents@5.1.1: - resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 + unist-util-is: 5.2.1 dev: false /unist-util-visit@2.0.3: @@ -15027,12 +15261,12 @@ packages: unist-util-visit-parents: 3.1.1 dev: false - /unist-util-visit@4.1.1: - resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} dependencies: '@types/unist': 2.0.6 - unist-util-is: 5.1.1 - unist-util-visit-parents: 5.1.1 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 dev: false /universalify@0.1.2: @@ -15179,6 +15413,11 @@ packages: engines: {node: '>= 0.4.0'} dev: true + /uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + hasBin: true + dev: false + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -15222,11 +15461,11 @@ packages: engines: {node: '>= 0.8'} dev: true - /vfile-location@4.0.1: - resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} + /vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} dependencies: '@types/unist': 2.0.6 - vfile: 5.3.5 + vfile: 5.3.2 dev: false /vfile-matter@3.0.1: @@ -15237,11 +15476,11 @@ packages: js-yaml: 4.1.0 dev: false - /vfile-message@3.1.2: - resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} + /vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} dependencies: '@types/unist': 2.0.6 - unist-util-stringify-position: 3.0.2 + unist-util-stringify-position: 3.0.3 dev: false /vfile@5.3.2: @@ -15249,20 +15488,20 @@ packages: dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 dev: false - /vfile@5.3.5: - resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} dependencies: '@types/unist': 2.0.6 is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.2 - vfile-message: 3.1.2 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 dev: false - /vite@4.2.1(@types/node@18.15.5): + /vite@4.2.1(@types/node@18.15.11): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -15287,7 +15526,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.5 + '@types/node': 18.15.11 esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 @@ -15360,6 +15599,10 @@ packages: engines: {node: '>= 14'} dev: false + /web-worker@1.2.0: + resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + dev: false + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -15421,7 +15664,6 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} @@ -15430,7 +15672,6 @@ packages: is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} @@ -15453,7 +15694,6 @@ packages: for-each: 0.3.3 has-tostringtag: 1.0.0 is-typed-array: 1.1.9 - dev: true /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -15479,7 +15719,6 @@ packages: /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} - dev: true /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} @@ -15655,6 +15894,6 @@ packages: react: 17.0.2 dev: false - /zwitch@2.0.2: - resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} dev: false From 483218200c83738ada684b088b60937aa63bd1f8 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 8 Apr 2023 02:50:00 +0800 Subject: [PATCH 038/122] fix: tests --- package.json | 11 ++--- packages/cli/package.json | 2 +- .../cli/src/commands/default/fetchSchema.ts | 1 - packages/cli/src/config.ts | 1 - packages/cli/src/deps.ts | 2 +- packages/cli/src/introspection.ts | 6 +-- pnpm-lock.yaml | 40 ++++++++----------- 7 files changed, 26 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index 6150bed7a..af6979875 100644 --- a/package.json +++ b/package.json @@ -66,14 +66,15 @@ }, "pnpm": { "overrides": { - "trim@<0.0.3": ">=0.0.3", - "glob-parent@<5.1.2": ">=5.1.2", - "mermaid@<8.13.8": ">=8.13.8", "@braintree/sanitize-url@<6.0.0": ">=6.0.0", + "d3-color@<3.1.0": ">=3.1.0", "dset@<3.1.2": ">=3.1.2", - "mermaid@>=8.0.0 <9.1.2": ">=9.1.2", + "glob-parent@<5.1.2": ">=5.1.2", "mdx-mermaid@<1.3.0": ">=1.3.0", - "d3-color@<3.1.0": ">=3.1.0" + "mermaid@<8.13.8": ">=8.13.8", + "mermaid@>=8.0.0 <9.1.2": ">=9.1.2", + "trim@<0.0.3": ">=0.0.3", + "undici": "5.7.0" }, "patchedDependencies": { "use-sync-external-store@1.2.0": "patches/use-sync-external-store@1.2.0.patch" diff --git a/packages/cli/package.json b/packages/cli/package.json index be49a16a1..61f233158 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -62,6 +62,7 @@ "changesets-github-release": "^0.1.0", "commander": "^10.0.0", "cosmiconfig": "^8.1.3", + "cross-fetch": "^3.1.5", "esbuild": "^0.17.12", "fast-glob": "^3.2.12", "graphql": "^16.0.0", @@ -81,7 +82,6 @@ "trading-signals": "^3.7.0", "tslib": "^2.5.0", "typescript": "^4.9.5", - "undici": "^5.21.0", "wait-on": "^7.0.1" }, "publishConfig": { diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts index d2880babc..f32afc049 100644 --- a/packages/cli/src/commands/default/fetchSchema.ts +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -2,7 +2,6 @@ import { AsyncExecutor } from '@graphql-tools/utils'; import { buildSchema, GraphQLSchema, type ExecutionResult } from 'graphql'; import { readFile } from 'node:fs/promises'; import { extname } from 'path'; -import { type RequestInit, type Response } from 'undici'; import { type GQtyConfig } from '../../config'; import * as deps from '../../deps'; import { convertHeadersInput } from './convertHeadersInput'; diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index fe32ef0b3..904c7d1e5 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -1,7 +1,6 @@ import { promises } from 'node:fs'; import { createRequire } from 'node:module'; import { resolve } from 'node:path'; -import { type RequestInit } from 'undici'; import * as deps from './deps.js'; import { type GenerateOptions } from './generate'; import { __innerState } from './innerState'; diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index 4da722e7b..131bc0199 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -7,6 +7,7 @@ export { printSchemaWithDirectives } from '@graphql-tools/utils'; export { schemaFromExecutor, wrapSchema } from '@graphql-tools/wrap'; export { program } from 'commander'; export { cosmiconfig, type Loader } from 'cosmiconfig'; +export { fetch } from 'cross-fetch'; export { default as fg } from 'fast-glob'; export { default as inquirer } from 'inquirer'; export { default as sortBy } from 'lodash-es/sortBy.js'; @@ -15,5 +16,4 @@ export { default as mkdirp } from 'mkdirp'; export { default as ms } from 'ms'; export { default as prettier, type Options as PrettierOptions } from 'prettier'; export { FasterSMA as SMA } from 'trading-signals'; -export { fetch } from 'undici'; export { micromatch }; diff --git a/packages/cli/src/introspection.ts b/packages/cli/src/introspection.ts index 2d35d2495..c1c4a8f39 100644 --- a/packages/cli/src/introspection.ts +++ b/packages/cli/src/introspection.ts @@ -30,8 +30,7 @@ export const getRemoteSchema = async ( (await loadOrGenerateConfig()).config.introspection?.headers || defaultConfig.introspection.headers; const query = graphql.print(document); - const { request } = await import('undici'); - const { body } = await request(endpoint, { + const response = await deps.fetch(endpoint, { method: 'POST', headers: { 'Content-Type': 'application/json', @@ -39,9 +38,8 @@ export const getRemoteSchema = async ( }, body: JSON.stringify({ query, variables }), }); - const response = await body.json(); - return response; + return await response.json(); }; const schema = deps.wrapSchema({ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a07d4c427..dd63fa313 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,14 +1,15 @@ lockfileVersion: '6.0' overrides: - trim@<0.0.3: '>=0.0.3' - glob-parent@<5.1.2: '>=5.1.2' - mermaid@<8.13.8: '>=8.13.8' '@braintree/sanitize-url@<6.0.0': '>=6.0.0' + d3-color@<3.1.0: '>=3.1.0' dset@<3.1.2: '>=3.1.2' - mermaid@>=8.0.0 <9.1.2: '>=9.1.2' + glob-parent@<5.1.2: '>=5.1.2' mdx-mermaid@<1.3.0: '>=1.3.0' - d3-color@<3.1.0: '>=3.1.0' + mermaid@<8.13.8: '>=8.13.8' + mermaid@>=8.0.0 <9.1.2: '>=9.1.2' + trim@<0.0.3: '>=0.0.3' + undici: 5.7.0 patchedDependencies: use-sync-external-store@1.2.0: @@ -631,6 +632,9 @@ importers: cosmiconfig: specifier: ^8.1.3 version: 8.1.3 + cross-fetch: + specifier: ^3.1.5 + version: 3.1.5 esbuild: specifier: ^0.17.12 version: 0.17.12 @@ -688,9 +692,6 @@ importers: typescript: specifier: ^4.9.5 version: 4.9.5 - undici: - specifier: ^5.21.0 - version: 5.21.0 wait-on: specifier: ^7.0.1 version: 7.0.1 @@ -4043,7 +4044,7 @@ packages: '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) '@types/node': 18.15.11 graphql: 16.6.0 - undici: 5.21.0 + undici: 5.7.0 dev: false /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): @@ -4542,7 +4543,7 @@ packages: remark-emoji: 3.0.2 shiki: 0.10.1 tiny-lru: 8.0.2 - undici: 5.0.0 + undici: 5.7.0 transitivePeerDependencies: - '@chakra-ui/react' - '@mdx-js/react' @@ -7123,6 +7124,7 @@ packages: engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 + dev: false /bytes-iec@3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} @@ -7681,7 +7683,7 @@ packages: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.6.7 - undici: 5.5.1 + undici: 5.7.0 web-streams-polyfill: 3.2.1 transitivePeerDependencies: - encoding @@ -14333,6 +14335,7 @@ packages: /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} + dev: false /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} @@ -15130,19 +15133,8 @@ packages: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} - /undici@5.0.0: - resolution: {integrity: sha512-VhUpiZ3No1DOPPQVQnsDZyfcbTTcHdcgWej1PdFnSvOeJmOVDgiOHkunJmBLfmjt4CqgPQddPVjSWW0dsTs5Yg==} - engines: {node: '>=12.18'} - dev: false - - /undici@5.21.0: - resolution: {integrity: sha512-HOjK8l6a57b2ZGXOcUsI5NLfoTrfmbOl90ixJDl0AEFG4wgHNDQxtZy15/ZQp7HhjkpaGlp/eneMgtsu1dIlUA==} - engines: {node: '>=12.18'} - dependencies: - busboy: 1.6.0 - - /undici@5.5.1: - resolution: {integrity: sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw==} + /undici@5.7.0: + resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} engines: {node: '>=12.18'} dev: false From 0ba6f67f617797def7b7167a6862df9ac11c2cb2 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 8 Apr 2023 03:37:48 +0800 Subject: [PATCH 039/122] fix: missing fetches in useQuery --- packages/react/src/query/useQuery.ts | 57 ++++++++++++---------------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 8910905eb..2c00e6ca9 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -13,8 +13,7 @@ import { prepass, RetryOptions, } from 'gqty'; -import pDefer from 'p-defer'; -import { useCallback, useEffect, useMemo } from 'react'; +import { useCallback, useEffect, useMemo, useRef } from 'react'; import { LegacyFetchPolicy, OnErrorHandler, @@ -68,6 +67,7 @@ export type UseQueryReturnValue = $state: UseQueryState; $refetch: () => Promise; }; + export interface UseQuery { ( options?: UseQueryOptions @@ -86,8 +86,8 @@ export const createUseQuery = }: ReactClientOptionsWithDefaults ): UseQuery => ({ - fetchPolicy = 'cache-first', - cachePolicy = translateFetchPolicy(fetchPolicy), + fetchPolicy, + cachePolicy = translateFetchPolicy(fetchPolicy ?? 'cache-first'), notifyOnNetworkStatusChange = true, onError, operationName, @@ -107,7 +107,6 @@ export const createUseQuery = accessor: { query }, context, resolve, - subscribe, selections, } = useMemo( () => @@ -150,36 +149,24 @@ export const createUseQuery = if (state.promise && !context.hasCacheHit) throw state.promise; } - // Normal fetch - useEffect(() => { - if (state.promise !== undefined) return; - - const { resolve, reject, promise } = pDefer(); - - if (context.shouldFetch) { - setState({ promise }); - } - - return subscribe({ - onNext: () => debouncedRender(), - onError(error) { - const theError = GQtyError.create(error); + // Subscribe current selection to cache changes. Selection size changes + // after render, useEffect deps does not serve the purpose. We are using + // refs and checks for re-subscriptions. + { + const selectionSizeRef = useRef(0); + const unsubscribeRef = useRef<() => void>(); - onError?.(theError); - setState({ error: theError }); - reject(theError); - }, - onComplete() { - context.shouldFetch = false; - context.hasCacheHit = false; - context.hasCacheMiss = false; - context.notifyCacheUpdate = cachePolicy !== 'default'; + useEffect(() => { + if (selections.size === selectionSizeRef.current) return; + selectionSizeRef.current = selections.size; - setState({}); - resolve(); - }, - }); - }, [cachePolicy, context.shouldFetch]); + unsubscribeRef.current?.(); + unsubscribeRef.current = context.cache.subscribe( + [...selections].map((s) => s.cacheKeys.join('.')), + debouncedRender + ); + }, [debouncedRender, selections.size]); + } const refetch = useCallback( async (force = false) => { @@ -214,6 +201,10 @@ export const createUseQuery = [cachePolicy, context.shouldFetch, operationName, selections] ); + useEffect(() => { + refetch(); + }); + // Legacy staleWhileRevalidate const swrDiff = usePrevious(staleWhileRevalidate); useUpdateEffect(() => { From 8610d0493c64e86ef67882f087a20554677c90f8 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 8 Apr 2023 03:38:10 +0800 Subject: [PATCH 040/122] fix: incorrect suspense in usePrepared --- packages/react/src/query/preparedQuery.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/react/src/query/preparedQuery.ts b/packages/react/src/query/preparedQuery.ts index 181f98a7c..15a29b55c 100644 --- a/packages/react/src/query/preparedQuery.ts +++ b/packages/react/src/query/preparedQuery.ts @@ -58,7 +58,7 @@ export interface PrepareQuery { } export function createPrepareQuery( - { prefetch, query, refetch: refetchClient }: GQtyClient, + { prefetch, query, refetch: clientRefetch }: GQtyClient, { defaults: { preparedSuspense: defaultSuspense }, }: ReactClientOptionsWithDefaults @@ -83,9 +83,13 @@ export function createPrepareQuery( isRefetching: false, }); - const promise = prefetch((query) => fn(query, args)) as Promise; + const promise = prefetch((query) => fn(query, args)) as + | Promise + | TData; - store.add({ promise }); + if (promise instanceof Promise) { + store.add({ promise }); + } try { const data = await promise; @@ -118,7 +122,7 @@ export function createPrepareQuery( isRefetching: true, }); - const promise = refetchClient(() => fn(query, args)) as Promise; + const promise = clientRefetch(() => fn(query, args)) as Promise; store.add({ promise }); From ead42abf267f4fb8a222dbc683af2ac07b3b3bde Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 8 Apr 2023 03:49:49 +0800 Subject: [PATCH 041/122] chore: add sensible comments --- packages/react/src/query/useQuery.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 2c00e6ca9..2d20afca8 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -150,8 +150,8 @@ export const createUseQuery = } // Subscribe current selection to cache changes. Selection size changes - // after render, useEffect deps does not serve the purpose. We are using - // refs and checks for re-subscriptions. + // after render so it cannot be done via useEffect, instead refs has to be + // used. { const selectionSizeRef = useRef(0); const unsubscribeRef = useRef<() => void>(); @@ -201,6 +201,9 @@ export const createUseQuery = [cachePolicy, context.shouldFetch, operationName, selections] ); + // context.shouldFetch only changes during component render, which happens + // after this hook is called. A useEffect hook that runs every render + // triggers a post-render check. useEffect(() => { refetch(); }); From 5f8aad92d7060e3de4f13ba4489739562b6b7ed3 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 8 Apr 2023 04:30:42 +0800 Subject: [PATCH 042/122] feat: rename introspectionOptions to introspections --- packages/cli/src/commands/default.ts | 10 +++++----- packages/cli/src/commands/default/fetchSchema.ts | 2 +- packages/cli/src/config.ts | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index 18198da27..76d041595 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -67,16 +67,16 @@ export const addCommand = (command: Command) => { } // Make sure we have a object for `fetchSchemas` to fill in user headers. - if (!config.introspectionOptions) { - config.introspectionOptions = {}; + if (!config.introspections) { + config.introspections = {}; } const schema = await fetchSchemas(endpoints, { headers: convertHeadersInput(options.header), - headersByEndpoint: config.introspectionOptions, + headersByEndpoint: config.introspections, }); - if (Object.keys(config.introspectionOptions ?? {}).length > 0) { + if (Object.keys(config.introspections ?? {}).length > 0) { // TODO: Save config to file. } @@ -183,7 +183,7 @@ export const addCommand = (command: Command) => { try { const schema = await fetchSchemas(endpoints, { headers: convertHeadersInput(options.header), - headersByEndpoint: config.introspectionOptions, + headersByEndpoint: config.introspections, silent: true, }); diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts index f32afc049..981021439 100644 --- a/packages/cli/src/commands/default/fetchSchema.ts +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -21,7 +21,7 @@ export class FetchError extends Error { export type FetchSchemasOptions = { headers?: Record; - headersByEndpoint?: GQtyConfig['introspectionOptions']; + headersByEndpoint?: GQtyConfig['introspections']; silent?: boolean; }; diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 904c7d1e5..81a6feee0 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -29,7 +29,7 @@ export type GQtyConfig = GenerateOptions & { * } * ``` */ - introspectionOptions?: Record>; + introspections?: Record>; /** * Client generation destination */ @@ -53,7 +53,7 @@ export type SetRequired = Omit & export const defaultConfig: SetRequired< GQtyConfig, - Exclude + Exclude > = { react: (() => { try { @@ -201,15 +201,15 @@ export function getValidConfig(v: unknown): GQtyConfig { } break; } - case 'introspectionOptions': { + case 'introspections': { if (isPlainObject(value)) { - const introspectionOptions: GQtyConfig['introspectionOptions'] = {}; + const introspections: GQtyConfig['introspections'] = {}; for (const [endpoint, httpExecutorOptions] of Object.entries( value )) { if (isPlainObject(httpExecutorOptions)) { - introspectionOptions[endpoint] = httpExecutorOptions; + introspections[endpoint] = httpExecutorOptions; } else { warnConfig( `${key}.${endpoint}`, @@ -220,7 +220,7 @@ export function getValidConfig(v: unknown): GQtyConfig { } } - newConfig[key] = introspectionOptions; + newConfig[key] = introspections; } else { warnConfig(key, value, 'object', defaultConfig[key]); } From c951adba741c40786175a89a2e608ef689fdac1b Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 11 Apr 2023 11:50:53 +0800 Subject: [PATCH 043/122] fix(deps): upgrade faulty multidict --- packages/gqty/package.json | 2 +- pnpm-lock.yaml | 370 ++++++++++++++++++++++++++++++++++--- 2 files changed, 341 insertions(+), 31 deletions(-) diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 9ec13cab9..d8ec0d5ea 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -48,7 +48,7 @@ "just-memoize": "^2.2.0", "just-safe-get": "^4.2.0", "just-safe-set": "^4.2.1", - "multidict": "^1.0.5", + "multidict": "^1.0.6", "object-hash": "^3.0.0", "p-defer": "^3.0.0", "p-lazy": "^3.1.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd63fa313..9dd8c7237 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,7 +94,7 @@ importers: version: 7.3.8 ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.15.11)(typescript@4.9.5) @@ -173,7 +173,7 @@ importers: version: link:../../packages/gqty/dist next: specifier: ^13.3.0 - version: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0) + version: 13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0) postcss: specifier: 8.4.21 version: 8.4.21 @@ -397,7 +397,7 @@ importers: version: 0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) '@rollup/plugin-babel': specifier: ^6.0.3 - version: 6.0.3(@babel/core@7.21.0) + version: 6.0.3(@babel/core@7.21.4) '@types/jest': specifier: ^29.5.0 version: 29.5.0 @@ -427,7 +427,7 @@ importers: version: 1.2.3 ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + version: 29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) wait-for-expect: specifier: ^3.0.2 version: 3.0.2 @@ -467,13 +467,13 @@ importers: dependencies: '@chakra-ui/icons': specifier: ^1.1.7 - version: 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) + version: 1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2) '@chakra-ui/react': specifier: ^1.8.9 version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/theme-tools': specifier: ^1.3.6 - version: 1.3.6(@chakra-ui/system@1.12.1) + version: 1.3.6(@chakra-ui/system@2.5.5) '@chakra-ui/utils': specifier: ^1.10.4 version: 1.10.4 @@ -506,7 +506,7 @@ importers: version: 22.4.13 next: specifier: ^12.3.4 - version: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + version: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) next-i18next: specifier: ^13.2.2 version: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) @@ -718,8 +718,8 @@ importers: specifier: ^4.2.1 version: 4.2.1 multidict: - specifier: ^1.0.5 - version: 1.0.5 + specifier: ^1.0.6 + version: 1.0.6 object-hash: specifier: ^3.0.0 version: 3.0.0 @@ -1188,6 +1188,13 @@ packages: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true @@ -1229,6 +1236,12 @@ packages: dependencies: '@babel/highlight': 7.18.6 + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + /@babel/compat-data@7.21.4: resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} engines: {node: '>=6.9.0'} @@ -1255,6 +1268,28 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.21.4: + resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.4 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.4 + '@babel/types': 7.21.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/generator@7.21.1: resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} engines: {node: '>=6.9.0'} @@ -1264,6 +1299,15 @@ packages: '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 + /@babel/generator@7.21.4: + resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -1291,6 +1335,19 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): + resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} @@ -1492,6 +1549,13 @@ packages: dependencies: '@babel/types': 7.21.4 + /@babel/parser@7.21.4: + resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.4 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -2398,6 +2462,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.21.4: + resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.4 + '@babel/types': 7.21.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.21.4: resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} engines: {node: '>=6.9.0'} @@ -2453,6 +2534,10 @@ packages: '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false + /@chakra-ui/anatomy@2.1.2: + resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} + dev: false + /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: @@ -2542,6 +2627,15 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/color-mode@2.1.12(react@17.0.2): + resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@17.0.2) + react: 17.0.2 + dev: false + /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: @@ -2644,14 +2738,25 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/icons@1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2): + /@chakra-ui/icon@2.0.5(@chakra-ui/system@2.5.5)(react@17.0.2): + resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} + peerDependencies: + '@chakra-ui/system': '>=1.0.0' + react: '>=16.8.6' + dependencies: + '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/utils': 1.10.4 + react: 17.0.2 + dev: false + + /@chakra-ui/icons@1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' react: '>=16.8.6' dependencies: - '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) - '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@2.5.5)(react@17.0.2) + '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false @@ -2777,6 +2882,10 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/object-utils@2.0.8: + resolution: {integrity: sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q==} + dev: false + /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: @@ -2887,6 +2996,14 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@17.0.2): + resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 17.0.2 + dev: false + /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: @@ -2896,6 +3013,15 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/react-utils@2.0.12(react@17.0.2): + resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/utils': 2.0.15 + react: 17.0.2 + dev: false + /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: @@ -2973,6 +3099,10 @@ packages: react: 17.0.2 dev: false + /@chakra-ui/shared-utils@2.0.5: + resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} + dev: false + /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: @@ -3036,6 +3166,14 @@ packages: csstype: 3.0.9 dev: false + /@chakra-ui/styled-system@2.8.0: + resolution: {integrity: sha512-bmRv/8ACJGGKGx84U1npiUddwdNifJ+/ETklGwooS5APM0ymwUtBYZpFxjYNJrqvVYpg3mVY6HhMyBVptLS7iA==} + dependencies: + '@chakra-ui/shared-utils': 2.0.5 + csstype: 3.1.1 + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: @@ -3067,6 +3205,25 @@ packages: react-fast-compare: 3.2.0 dev: false + /@chakra-ui/system@2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): + resolution: {integrity: sha512-52BIp/Zyvefgxn5RTByfkTeG4J+y81LWEjWm8jCaRFsLVm8IFgqIrngtcq4I7gD5n/UKbneHlb4eLHo4uc5yDQ==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + dependencies: + '@chakra-ui/color-mode': 2.1.12(react@17.0.2) + '@chakra-ui/object-utils': 2.0.8 + '@chakra-ui/react-utils': 2.0.12(react@17.0.2) + '@chakra-ui/styled-system': 2.8.0 + '@chakra-ui/theme-utils': 2.0.15 + '@chakra-ui/utils': 2.0.15 + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + react: 17.0.2 + react-fast-compare: 3.2.1 + dev: false + /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: @@ -3127,6 +3284,36 @@ packages: '@ctrl/tinycolor': 3.4.1 dev: false + /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@2.5.5): + resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} + peerDependencies: + '@chakra-ui/system': '>=1.0.0' + dependencies: + '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/utils': 1.10.4 + '@ctrl/tinycolor': 3.4.1 + dev: false + + /@chakra-ui/theme-tools@2.0.17(@chakra-ui/styled-system@2.8.0): + resolution: {integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.8.0 + color2k: 2.0.2 + dev: false + + /@chakra-ui/theme-utils@2.0.15: + resolution: {integrity: sha512-UuxtEgE7gwMTGDXtUpTOI7F5X0iHB9ekEOG5PWPn2wWBL7rlk2JtPI7UP5Um5Yg6vvBfXYGK1ySahxqsgf+87g==} + dependencies: + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.8.0 + '@chakra-ui/theme': 3.0.1(@chakra-ui/styled-system@2.8.0) + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: @@ -3138,6 +3325,17 @@ packages: '@chakra-ui/utils': 1.10.4 dev: false + /@chakra-ui/theme@3.0.1(@chakra-ui/styled-system@2.8.0): + resolution: {integrity: sha512-92kDm/Ux/51uJqhRKevQo/O/rdwucDYcpHg2QuwzdAxISCeYvgtl2TtgOOl5EnqEP0j3IEAvZHZUlv8TTbawaw==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.2 + '@chakra-ui/shared-utils': 2.0.5 + '@chakra-ui/styled-system': 2.8.0 + '@chakra-ui/theme-tools': 2.0.17(@chakra-ui/styled-system@2.8.0) + dev: false + /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: @@ -3199,6 +3397,15 @@ packages: lodash.mergewith: 4.6.2 dev: false + /@chakra-ui/utils@2.0.15: + resolution: {integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==} + dependencies: + '@types/lodash.mergewith': 4.6.7 + css-box-model: 1.2.1 + framesync: 6.1.2 + lodash.mergewith: 4.6.2 + dev: false + /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: @@ -4462,7 +4669,7 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/icons': 1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2) '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) @@ -4474,7 +4681,7 @@ packages: immer: 9.0.12 mdx-mermaid: 1.3.2(mermaid@10.1.0)(react@17.0.2)(unist-util-visit@2.0.3) mermaid: 10.1.0(react-dom@17.0.2)(react@17.0.2) - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) nprogress: 0.2.0 @@ -4535,7 +4742,7 @@ packages: github-slugger: 1.4.0 globby: 13.1.1 gray-matter: 4.0.3 - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -4838,6 +5045,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} @@ -4849,12 +5064,21 @@ packages: /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -5525,7 +5749,7 @@ packages: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true - /@rollup/plugin-babel@6.0.3(@babel/core@7.21.0): + /@rollup/plugin-babel@6.0.3(@babel/core@7.21.4): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5538,7 +5762,7 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-module-imports': 7.21.4 '@rollup/pluginutils': 5.0.2 dev: false @@ -6021,9 +6245,19 @@ packages: '@types/lodash': 4.14.191 dev: false + /@types/lodash.mergewith@4.6.7: + resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} + dependencies: + '@types/lodash': 4.14.192 + dev: false + /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} + /@types/lodash@4.14.192: + resolution: {integrity: sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==} + dev: false + /@types/mdast@3.0.11: resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} dependencies: @@ -7425,6 +7659,10 @@ packages: simple-swizzle: 0.2.2 dev: false + /color2k@2.0.2: + resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} + dev: false + /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: @@ -9392,6 +9630,12 @@ packages: tslib: 2.5.0 dev: false + /framesync@6.1.2: + resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} + dependencies: + tslib: 2.4.0 + dev: false + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -12003,10 +12247,8 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /multidict@1.0.5: - resolution: {integrity: sha512-xdgjZeoqBQcsinnaglxw/lLTcEicRQ3PZq8/yUIXzVXQ6ZfkUDljvOm6goZ6oINkwYqna3rapMon1N4GEtQD7Q==} - dependencies: - multidict: link:../multidict + /multidict@1.0.6: + resolution: {integrity: sha512-URJf4Q7p/rYDSUt4rIo4PyAxSMQaG27YBNE6CFaEJ1HSxr1WeYaXe/b4Kv9dp2842qWjz/LYCWg9SpNXkGZ4Ww==} dev: false /multimatch@4.0.0: @@ -12088,7 +12330,7 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 22.4.13 i18next-fs-backend: 2.1.1 - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-i18next: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) dev: false @@ -12104,7 +12346,7 @@ packages: chokidar: 3.5.3 commander: 5.1.0 express: 4.18.2 - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) transitivePeerDependencies: - supports-color dev: true @@ -12116,7 +12358,7 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2) + next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 react-dom: 17.0.2(react@17.0.2) dev: false @@ -12165,7 +12407,51 @@ packages: - '@babel/core' - babel-plugin-macros - /next@13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0): + /next@12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2): + resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} + engines: {node: '>=12.22.0'} + hasBin: true + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^6.0.0 || ^7.0.0 + react: ^17.0.2 || ^18.0.0-0 + react-dom: ^17.0.2 || ^18.0.0-0 + sass: ^1.3.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + dependencies: + '@next/env': 12.3.4 + '@swc/helpers': 0.4.11 + caniuse-lite: 1.0.30001474 + postcss: 8.4.14 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + styled-jsx: 5.0.7(@babel/core@7.21.4)(react@17.0.2) + use-sync-external-store: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) + optionalDependencies: + '@next/swc-android-arm-eabi': 12.3.4 + '@next/swc-android-arm64': 12.3.4 + '@next/swc-darwin-arm64': 12.3.4 + '@next/swc-darwin-x64': 12.3.4 + '@next/swc-freebsd-x64': 12.3.4 + '@next/swc-linux-arm-gnueabihf': 12.3.4 + '@next/swc-linux-arm64-gnu': 12.3.4 + '@next/swc-linux-arm64-musl': 12.3.4 + '@next/swc-linux-x64-gnu': 12.3.4 + '@next/swc-linux-x64-musl': 12.3.4 + '@next/swc-win32-arm64-msvc': 12.3.4 + '@next/swc-win32-ia32-msvc': 12.3.4 + '@next/swc-win32-x64-msvc': 12.3.4 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + /next@13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} engines: {node: '>=14.6.0'} hasBin: true @@ -12193,7 +12479,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.21.0)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.21.4)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 13.3.0 '@next/swc-darwin-x64': 13.3.0 @@ -13189,6 +13475,10 @@ packages: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false + /react-fast-compare@3.2.1: + resolution: {integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==} + dev: false + /react-focus-lock@2.5.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==} peerDependencies: @@ -14512,7 +14802,23 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 - /styled-jsx@5.1.1(@babel/core@7.21.0)(react@18.2.0): + /styled-jsx@5.0.7(@babel/core@7.21.4)(react@17.0.2): + resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + dependencies: + '@babel/core': 7.21.4 + react: 17.0.2 + + /styled-jsx@5.1.1(@babel/core@7.21.4)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -14525,7 +14831,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 client-only: 0.0.1 react: 18.2.0 dev: false @@ -14908,7 +15214,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false - /ts-jest@29.0.5(@babel/core@7.21.0)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): + /ts-jest@29.0.5(@babel/core@7.21.4)(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14929,7 +15235,7 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@jest/types': 29.5.0 bs-logger: 0.2.6 esbuild: 0.17.12 @@ -14999,6 +15305,10 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false From f89993a1edd5a00596db6d880670e03f4755a65b Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 11 Apr 2023 16:18:24 +0800 Subject: [PATCH 044/122] fix: tests --- packages/gqty/src/Client/context.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index 78b3ef0fa..0909f009d 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -43,7 +43,7 @@ export const createContext = ({ cachePolicy === 'no-cache' || cachePolicy === 'no-store' || cachePolicy === 'reload' - ? new Cache(undefined, { maxAge: 0, normalization: false }) + ? new Cache(undefined, { maxAge: Infinity }) : cache, cacheOptions: { includeExpired: From a3af94b0bce9198100bb20e6e9bd2e9662cae444 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 12 Apr 2023 02:08:06 +0800 Subject: [PATCH 045/122] chore(deps): changeset version --- .changeset/pre.json | 6 ++++- examples/github/package.json | 6 ++--- examples/gnt/package.json | 6 ++--- examples/react/package.json | 10 +++---- examples/vite-example/package.json | 6 ++--- internal/test-utils/package.json | 3 +++ packages/cli/CHANGELOG.md | 11 -------- packages/cli/package.json | 9 ++++--- packages/gqty/package.json | 5 +++- packages/logger/package.json | 11 +++++--- packages/react/CHANGELOG.md | 19 ------------- packages/react/package.json | 11 +++++--- packages/subscriptions/package.json | 8 +++--- pnpm-lock.yaml | 42 ++++++++++++++--------------- 14 files changed, 71 insertions(+), 82 deletions(-) diff --git a/.changeset/pre.json b/.changeset/pre.json index fe5f9163c..70052b955 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -12,10 +12,12 @@ "gqty": "2.3.0", "@gqty/logger": "2.0.2", "@gqty/react": "2.1.1", - "@gqty/subscriptions": "2.0.1" + "@gqty/subscriptions": "2.0.1", + "example-gnt": "0.1.0" }, "changesets": [ "afraid-flowers-thank", + "curvy-dragons-smell", "cyan-seas-relax", "dull-hotels-listen", "empty-worms-smell", @@ -23,11 +25,13 @@ "gold-lemons-pump", "grumpy-clouds-notice", "hip-kangaroos-give", + "lemon-bags-behave", "metal-windows-fly", "moody-onions-exercise", "polite-maps-draw", "polite-wolves-explode", "rare-pets-tan", + "real-camels-run", "seven-rings-retire", "small-fishes-dress", "small-penguins-invent", diff --git a/examples/github/package.json b/examples/github/package.json index 1aae2d999..2fe81fdb0 100644 --- a/examples/github/package.json +++ b/examples/github/package.json @@ -10,10 +10,10 @@ "test:manual": "jest -u" }, "dependencies": { - "@gqty/cli": "workspace:^4.0.0-alpha.0", + "@gqty/cli": "workspace:^", "dotenv": "^16.0.3", - "gqty": "workspace:^3.0.0-alpha.0", - "test-utils": "workspace:^0.1.0" + "gqty": "workspace:^", + "test-utils": "workspace:^" }, "devDependencies": { "@types/node": "^18.15.5", diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 587b05ccf..4646782c1 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -1,5 +1,5 @@ { - "name": "ngt", + "name": "example-gnt", "version": "0.1.0", "private": true, "scripts": { @@ -9,7 +9,7 @@ "lint": "next lint" }, "dependencies": { - "@gqty/react": "workspace:3.0.0-alpha.0", + "@gqty/react": "workspace:^", "@react-hookz/web": "^22.0.0", "@types/node": "18.15.11", "@types/react": "^17.0.53", @@ -17,7 +17,7 @@ "autoprefixer": "10.4.14", "eslint": "^8.35.0", "eslint-config-next": "13.3.0", - "gqty": "workspace:3.0.0-alpha.0", + "gqty": "workspace:^", "next": "^13.3.0", "postcss": "8.4.21", "react": "^18.2.0", diff --git a/examples/react/package.json b/examples/react/package.json index a58412083..cff722d1d 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -14,10 +14,10 @@ "@emotion/styled": "^11.10.6", "@envelop/core": "^3.0.6", "@faker-js/faker": "^7.6.0", - "@gqty/cli": "workspace:^4.0.0-alpha.0", - "@gqty/logger": "workspace:^3.0.0-alpha.0", - "@gqty/react": "workspace:^3.0.0-alpha.0", - "@gqty/subscriptions": "workspace:^3.0.0-alpha.0", + "@gqty/cli": "workspace:^", + "@gqty/logger": "workspace:^", + "@gqty/react": "workspace:^", + "@gqty/subscriptions": "workspace:^", "@graphql-ez/fastify": "^0.12.0", "@graphql-ez/plugin-altair": "^0.11.0", "@graphql-ez/plugin-codegen": "^0.8.0", @@ -30,7 +30,7 @@ "extract-files": "^13.0.0", "fastify": "^4.15.0", "framer-motion": "^6.5.1", - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "graphql": "^16.6.0", "graphql-ez": "^0.16.0", "graphql-upload": "^13.0.0", diff --git a/examples/vite-example/package.json b/examples/vite-example/package.json index f551af950..a9e3f481b 100644 --- a/examples/vite-example/package.json +++ b/examples/vite-example/package.json @@ -9,9 +9,9 @@ "serve": "vite preview" }, "dependencies": { - "@gqty/cli": "workspace:^4.0.0-alpha.0", - "@gqty/react": "workspace:^3.0.0-alpha.0", - "gqty": "workspace:^3.0.0-alpha.0", + "@gqty/cli": "workspace:^", + "@gqty/react": "workspace:^", + "gqty": "workspace:^", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 8ed652285..9e535cd20 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -4,6 +4,9 @@ "private": true, "license": "MIT", "author": "PabloSzx ", + "maintainers": [ + "Vicary Archangel " + ], "main": "dist/index.js", "module": "dist/index.mjs", "types": "src/index.ts", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 862dba0e0..c4d0872fe 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,16 +1,5 @@ # @gqty/cli -## 4.0.0-alpha.0 - -### Major Changes - -- dropped inferrable types from generated schema -- generated query fetcher now takes a single QueryPayload parameter - -### Patch Changes - -- Upgraded to gqty@3.0.0-alpha.0 - ## 3.3.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 61f233158..796c84937 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/cli", - "version": "4.0.0-alpha.0", + "version": "3.3.0", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -8,6 +8,9 @@ }, "license": "MIT", "author": "PabloSzx ", + "maintainers": [ + "Vicary Archangel " + ], "sideEffects": false, "exports": { ".": { @@ -40,7 +43,7 @@ "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { - "gqty": "workspace:^3.0.0-alpha.0" + "gqty": "workspace:^" }, "devDependencies": { "@graphql-codegen/core": "^3.1.0", @@ -77,7 +80,7 @@ "rimraf": "^4.4.0", "serve": "^14.2.0", "size-limit": "^8.2.4", - "test-utils": "workspace:^0.1.0", + "test-utils": "workspace:^", "tmp-promise": "^3.0.3", "trading-signals": "^3.7.0", "tslib": "^2.5.0", diff --git a/packages/gqty/package.json b/packages/gqty/package.json index d8ec0d5ea..6c1624e63 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -1,6 +1,6 @@ { "name": "gqty", - "version": "3.0.0-alpha.0", + "version": "2.3.0", "description": "gqty client without queries", "homepage": "https://gqty.dev", "repository": { @@ -9,6 +9,9 @@ }, "license": "MIT", "author": "PabloSzx ", + "maintainers": [ + "Vicary Archangel " + ], "sideEffects": false, "exports": { ".": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 42a5dac9b..41e119050 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/logger", - "version": "3.0.0-alpha.0", + "version": "2.0.2", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -8,6 +8,9 @@ }, "license": "MIT", "author": "PabloSzx ", + "maintainers": [ + "Vicary Archangel " + ], "sideEffects": false, "exports": { ".": { @@ -46,15 +49,15 @@ "@types/prettier": "^2.7.2", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.12", - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "jest": "^29.5.0", "size-limit": "^8.2.4", - "test-utils": "workspace:^0.1.0", + "test-utils": "workspace:^", "tslib": "^2.5.0", "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^3.0.0-alpha.0" + "gqty": "workspace:^" }, "engines": { "node": "^12.20.0 || >=14.13.0" diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index 713bb80a4..51ee46ac2 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,24 +1,5 @@ # @gqty/react -## 3.0.0-alpha.0 - -### Major Changes - -- Fetch errors now throws to boundaries in suspense mode. - -### Minor Changes - -- Added `operationName` in `useTransactionQuery()` -- Upgraded to the new core -- Added `ResolverContainer` to replace scheduler for legacy resolvers. -- Added `retry` in `useQuery()` -- 11604f54: Window focus refetching -- 6626d802: Add `$refetch` in `useQuery()` - -### Patch Changes - -- Upgraded to gqty@3.0.0-alpha.0 - ## 2.1.1 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index c976419c1..7fa01ad44 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/react", - "version": "3.0.0-alpha.0", + "version": "2.1.1", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -8,6 +8,9 @@ }, "license": "MIT", "author": "PabloSzx ", + "maintainers": [ + "Vicary Archangel " + ], "sideEffects": false, "exports": { ".": { @@ -97,7 +100,7 @@ "esbuild": "^0.17.12", "eslint": "^8.35.0", "eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0", - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "graphql": "^16.6.0", "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", @@ -109,13 +112,13 @@ "react-test-renderer": "^17.0.2", "regenerator-runtime": "^0.13.11", "size-limit": "^8.2.4", - "test-utils": "workspace:^0.1.0", + "test-utils": "workspace:^", "tslib": "^2.5.0", "type-fest": "^3.6.1", "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "graphql": "*", "graphql-sse": "^2.1.0", "graphql-ws": "^5.11.3", diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json index a8b31e990..0afeab720 100644 --- a/packages/subscriptions/package.json +++ b/packages/subscriptions/package.json @@ -1,6 +1,6 @@ { "name": "@gqty/subscriptions", - "version": "3.0.0-alpha.0", + "version": "2.0.1", "homepage": "https://gqty.dev", "repository": { "type": "git", @@ -42,14 +42,14 @@ "@types/ws": "^8.5.4", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.10", - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "graphql": "^16.6.0", - "test-utils": "workspace:^0.1.0", + "test-utils": "workspace:^", "tslib": "^2.5.0", "typescript": "^4.9.5" }, "peerDependencies": { - "gqty": "workspace:^3.0.0-alpha.0", + "gqty": "workspace:^", "graphql": "*" }, "peerDependenciesMeta": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9dd8c7237..bb9b91644 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,16 +114,16 @@ importers: examples/github: dependencies: '@gqty/cli': - specifier: workspace:^4.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/cli/dist dotenv: specifier: ^16.0.3 version: 16.0.3 gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/gqty/dist test-utils: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../../internal/test-utils devDependencies: '@types/node': @@ -145,7 +145,7 @@ importers: examples/gnt: dependencies: '@gqty/react': - specifier: workspace:3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/react/dist '@react-hookz/web': specifier: ^22.0.0 @@ -169,7 +169,7 @@ importers: specifier: 13.3.0 version: 13.3.0(eslint@8.35.0)(typescript@4.9.5) gqty: - specifier: workspace:3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/gqty/dist next: specifier: ^13.3.0 @@ -208,16 +208,16 @@ importers: specifier: ^7.6.0 version: 7.6.0 '@gqty/cli': - specifier: workspace:^4.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/cli/dist '@gqty/logger': - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/logger/dist '@gqty/react': - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/react/dist '@gqty/subscriptions': - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 @@ -256,7 +256,7 @@ importers: specifier: ^6.5.1 version: 6.5.1(react-dom@17.0.2)(react@17.0.2) gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/gqty/dist graphql: specifier: ^16.6.0 @@ -344,13 +344,13 @@ importers: examples/vite-example: dependencies: '@gqty/cli': - specifier: workspace:^4.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/cli/dist '@gqty/react': - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/react/dist gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../../packages/gqty/dist react: specifier: ^17.0.2 @@ -572,7 +572,7 @@ importers: packages/cli: dependencies: gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../gqty/dist devDependencies: '@graphql-codegen/core': @@ -678,7 +678,7 @@ importers: specifier: ^8.2.4 version: 8.2.4 test-utils: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../../internal/test-utils tmp-promise: specifier: ^3.0.3 @@ -841,7 +841,7 @@ importers: specifier: ^0.17.12 version: 0.17.12 gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../gqty/dist jest: specifier: ^29.5.0 @@ -850,7 +850,7 @@ importers: specifier: ^8.2.4 version: 8.2.4 test-utils: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../../internal/test-utils tslib: specifier: ^2.5.0 @@ -927,7 +927,7 @@ importers: specifier: ^6.12.0 version: 6.12.0 gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../gqty/dist graphql: specifier: ^16.6.0 @@ -963,7 +963,7 @@ importers: specifier: ^8.2.4 version: 8.2.4 test-utils: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../../internal/test-utils tslib: specifier: ^2.5.0 @@ -998,13 +998,13 @@ importers: specifier: ^0.17.10 version: 0.17.12 gqty: - specifier: workspace:^3.0.0-alpha.0 + specifier: workspace:^ version: link:../gqty/dist graphql: specifier: ^16.6.0 version: 16.6.0 test-utils: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../../internal/test-utils tslib: specifier: ^2.5.0 From 665bf4ace749db712baa6f86eb866e9eb3c17964 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 17 Apr 2023 12:54:44 +0800 Subject: [PATCH 046/122] fix: use esm imports --- packages/react/src/query/preparedQuery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/src/query/preparedQuery.ts b/packages/react/src/query/preparedQuery.ts index 15a29b55c..278936de6 100644 --- a/packages/react/src/query/preparedQuery.ts +++ b/packages/react/src/query/preparedQuery.ts @@ -1,5 +1,5 @@ import { BaseGeneratedSchema, GQtyClient, GQtyError } from 'gqty'; -import { useSyncExternalStore } from 'use-sync-external-store/shim'; +import { useSyncExternalStore } from 'use-sync-external-store/shim/index.js'; import { createMemoryStore } from '../memoryStore'; import type { ReactClientOptionsWithDefaults } from '../utils'; From 66fd895b340a8028fd4d5705fff4c882d6aa7050 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 17 Apr 2023 22:30:00 +0800 Subject: [PATCH 047/122] fix(packages/gqty): compat, cache option should be optional. --- packages/gqty/src/Client/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 009f2faf8..f677234d8 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,7 +1,7 @@ import type { Client as SseClient } from 'graphql-sse'; import type { Client as WsClient } from 'graphql-ws'; import { createSchemaAccessor } from '../Accessor'; -import type { Cache } from '../Cache'; +import { Cache } from '../Cache'; import { createPersistors, Persistors } from '../Cache/persistence'; import type { RetryOptions } from '../Error'; import type { @@ -133,7 +133,8 @@ export const createClient = < // TODO: compat: remove in next major _ObjectTypes extends SchemaObjects = never >({ - cache, + // Legacy clients don't have this. + cache = new Cache(), fetchOptions: { fetcher, cachePolicy: fetchPolicy = 'default', From 07ad7319759c9829e0560536f2f89e4760204780 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 20 Apr 2023 01:00:28 +0800 Subject: [PATCH 048/122] fix(deps): dlx errors --- packages/cli/package.json | 31 ++--- packages/cli/src/deps.ts | 1 - packages/cli/src/generate.ts | 18 +-- pnpm-lock.yaml | 229 ++++++++++++++++++++--------------- 4 files changed, 156 insertions(+), 123 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 796c84937..6144f4ad9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -43,47 +43,42 @@ "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { - "gqty": "workspace:^" - }, - "devDependencies": { "@graphql-codegen/core": "^3.1.0", "@graphql-codegen/typescript": "^3.0.2", "@graphql-tools/delegate": "^9.0.25", "@graphql-tools/schema": "^9.0.17", "@graphql-tools/utils": "^9.2.0", "@graphql-tools/wrap": "^9.3.4", - "@size-limit/preset-small-lib": "^8.2.4", - "@types/inquirer": "^8.2.6", - "@types/lodash-es": "^4.14.191", - "@types/micromatch": "^4.0.2", - "@types/mkdirp": "^1.0.2", - "@types/ms": "^0.7.31", - "@types/node": "^18.15.5", - "bob-ts": "^4.1.1", - "bob-tsm": "^1.1.2", "chalk": "^5.2.0", - "changesets-github-release": "^0.1.0", "commander": "^10.0.0", "cosmiconfig": "^8.1.3", "cross-fetch": "^3.1.5", - "esbuild": "^0.17.12", "fast-glob": "^3.2.12", + "gqty": "workspace:^", "graphql": "^16.0.0", "inquirer": "^8.2.5", "lodash-es": "^4.17.21", "micromatch": "^4.0.5", "mkdirp": "^2.1.5", - "ms": "^2.1.3", + "prettier": "^2.8.6", + "trading-signals": "^3.7.0" + }, + "devDependencies": { + "@size-limit/preset-small-lib": "^8.2.4", + "@types/inquirer": "^8.2.6", + "@types/lodash-es": "^4.14.191", + "@types/micromatch": "^4.0.2", + "@types/mkdirp": "^1.0.2", + "@types/ms": "^0.7.31", + "@types/node": "^18.15.5", + "bob-tsm": "^1.1.2", "open-cli": "^7.2.0", "p-lazy": "^3.1.0", - "prettier": "^2.8.6", "rimraf": "^4.4.0", "serve": "^14.2.0", "size-limit": "^8.2.4", "test-utils": "workspace:^", "tmp-promise": "^3.0.3", - "trading-signals": "^3.7.0", - "tslib": "^2.5.0", "typescript": "^4.9.5", "wait-on": "^7.0.1" }, diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index 131bc0199..517580845 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -13,7 +13,6 @@ export { default as inquirer } from 'inquirer'; export { default as sortBy } from 'lodash-es/sortBy.js'; export { default as throttle } from 'lodash-es/throttle.js'; export { default as mkdirp } from 'mkdirp'; -export { default as ms } from 'ms'; export { default as prettier, type Options as PrettierOptions } from 'prettier'; export { FasterSMA as SMA } from 'trading-signals'; export { micromatch }; diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 350fc1c33..037853767 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -1,12 +1,12 @@ import { - ArgsDescriptions, - FieldDescription, parseSchemaType, - ScalarsEnumsHash, - Schema, SchemaUnionsKey, - Type, -} from 'gqty'; + type ArgsDescriptions, + type FieldDescription, + type ScalarsEnumsHash, + type Schema, + type Type, +} from 'gqty/Schema/types'; import type { GraphQLEnumType, GraphQLField, @@ -553,12 +553,12 @@ export async function generate( const unionsMapObj = Array.from( unionsAndInterfacesObjectTypesMap.entries() ).reduce((acum, [key, value]) => { - generatedSchema[key]!['$on'] = { - __type: `$${key}!`, - }; + generatedSchema[key]!.$on = { __type: `$${key}!` }; + acum[key] = value; return acum; }, {} as Record); + if (unionsAndInterfacesObjectTypesMap.size) { generatedSchema[SchemaUnionsKey] = unionsMapObj; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb9b91644..d79b838ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -571,10 +571,6 @@ importers: packages/cli: dependencies: - gqty: - specifier: workspace:^ - version: link:../gqty/dist - devDependencies: '@graphql-codegen/core': specifier: ^3.1.0 version: 3.1.0(graphql@16.6.0) @@ -593,39 +589,9 @@ importers: '@graphql-tools/wrap': specifier: ^9.3.4 version: 9.3.7(graphql@16.6.0) - '@size-limit/preset-small-lib': - specifier: ^8.2.4 - version: 8.2.4(size-limit@8.2.4) - '@types/inquirer': - specifier: ^8.2.6 - version: 8.2.6 - '@types/lodash-es': - specifier: ^4.14.191 - version: 4.17.7 - '@types/micromatch': - specifier: ^4.0.2 - version: 4.0.2 - '@types/mkdirp': - specifier: ^1.0.2 - version: 1.0.2 - '@types/ms': - specifier: ^0.7.31 - version: 0.7.31 - '@types/node': - specifier: ^18.15.5 - version: 18.15.11 - bob-ts: - specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@4.9.5) - bob-tsm: - specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) chalk: specifier: ^5.2.0 version: 5.2.0 - changesets-github-release: - specifier: ^0.1.0 - version: 0.1.0 commander: specifier: ^10.0.0 version: 10.0.0 @@ -635,12 +601,12 @@ importers: cross-fetch: specifier: ^3.1.5 version: 3.1.5 - esbuild: - specifier: ^0.17.12 - version: 0.17.12 fast-glob: specifier: ^3.2.12 version: 3.2.12 + gqty: + specifier: workspace:^ + version: link:../gqty/dist graphql: specifier: ^16.0.0 version: 16.6.0 @@ -656,18 +622,43 @@ importers: mkdirp: specifier: ^2.1.5 version: 2.1.5 - ms: - specifier: ^2.1.3 - version: 2.1.3 + prettier: + specifier: ^2.8.6 + version: 2.8.6 + trading-signals: + specifier: ^3.7.0 + version: 3.7.0 + devDependencies: + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/inquirer': + specifier: ^8.2.6 + version: 8.2.6 + '@types/lodash-es': + specifier: ^4.14.191 + version: 4.17.7 + '@types/micromatch': + specifier: ^4.0.2 + version: 4.0.2 + '@types/mkdirp': + specifier: ^1.0.2 + version: 1.0.2 + '@types/ms': + specifier: ^0.7.31 + version: 0.7.31 + '@types/node': + specifier: ^18.15.5 + version: 18.15.11 + bob-tsm: + specifier: ^1.1.2 + version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) open-cli: specifier: ^7.2.0 version: 7.2.0 p-lazy: specifier: ^3.1.0 version: 3.1.0 - prettier: - specifier: ^2.8.6 - version: 2.8.6 rimraf: specifier: ^4.4.0 version: 4.4.0 @@ -683,12 +674,6 @@ importers: tmp-promise: specifier: ^3.0.3 version: 3.0.3 - trading-signals: - specifier: ^3.7.0 - version: 3.7.0 - tslib: - specifier: ^2.5.0 - version: 2.5.0 typescript: specifier: ^4.9.5 version: 4.9.5 @@ -1222,6 +1207,7 @@ packages: transitivePeerDependencies: - encoding - supports-color + dev: false /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} @@ -1820,6 +1806,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.21.0): resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} @@ -2052,6 +2039,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + dev: false /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} @@ -2204,6 +2192,7 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} @@ -2237,6 +2226,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) '@babel/types': 7.21.4 + dev: false /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.0): resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} @@ -4042,7 +4032,7 @@ packages: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: true + dev: false /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} @@ -4070,7 +4060,7 @@ packages: import-from: 4.0.0 lodash: 4.17.21 tslib: 2.5.0 - dev: true + dev: false /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} @@ -4092,7 +4082,7 @@ packages: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: true + dev: false /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} @@ -4173,7 +4163,7 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true + dev: false /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} @@ -4236,7 +4226,7 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true + dev: false /@graphql-ez/client@0.6.1(@types/node@18.15.11)(graphql@16.6.0): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} @@ -4441,7 +4431,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true + dev: false /@graphql-tools/delegate@9.0.28(graphql@16.6.0): resolution: {integrity: sha512-8j23JCs2mgXqnp+5K0v4J3QBQU/5sXd9miaLvMfRf/6963DznOXTECyS9Gcvj1VEeR5CXIw6+aX/BvRDKDdN1g==} @@ -4456,7 +4446,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true + dev: false /@graphql-tools/executor@0.0.15(graphql@16.6.0): resolution: {integrity: sha512-6U7QLZT8cEUxAMXDP4xXVplLi6RBwx7ih7TevlBto66A/qFp3PDb6o/VFo07yBKozr8PGMZ4jMfEWBGxmbGdxA==} @@ -4469,7 +4459,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true + dev: false /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} @@ -4525,7 +4515,7 @@ packages: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: true + dev: false /@graphql-tools/merge@8.4.0(graphql@16.6.0): resolution: {integrity: sha512-3XYCWe0d3I4F1azNj1CdShlbHfTIfiDgj00R9uvFH8tHKh7i1IWN3F7QQYovcHKhayaR6zPok3YYMESYQcBoaA==} @@ -4535,6 +4525,7 @@ packages: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 + dev: false /@graphql-tools/optimize@1.3.1(graphql@16.6.0): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} @@ -4543,6 +4534,7 @@ packages: dependencies: graphql: 16.6.0 tslib: 2.5.0 + dev: false /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} @@ -4556,6 +4548,7 @@ packages: transitivePeerDependencies: - encoding - supports-color + dev: false /@graphql-tools/schema@9.0.12(graphql@16.6.0): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} @@ -4579,7 +4572,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true + dev: false /@graphql-tools/schema@9.0.17(graphql@16.6.0): resolution: {integrity: sha512-HVLq0ecbkuXhJlpZ50IHP5nlISqH2GbNgjBJhhRzHeXhfwlUOT4ISXGquWTmuq61K0xSaO0aCjMpxe4QYbKTng==} @@ -4591,6 +4584,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 + dev: false /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} @@ -4599,6 +4593,7 @@ packages: dependencies: graphql: 16.6.0 tslib: 2.5.0 + dev: false /@graphql-tools/utils@9.1.3(graphql@16.6.0): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} @@ -4617,6 +4612,7 @@ packages: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 + dev: false /@graphql-tools/wrap@9.3.7(graphql@16.6.0): resolution: {integrity: sha512-gavfiWLKgvmC2VPamnMzml3zmkBoo0yt+EmOLIHY6O92o4uMTR281WGM77tZIfq+jzLtjoIOThUSjC/cN/6XKg==} @@ -4629,7 +4625,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true + dev: false /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} @@ -4637,7 +4633,7 @@ packages: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 - dev: true + dev: false /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} @@ -4645,6 +4641,7 @@ packages: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: graphql: 16.6.0 + dev: false /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3): resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} @@ -5747,7 +5744,7 @@ packages: /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} - dev: true + dev: false /@rollup/plugin-babel@6.0.3(@babel/core@7.21.4): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} @@ -6056,7 +6053,7 @@ packages: /@types/big.js@6.1.6: resolution: {integrity: sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA==} - dev: true + dev: false /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} @@ -6870,6 +6867,7 @@ packages: /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false /ast-types-flow@0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} @@ -6892,6 +6890,7 @@ packages: /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} + dev: false /autoprefixer@10.4.14(postcss@8.4.21): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} @@ -7036,6 +7035,7 @@ packages: /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + dev: false /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.0): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} @@ -7091,6 +7091,7 @@ packages: babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color + dev: false /babel-preset-jest@29.5.0(@babel/core@7.21.0): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} @@ -7114,6 +7115,7 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} @@ -7129,7 +7131,7 @@ packages: /big.js@6.2.1: resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} - dev: true + dev: false /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -7141,7 +7143,7 @@ packages: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.0 - dev: true + dev: false /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} @@ -7323,7 +7325,7 @@ packages: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: true + dev: false /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -7389,6 +7391,7 @@ packages: dependencies: pascal-case: 3.1.2 tslib: 2.5.0 + dev: false /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} @@ -7436,6 +7439,7 @@ packages: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 + dev: false /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -7493,6 +7497,7 @@ packages: title-case: 3.0.3 upper-case: 2.0.2 upper-case-first: 2.0.2 + dev: false /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} @@ -7509,6 +7514,7 @@ packages: sentence-case: 3.0.4 snake-case: 3.0.4 tslib: 2.5.0 + dev: false /changesets-github-release@0.1.0: resolution: {integrity: sha512-ai++eLjlEjW4flLKExS8Li2a5qocO+N3YTR13aZCAwt4bgj6MYXgPfdoukLktaQXs3QUmaHz5dG2ISot/hZD5g==} @@ -7542,7 +7548,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -7583,17 +7588,17 @@ packages: engines: {node: '>=8'} dependencies: restore-cursor: 3.1.0 - dev: true + dev: false /cli-spinners@2.7.0: resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} engines: {node: '>=6'} - dev: true + dev: false /cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} - dev: true + dev: false /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -7626,7 +7631,6 @@ packages: /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - dev: true /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} @@ -7692,7 +7696,7 @@ packages: /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} - dev: true + dev: false /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -7727,6 +7731,7 @@ packages: /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} + dev: false /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} @@ -7779,6 +7784,7 @@ packages: no-case: 3.0.4 tslib: 2.5.0 upper-case: 2.0.2 + dev: false /content-disposition@0.5.2: resolution: {integrity: sha1-DPaLud318r55YcOoUXjLhdunjLQ=} @@ -7870,7 +7876,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - dev: true + dev: false /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -7888,6 +7894,7 @@ packages: node-fetch: 2.6.7 transitivePeerDependencies: - encoding + dev: false /cross-spawn-async@2.2.5: resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} @@ -8317,6 +8324,7 @@ packages: /dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: false /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} @@ -8442,7 +8450,6 @@ packages: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -8488,6 +8495,7 @@ packages: /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} + dev: false /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -8589,6 +8597,7 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.5.0 + dev: false /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} @@ -9288,7 +9297,6 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true /extract-files@13.0.0: resolution: {integrity: sha512-FXD+2Tsr8Iqtm3QZy1Zmwscca7Jx3mMC5Crr+sEP1I303Jy1CYMuYCm7hRTplFNg3XdUavErkxnTzpaqdSoi6g==} @@ -9405,6 +9413,7 @@ packages: /fbjs-css-vars@1.0.2: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + dev: false /fbjs@3.0.4: resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} @@ -9418,6 +9427,7 @@ packages: ua-parser-js: 0.7.32 transitivePeerDependencies: - encoding + dev: false /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} @@ -9432,7 +9442,7 @@ packages: engines: {node: '>=8'} dependencies: escape-string-regexp: 1.0.5 - dev: true + dev: false /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -9906,6 +9916,7 @@ packages: dependencies: graphql: 16.6.0 tslib: 2.5.0 + dev: false /graphql-upload@13.0.0(graphql@16.6.0): resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==} @@ -10049,6 +10060,7 @@ packages: dependencies: capital-case: 1.0.4 tslib: 2.5.0 + dev: false /heap@0.2.7: resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} @@ -10200,7 +10212,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -10222,6 +10233,7 @@ packages: /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} + dev: false /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -10233,6 +10245,7 @@ packages: /import-from@4.0.0: resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} engines: {node: '>=12.2'} + dev: false /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} @@ -10299,7 +10312,7 @@ packages: strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 7.0.0 - dev: true + dev: false /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} @@ -10318,6 +10331,7 @@ packages: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 + dev: false /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} @@ -10329,6 +10343,7 @@ packages: dependencies: is-relative: 1.0.0 is-windows: 1.0.2 + dev: false /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -10464,12 +10479,13 @@ packages: /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} - dev: true + dev: false /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: tslib: 2.5.0 + dev: false /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} @@ -10529,6 +10545,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-unc-path: 1.0.0 + dev: false /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} @@ -10581,16 +10598,18 @@ packages: engines: {node: '>=0.10.0'} dependencies: unc-path-regex: 0.1.2 + dev: false /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: true + dev: false /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: tslib: 2.5.0 + dev: false /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} @@ -11417,7 +11436,7 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: true + dev: false /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -11433,11 +11452,13 @@ packages: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: tslib: 2.5.0 + dev: false /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.5.0 + dev: false /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -11484,6 +11505,7 @@ packages: /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} + dev: false /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} @@ -12215,7 +12237,6 @@ packages: resolution: {integrity: sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==} engines: {node: '>=10'} hasBin: true - dev: true /mnemonist@0.39.5: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} @@ -12264,7 +12285,7 @@ packages: /mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - dev: true + dev: false /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -12500,6 +12521,7 @@ packages: dependencies: lower-case: 2.0.2 tslib: 2.5.0 + dev: false /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} @@ -12525,6 +12547,7 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 + dev: false /node-fetch@3.3.0: resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} @@ -12619,6 +12642,7 @@ packages: /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + dev: false /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} @@ -12802,12 +12826,11 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true + dev: false /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -12886,6 +12909,7 @@ packages: dependencies: dot-case: 3.0.4 tslib: 2.5.0 + dev: false /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -12913,6 +12937,7 @@ packages: is-absolute: 1.0.0 map-cache: 0.2.2 path-root: 0.1.1 + dev: false /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -12943,12 +12968,14 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.5.0 + dev: false /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 + dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -12982,12 +13009,14 @@ packages: /path-root-regex@0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} engines: {node: '>=0.10.0'} + dev: false /path-root@0.1.1: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} dependencies: path-root-regex: 0.1.2 + dev: false /path-scurry@1.6.1: resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==} @@ -13278,6 +13307,7 @@ packages: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 + dev: false /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} @@ -13809,7 +13839,6 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: true /readable-stream@4.2.0: resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} @@ -13947,6 +13976,7 @@ packages: invariant: 2.2.4 transitivePeerDependencies: - encoding + dev: false /remark-emoji@3.0.2: resolution: {integrity: sha512-hEgxEv2sBtvhT3tNG/tQeeFY3EbslftaOoG14dDZndLo25fWJ6Fbg4ukFbIotOWWrfXyASjXjyHT+6n366k3mg==} @@ -14064,7 +14094,7 @@ packages: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - dev: true + dev: false /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} @@ -14137,7 +14167,7 @@ packages: /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - dev: true + dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -14156,7 +14186,6 @@ packages: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.5.0 - dev: true /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -14171,7 +14200,6 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -14278,6 +14306,7 @@ packages: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 + dev: false /serialize-error@11.0.0: resolution: {integrity: sha512-YKrURWDqcT3VGX/s/pCwaWtpfJEEaEw5Y4gAnQDku92b/HjVj4r4UhA5QrMVMFotymK2wIWs5xthny5SMFu7Vw==} @@ -14345,6 +14374,7 @@ packages: /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -14404,6 +14434,7 @@ packages: /signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + dev: false /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} @@ -14467,6 +14498,7 @@ packages: dependencies: dot-case: 3.0.4 tslib: 2.5.0 + dev: false /sonic-boom@3.2.0: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} @@ -14560,6 +14592,7 @@ packages: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: tslib: 2.5.0 + dev: false /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -14699,7 +14732,6 @@ packages: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - dev: true /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} @@ -14893,6 +14925,7 @@ packages: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: tslib: 2.5.0 + dev: false /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} @@ -15057,7 +15090,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} @@ -15091,6 +15123,7 @@ packages: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: tslib: 2.5.0 + dev: false /titleize@1.0.1: resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} @@ -15108,7 +15141,6 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} @@ -15162,6 +15194,7 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} @@ -15176,7 +15209,7 @@ packages: dependencies: '@types/big.js': 6.1.6 big.js: 6.2.1 - dev: true + dev: false /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -15430,6 +15463,7 @@ packages: /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} + dev: false /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -15442,6 +15476,7 @@ packages: /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} + dev: false /undici@5.7.0: resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} @@ -15624,11 +15659,13 @@ packages: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: tslib: 2.5.0 + dev: false /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.5.0 + dev: false /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -15757,6 +15794,7 @@ packages: /value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} + dev: false /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} @@ -15890,7 +15928,6 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 - dev: true /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} @@ -15907,6 +15944,7 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -15957,6 +15995,7 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + dev: false /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} From 8fcc06d545841619ae2f556914ffb157a5624195 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 26 Apr 2023 00:30:18 +0800 Subject: [PATCH 049/122] feat: batching with microtask --- .prettierrc | 1 + .vscode/settings.json | 3 +- examples/gnt/app/Character.tsx | 12 ++ examples/gnt/app/favicon.ico | Bin 25931 -> 0 bytes examples/gnt/app/page.tsx | 127 +----------- examples/react/src/graphql/gqty.ts | 6 +- examples/react/src/pages/refetch.tsx | 55 ++++- package.json | 1 - packages/cli/package.json | 1 + packages/gqty/src/Accessor/resolve.ts | 17 +- packages/gqty/src/Accessor/skeleton.ts | 1 + packages/gqty/src/Cache/crawl.ts | 16 +- packages/gqty/src/Cache/index.ts | 76 +++---- packages/gqty/src/Client/batching.ts | 36 ++++ packages/gqty/src/Client/compat/client.ts | 86 +++----- .../gqty/src/Client/compat/inlineResolved.ts | 2 +- packages/gqty/src/Client/compat/prefetch.ts | 2 +- packages/gqty/src/Client/compat/resolved.ts | 2 +- packages/gqty/src/Client/compat/track.ts | 2 +- packages/gqty/src/Client/context.ts | 135 +++++++----- packages/gqty/src/Client/index.ts | 10 +- packages/gqty/src/Client/resolvers.ts | 116 +++++++---- packages/gqty/src/Disposable.ts | 19 ++ packages/gqty/src/Helpers/InfiniteFrailMap.ts | 15 ++ packages/gqty/src/Helpers/prepass.ts | 23 +++ packages/gqty/src/QueryBuilder/index.ts | 30 +-- packages/gqty/src/Selectable.ts | 12 ++ packages/gqty/src/Unsubscribe.ts | 1 + packages/gqty/test/buildQuery.test.ts | 4 +- packages/gqty/test/cache.test.ts | 12 +- packages/gqty/test/client.test.ts | 2 +- packages/gqty/test/interfaces-unions.test.ts | 4 +- packages/gqty/test/playground.test.ts | 2 +- packages/logger/src/index.ts | 10 +- packages/react/package.json | 1 + packages/react/src/query/hoc.tsx | 11 +- packages/react/src/query/usePaginatedQuery.ts | 2 +- packages/react/src/query/useQuery.ts | 193 ++++++++++++------ packages/react/src/query/useRefetch.ts | 2 +- packages/react/src/useIsRendering.ts | 16 ++ packages/react/src/useSafeRender.ts | 8 +- packages/react/src/useWindowFocusEffect.ts | 8 +- pnpm-lock.yaml | 14 +- 43 files changed, 645 insertions(+), 451 deletions(-) create mode 100644 examples/gnt/app/Character.tsx delete mode 100644 examples/gnt/app/favicon.ico create mode 100644 packages/gqty/src/Client/batching.ts create mode 100644 packages/gqty/src/Disposable.ts create mode 100644 packages/gqty/src/Helpers/InfiniteFrailMap.ts create mode 100644 packages/gqty/src/Selectable.ts create mode 100644 packages/gqty/src/Unsubscribe.ts create mode 100644 packages/react/src/useIsRendering.ts diff --git a/.prettierrc b/.prettierrc index 686ffa2ed..ec66f0d83 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "printWidth": 80, + "proseWrap": "always", "semi": true, "singleQuote": true, "trailingComma": "es5" diff --git a/.vscode/settings.json b/.vscode/settings.json index 25fa6215f..b87f0d5f5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", + "prettier.proseWrap": "preserve" } diff --git a/examples/gnt/app/Character.tsx b/examples/gnt/app/Character.tsx new file mode 100644 index 000000000..67ecdf763 --- /dev/null +++ b/examples/gnt/app/Character.tsx @@ -0,0 +1,12 @@ +import { resolve, type Query } from '../gqty'; + +/** RSC */ +export default async function Character({ + id, +}: Parameters[0]) { + const data = await resolve(({ query }) => { + query.character({ id })?.name; + }); + + return <>{JSON.stringify(data, null, 2)}; +} diff --git a/examples/gnt/app/favicon.ico b/examples/gnt/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/examples/gnt/app/page.tsx b/examples/gnt/app/page.tsx index a08175fbb..8560651be 100644 --- a/examples/gnt/app/page.tsx +++ b/examples/gnt/app/page.tsx @@ -1,131 +1,12 @@ -import { Inter } from 'next/font/google'; -import Image from 'next/image'; +import { Suspense } from 'react'; import MyComponent from './MyComponent'; -const inter = Inter({ subsets: ['latin'] }); - export default function Home() { return (
- -
- ); -} - -function _Home() { - return ( -
-
-

- Get started by editing  - app/page.tsx -

- -
-
- Next.js Logo -
- + Loading...
+ +
+ Next.js Logo +
+ +
}> + + ); } diff --git a/examples/react/src/graphql/gqty.ts b/examples/react/src/graphql/gqty.ts index 771848925..a8ce9bd9a 100644 --- a/examples/react/src/graphql/gqty.ts +++ b/examples/react/src/graphql/gqty.ts @@ -16,8 +16,6 @@ import { } from './schema.generated'; const queryFetcher: QueryFetcher = async function (query, variables) { - await new Promise((r) => setTimeout(r, 1000)); - const endpoint = typeof window === 'undefined' ? `http://0.0.0.0:3000/api/graphql` @@ -86,8 +84,8 @@ const subscriptionsClient = : undefined; export const cache = new Cache(undefined, { - maxAge: Infinity, - // staleWhileRevalidate: 60 * 5000, + maxAge: 1000, + staleWhileRevalidate: 60 * 5000, normalization: true, }); diff --git a/examples/react/src/pages/refetch.tsx b/examples/react/src/pages/refetch.tsx index 57e8108d1..6fcd2416f 100644 --- a/examples/react/src/pages/refetch.tsx +++ b/examples/react/src/pages/refetch.tsx @@ -1,8 +1,24 @@ -import { Button, Stack, Text } from '@chakra-ui/react'; +import { Button, Checkbox, Input, Stack, Text } from '@chakra-ui/react'; +import { useState } from 'react'; import { useQuery, useRefetch } from '../components/client'; +let renderCount = 0; + export default function RefetchPage() { - const query = useQuery(); + const [fetchInBackground, setFetchInBackground] = useState(false); + const [refetchInterval, setRefetchOnInterval] = useState(); + const [refetchOnReconnect, setRefetchOnReconnect] = useState(true); + const [refetchOnRender, setRefetchOnRender] = useState(true); + const [refetchOnWindowVisible, setRefetchOnWindowVisible] = + useState(true); + + const query = useQuery({ + fetchInBackground, + refetchInterval, + refetchOnReconnect, + refetchOnRender, + refetchOnWindowVisible, + }); const refetchTime = useRefetch(); @@ -20,11 +36,44 @@ export default function RefetchPage() { - {queryTypename} + { + const value = parseInt(e.target.value); + + setRefetchOnInterval(isNaN(value) || value < 0 ? undefined : value); + }} + /> + setFetchInBackground(e.target.checked)} + > + fetchInBackground + + setRefetchOnReconnect(e.target.checked)} + > + refetchOnReconnect + + setRefetchOnRender(e.target.checked)} + > + refetchOnRender + + setRefetchOnWindowVisible(e.target.checked)} + > + refetchOnWindowVisible + + Render Count: {renderCount++} ); } diff --git a/package.json b/package.json index af6979875..5d8528f64 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,6 @@ "bob-tsm": "^1.1.2", "bufferutil": "^4.0.7", "chalk": "^5.2.0", - "changesets-github-release": "^0.1.0", "concurrently": "^7.6.0", "esbuild": "^0.17.12", "globby": "^13.1.3", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6144f4ad9..5438b169c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -72,6 +72,7 @@ "@types/ms": "^0.7.31", "@types/node": "^18.15.5", "bob-tsm": "^1.1.2", + "esbuild": "^0.17.12", "open-cli": "^7.2.0", "p-lazy": "^3.1.0", "rimraf": "^4.4.0", diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index 24b1c40da..264643b75 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -94,10 +94,13 @@ export const resolve = ( // accessors before a cache update. When properties of these stale // accessors are accessed, they should read new data from the cache. if (cache.expiresAt === -Infinity) { - data = context.cache.get(selection.cacheKeys.join('.'))?.data; + data = context.cache.get( + selection.cacheKeys.join('.'), + context.cacheOptions + )?.data; } - context.onSelect?.(selection, { ...cache, data }); + context.select(selection, { ...cache, data }); return isArray ? (Array.isArray(data) ? data : [undefined]) : data; } @@ -266,7 +269,9 @@ const objectProxyHandler: ProxyHandler = { const [type, field] = selection.cacheKeys; if (field) { - const data = context.cache.get(`${type}.${field}`)?.data ?? {}; + const data = + context.cache.get(`${type}.${field}`, context.cacheOptions)?.data ?? + {}; if (!isPlainObject(data)) return false; @@ -300,7 +305,7 @@ const objectProxyHandler: ProxyHandler = { currentSelection = currentSelection.getChild(key); } - context.onSelect?.(currentSelection, { ...cache, data: scalar }); + context.select(currentSelection, { ...cache, data: scalar }); } return result; @@ -510,13 +515,13 @@ export const createArrayAccessor = < if (!Array.isArray(meta.cache.data)) { if (verbose) { console.warn( - 'Received invalid cache data for array accessor.', + 'Invalid cache for an array accessor, monkey-patch by wrapping it with an array.', meta, meta.context.cache.toJSON() ); } - throw new GQtyError(`Cache data must be an array.`); + meta.cache.data = [meta.cache.data]; } const proxy = new Proxy(meta.cache.data as TSchemaType, arrayProxyHandler); diff --git a/packages/gqty/src/Accessor/skeleton.ts b/packages/gqty/src/Accessor/skeleton.ts index cd05a1581..32d3a7167 100644 --- a/packages/gqty/src/Accessor/skeleton.ts +++ b/packages/gqty/src/Accessor/skeleton.ts @@ -6,6 +6,7 @@ const skeletons = new WeakSet(); export const isSkeleton = (object: any) => skeletons.has(object) || skeletons.has($meta(object)?.cache.data as object); +/** Create data skeleton array/objects. */ export const createSkeleton = (fn: () => T) => { const skeleton = fn(); skeletons.add(skeleton); diff --git a/packages/gqty/src/Cache/crawl.ts b/packages/gqty/src/Cache/crawl.ts index f8780dd6c..49739156f 100644 --- a/packages/gqty/src/Cache/crawl.ts +++ b/packages/gqty/src/Cache/crawl.ts @@ -1,4 +1,4 @@ -import { FrailMap } from '../Helpers/FrailMap'; +import { InfiniteFrailMap } from '../Helpers/InfiniteFrailMap'; /** * Stack-based deep crawl, avoiding recursions. @@ -40,20 +40,6 @@ export const crawl = ( return data; }; -export class InfiniteFrailMap extends FrailMap< - K, - V | InfiniteFrailMap> -> { - get(key: K): V | InfiniteFrailMap> { - const value = - super.get(key) ?? new InfiniteFrailMap>(); - - super.set(key, value); - - return value; - } -} - export const flattenObject = ( obj: Record, maxIterations = 100000 diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index 16f0e4082..042b9cc26 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -59,11 +59,7 @@ export type CacheDataContainer = { */ swrBefore?: number; - /** - * Internal reference of cache eviction timeout, subject to change in the - * future. - */ - timeout?: ReturnType; + unref?: () => void; }; export type CacheListener = ( @@ -111,6 +107,9 @@ export class Cache { /** Look up table for normalized objects. */ #normalizedObjects = new Map>(); + /** Temporary strong references in parallel with the WeakRef in FrailMap. */ + #dataRefs = new Map(); + constructor( data?: CacheSnapshot, { @@ -174,14 +173,18 @@ export class Cache { for (const path of paths) { const [type, field, ...parts] = path.split('.'); - select(this.get(`${type}.${field}`)?.data, parts, (node) => { - const id = getId(node); - if (id && store.has(id) && isCacheObject(node)) { - nsubs.set(node, fn); - } + select( + this.get(`${type}.${field}`, { includeExpired: true })?.data, + parts, + (node) => { + const id = getId(node); + if (id && store.has(id) && isCacheObject(node)) { + nsubs.set(node, fn); + } - return node; - }); + return node; + } + ); } } @@ -311,10 +314,7 @@ export class Cache { * Retrieve cache values by first 2 path segments, e.g. `query.todos` or * `mutation.createTodo`. */ - get( - path: string, - { includeExpired }: CacheGetOptions = {} - ): CacheDataContainer | undefined { + get(path: string, options?: CacheGetOptions): CacheDataContainer | undefined { const [, type, key, subpath] = path.match(/^([a-z]+(?:\w*))\.(?:__)?([a-z]+(?:\w*))(.*[^\.])?$/i) ?? []; if (!type || !key) { @@ -326,20 +326,19 @@ export class Cache { const cacheKey = `${type}.${key}`; let dataContainer = this.#data.get(cacheKey); - if (dataContainer === undefined) { - return; - } + if (dataContainer === undefined) return; const { expiresAt, swrBefore } = dataContainer; let { data } = dataContainer; + if (expiresAt < Date.now() && !options?.includeExpired) { + data = undefined; + } else if (subpath) { + data = select(data, subpath.slice(1).split('.')); + } + return { - data: - expiresAt < Date.now() && !includeExpired - ? undefined - : subpath - ? select(data, subpath.slice(1).split('.')) - : data, + data, expiresAt, swrBefore, }; @@ -366,10 +365,14 @@ export class Cache { for (const [type, cacheObjects = {}] of Object.entries(values)) { for (const [field, data] of Object.entries(cacheObjects as CacheObject)) { + const __ref = Symbol(); + let unrefTimer: ReturnType | undefined; + const unref = () => { + clearTimeout(unrefTimer); + this.#dataRefs.delete(__ref); + }; const cacheKey = `${type}.${field}`; - clearTimeout(this.#data.get(cacheKey)?.timeout); - const dataContainer: CacheDataContainer = // Mutation and subscription results should be returned right away for // immediate use. Their responses are only meaningful to a cache with @@ -381,25 +384,26 @@ export class Cache { data, expiresAt: now + 100, swrBefore: now, + unref, } : { data, expiresAt: age + now, swrBefore: age + swr + now, + unref, }; + // Opens up previous cache value for GC. + this.#data.get(cacheKey)?.unref?.(); + if (isFinite(age + swr)) { - const timeout = setTimeout( - // Hold on to lexical scope reference, preventing GC from WeakRef. - () => dataContainer, - age + swr - ); - - if (typeof timeout === 'object') { - timeout.unref(); + unrefTimer = setTimeout(unref, age + swr); + + if (typeof unrefTimer === 'object') { + unrefTimer.unref(); } - dataContainer.timeout = timeout; + this.#dataRefs.set(__ref, dataContainer); } this.#data.set(cacheKey, dataContainer, { strong: !isFinite(age) }); diff --git a/packages/gqty/src/Client/batching.ts b/packages/gqty/src/Client/batching.ts new file mode 100644 index 000000000..c5dc64079 --- /dev/null +++ b/packages/gqty/src/Client/batching.ts @@ -0,0 +1,36 @@ +import { type Cache } from '../Cache'; +import { Selection } from '../Selection'; + +const pendingSelections = new Map>>>(); + +export const addSelections = ( + cache: Cache, + key: string, + value: Set +) => { + if (!pendingSelections.has(cache)) { + pendingSelections.set(cache, new Map()); + } + + const selectionsByKey = pendingSelections.get(cache)!; + + if (!selectionsByKey.has(key)) { + selectionsByKey.set(key, new Set()); + } + + return selectionsByKey.get(key)!.add(value); +}; + +export const getSelectionsSet = (cache: Cache, key: string) => + pendingSelections.get(cache)?.get(key); + +export const delSelectionsSet = (cache: Cache, key: string) => + pendingSelections.get(cache)?.delete(key) ?? false; + +export const popSelectionsSet = (cache: Cache, key: string) => { + const result = getSelectionsSet(cache, key); + + delSelectionsSet(cache, key); + + return result; +}; diff --git a/packages/gqty/src/Client/compat/client.ts b/packages/gqty/src/Client/compat/client.ts index ae1184a29..cb53affd5 100644 --- a/packages/gqty/src/Client/compat/client.ts +++ b/packages/gqty/src/Client/compat/client.ts @@ -1,9 +1,14 @@ -import type { BaseGeneratedSchema, FetchOptions, SchemaContext } from '../..'; -import type { Cache } from '../../Cache'; -import type { ScalarsEnumsHash, Schema } from '../../Schema'; -import type { Selection } from '../../Selection'; -import type { createDebugger } from '../debugger'; -import type { Resolvers } from '../resolvers'; +import { + type BaseGeneratedSchema, + type FetchOptions, + type SchemaContext, +} from '../..'; +import { type Cache } from '../../Cache'; +import { type ScalarsEnumsHash, type Schema } from '../../Schema'; +import { type Selectable } from '../../Selectable'; +import { type Selection } from '../../Selection'; +import { type createDebugger } from '../debugger'; +import { type Resolvers } from '../resolvers'; import { createLegacyHydrateCache, LegacyHydrateCache } from './hydrateCache'; import { createLegacyInlineResolved, @@ -15,10 +20,10 @@ import { createLegacyPrepareRender, LegacyPrepareRender, } from './prepareRender'; -import type { LegacyQueryFetcher } from './queryFetcher'; +import { type LegacyQueryFetcher } from './queryFetcher'; import { createRefetch, LegacyRefetch } from './refetch'; import { createLegacyResolved, LegacyResolved } from './resolved'; -import type { LegacySubscriptionsClient } from './subscriptionsClient'; +import { type LegacySubscriptionsClient } from './subscriptionsClient'; import { createLegacyTrack, LegacyTrack } from './track'; export type { @@ -46,12 +51,6 @@ export type { LegacyTrackOptions, } from './track'; -let deprecationWarningMessage: string | undefined = - !process.env.NODE_ENV || process.env.NODE_ENV === 'development' - ? '[GQty] global query, mutation and subscription is deprecated, use ' + - '`schema` instead.' - : undefined; - export type CreateLegacyClientOptions = { accessor: TSchema; cache: Cache; @@ -74,9 +73,7 @@ export type LegacyClientOptions = { * Subscribing to selections made by global accessors, exposed for testing * purpose. */ -export type SelectionSubscriber = ( - fn: NonNullable -) => () => void; +export type SelectionSubscriber = (fn: Selectable['select']) => () => void; export type LegacyClient = { /** @@ -104,8 +101,8 @@ export type LegacyClient = { */ refetch: LegacyRefetch; /** - * @deprecated It does not include selections from scoped queries such as - * `resolve()` and `subscribe()`, do not mix usage if you are using SSR. + * Captures selections made with a fake render, fetches them and returns the + * result. */ prepareRender: LegacyPrepareRender; /** @@ -113,6 +110,7 @@ export type LegacyClient = { * always skip `no-cache` and `no-store` queries, and refetches according * to cache expiry. */ + // TODO: Make sure caches do not trigger immediate refetches. hydrateCache: LegacyHydrateCache; /** * @deprecated Please migrate from global accessors to locally scoped @@ -147,27 +145,21 @@ export const createLegacyClient = ( // Storing ALL scalar selections ever made, specifically made for refetch(). const selectionHistory = new Set(); - /** compat: Selection callback for global accessors */ - const selectionSubscriptions = new Set< - NonNullable - >(); - - const prevOnSelect = options.context.onSelect; - options.context.onSelect = (selection, cache) => { - if (selectionSubscriptions.size > 0) { - selectionHistory.add(selection); - } - - selectionSubscriptions.forEach((fn) => fn(selection, cache)); - - prevOnSelect?.call(options.context, selection, cache); - }; + options.context.subscribeSelect((select) => { + selectionHistory.add(select); + }); const methodOptions: CreateLegacyMethodOptions = { ...options, subscribeLegacySelections(fn) { - selectionSubscriptions.add(fn); - return () => selectionSubscriptions.delete(fn); + const { context } = options; + const unsubscribeSelect = context.subscribeSelect(fn); + const unsubscribeDispose = context.subscribeDispose(unsubscribeSelect); + + return () => { + unsubscribeDispose(); + unsubscribeSelect(); + }; }, }; @@ -175,25 +167,9 @@ export const createLegacyClient = ( const inlineResolved = createLegacyInlineResolved(methodOptions); return { - get query() { - deprecationWarningMessage && console.warn(deprecationWarningMessage); - deprecationWarningMessage = undefined; - - return options.accessor.query; - }, - get mutation() { - deprecationWarningMessage && console.warn(deprecationWarningMessage); - deprecationWarningMessage = undefined; - - return options.accessor.mutation; - }, - get subscription() { - deprecationWarningMessage && console.warn(deprecationWarningMessage); - deprecationWarningMessage = undefined; - - return options.accessor.subscription; - }, - + query: options.accessor.query, + mutation: options.accessor.mutation, + subscription: options.accessor.subscription, resolved: createLegacyResolved(methodOptions), inlineResolved, mutate: createLegacyMutate(methodOptions), diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index dfd3802d9..4fd5298c1 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -47,7 +47,7 @@ export const createLegacyInlineResolved = < operationName, }); const unsubscribe = subscribeLegacySelections((selection, cache) => { - context.onSelect?.(selection, cache); + context.select(selection, cache); onSelection?.(convertSelection(selection)); }); diff --git a/packages/gqty/src/Client/compat/prefetch.ts b/packages/gqty/src/Client/compat/prefetch.ts index 5690f882a..8621f01ec 100644 --- a/packages/gqty/src/Client/compat/prefetch.ts +++ b/packages/gqty/src/Client/compat/prefetch.ts @@ -17,7 +17,7 @@ export const createLegacyPrefetch = resolve, } = createResolver({ operationName }); const unsubscribe = subscribeLegacySelections((selection, cache) => { - context.onSelect?.(selection, cache); + context.select(selection, cache); }); const data = fn(query); diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index 348848d1a..2e34177ab 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -126,7 +126,7 @@ export const createLegacyResolved = < operationName, }); const unsubscribe = subscribeLegacySelections((selection, cache) => { - context.onSelect?.(selection, cache); + context.select(selection, cache); onSelection?.(convertSelection(selection)); }); const resolutionCache = refetch ? cache : context.cache; diff --git a/packages/gqty/src/Client/compat/track.ts b/packages/gqty/src/Client/compat/track.ts index 28d02f9d2..2bb5c6a69 100644 --- a/packages/gqty/src/Client/compat/track.ts +++ b/packages/gqty/src/Client/compat/track.ts @@ -56,7 +56,7 @@ export const createLegacyTrack = < } }; const unsubscribe = subscribeLegacySelections((selection, cache) => { - context.onSelect?.(selection, cache); + context.select(selection, cache); }); const data = { current: dataFn({ type: 'initial' }) }; diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index 0909f009d..aaa67beac 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -1,30 +1,31 @@ -import { Cache, CacheDataContainer, CacheGetOptions } from '../Cache'; +import { Cache, CacheGetOptions } from '../Cache'; +import { type Disposable } from '../Disposable'; import type { ScalarsEnumsHash, Schema } from '../Schema'; -import type { Selection } from '../Selection'; +import { type Selectable } from '../Selectable'; export type SchemaContext< T extends Record = Record -> = T & { - cache: Cache; - readonly cacheOptions?: CacheGetOptions; - readonly depthLimit: number; - readonly scalars: ScalarsEnumsHash; - /** Root schema for type lookups */ - readonly schema: Readonly; - /** Custom key fields for each object type. */ - readonly typeKeys?: Record; - onSelect: (selection: Selection, cache?: CacheDataContainer) => void; - notifyCacheUpdate: boolean; - shouldFetch: boolean; - hasCacheHit: boolean; - hasCacheMiss: boolean; -}; +> = T & + Disposable & + Selectable & { + cache: Cache; + readonly cacheOptions?: CacheGetOptions; + readonly depthLimit: number; + readonly scalars: ScalarsEnumsHash; + /** Root schema for type lookups */ + readonly schema: Readonly; + /** Custom key fields for each object type. */ + readonly typeKeys?: Record; + notifyCacheUpdate: boolean; + shouldFetch: boolean; + hasCacheHit: boolean; + hasCacheMiss: boolean; + }; export type CreateContextOptions = { cache: Cache; depthLimit: number; cachePolicy: RequestCache; - onSelect?: NonNullable; scalars: ScalarsEnumsHash; schema: Readonly; typeKeys?: Record; @@ -34,46 +35,70 @@ export const createContext = ({ cache, cachePolicy, depthLimit, - onSelect, scalars, schema, typeKeys, -}: CreateContextOptions): SchemaContext => ({ - cache: - cachePolicy === 'no-cache' || - cachePolicy === 'no-store' || - cachePolicy === 'reload' - ? new Cache(undefined, { maxAge: Infinity }) - : cache, - cacheOptions: { - includeExpired: - cachePolicy === 'default' || - cachePolicy === 'force-cache' || - cachePolicy === 'only-if-cached', - }, - scalars, - schema, - depthLimit, - hasCacheHit: false, - hasCacheMiss: false, - shouldFetch: false, - notifyCacheUpdate: cachePolicy !== 'default', - onSelect(selection, cacheNode) { - const now = Date.now(); - const { data, expiresAt: age = Infinity } = cacheNode ?? {}; +}: CreateContextOptions): SchemaContext => { + const disposeSubscriptions = new Set<() => void>(); + const selectSubscriptions = new Set(); - // Suggests a fetch on a stale or missing cache. - // - // We add a minimum of 100 ms leeway for caches with immedidate staleness, - // this prevents components from infinite rendering loop. - this.shouldFetch ||= data === undefined || age < now - 100; - this.hasCacheHit ||= data !== undefined; + return { + cache: + cachePolicy === 'no-cache' || + cachePolicy === 'no-store' || + cachePolicy === 'reload' + ? new Cache(undefined, { maxAge: Infinity }) + : cache, + cacheOptions: { + includeExpired: + cachePolicy === 'default' || + cachePolicy === 'force-cache' || + cachePolicy === 'only-if-cached', + }, + scalars, + schema, + depthLimit, + hasCacheHit: false, + hasCacheMiss: false, + shouldFetch: false, + notifyCacheUpdate: cachePolicy !== 'default', + select(selection, cacheNode) { + const now = Date.now(); + const { data, expiresAt: age = Infinity } = cacheNode ?? {}; - // Missing cache always notify on cache updates. - // The only case we skip this is when fetching for SWR on 'default'. - this.notifyCacheUpdate ||= data === undefined; + // Suggests a fetch on a stale or missing cache. + // + // We add a minimum of 100 ms leeway for caches with immedidate staleness, + // this prevents components from infinite rendering loop. + this.shouldFetch ||= data === undefined || age < now - 100; + this.hasCacheHit ||= data !== undefined; - onSelect?.(selection, cacheNode); - }, - typeKeys, -}); + // Missing cache always notify on cache updates. + // The only case we skip this is when fetching for SWR on 'default'. + this.notifyCacheUpdate ||= data === undefined; + + // onSelect?.(selection, cacheNode); + selectSubscriptions.forEach((fn) => fn(selection, cacheNode)); + }, + subscribeSelect(callback) { + selectSubscriptions.add(callback); + + return () => { + selectSubscriptions.delete(callback); + }; + }, + dispose() { + disposeSubscriptions.forEach((fn) => fn()); + disposeSubscriptions.clear(); + selectSubscriptions.clear(); + }, + subscribeDispose(callback) { + disposeSubscriptions.add(callback); + + return () => { + disposeSubscriptions.delete(callback); + }; + }, + typeKeys, + }; +}; diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index f677234d8..58ba5c235 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -128,13 +128,15 @@ export type Client = Persistors & export const createClient = < TSchema extends BaseGeneratedSchema, - // TODO: compat: remove in next major + // TODO: compat: remove in v4 _ObjectTypesNames extends string = never, - // TODO: compat: remove in next major + // TODO: compat: remove in v4 _ObjectTypes extends SchemaObjects = never >({ - // Legacy clients don't have this. - cache = new Cache(), + // This default cache on a required option is for legacy clients, which does + // not provide a `cache` option. + // TODO: compat: remove in v4 + cache = new Cache(undefined, { normalization: true }), fetchOptions: { fetcher, cachePolicy: fetchPolicy = 'default', diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 604f9aae9..f1ab2fd48 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -5,6 +5,7 @@ import type { GQtyError, RetryOptions } from '../Error'; import type { ScalarsEnumsHash, Schema } from '../Schema'; import type { Selection } from '../Selection'; import { pick } from '../Utils/pick'; +import { addSelections, delSelectionsSet, getSelectionsSet } from './batching'; import { createContext, SchemaContext } from './context'; import type { Debugger } from './debugger'; import { @@ -63,9 +64,7 @@ export type Resolvers = { subscribe: SubscribeFn; }; -export type CreateResolverFn = ( - options?: ResolveOptions -) => { +export type ResolverParts = { accessor: TSchema; context: SchemaContext; resolve: () => Promise; @@ -77,6 +76,10 @@ export type CreateResolverFn = ( }) => () => void; }; +export type CreateResolverFn = ( + options?: ResolveOptions +) => ResolverParts; + export type ResolveFn = < TData extends Record = Record >( @@ -135,7 +138,7 @@ export type ResolveOptions = { onFetch?: (fetchPromise: Promise) => void; - onSelect?: NonNullable; + onSelect?: SchemaContext['select']; operationName?: string; }; @@ -175,7 +178,7 @@ export type SubscribeOptions = { */ onError?: (error: unknown) => void; - onSelect?: NonNullable; + onSelect?: SchemaContext['select']; /** * Called when a subscription is established, receives an unsubscribe @@ -187,6 +190,11 @@ export type SubscribeOptions = { operationName?: string; }; +/** + * A client level query batcher. + */ +const pendingQueries = new WeakMap>, Promise>(); + export const createResolvers = ({ cache: clientCache, debugger: debug, @@ -212,18 +220,20 @@ export const createResolvers = ({ cache: clientCache, depthLimit, cachePolicy, - onSelect(selection, cache) { - // Prevents infinite loop created by legacy functions - if (!selections.has(selection)) { - selections.add(selection); - parentContext?.onSelect(selection, cache); - } - - onSelect?.(selection, cache); - }, scalars, schema, }); + + context.subscribeSelect((selection, cache) => { + // Prevents infinite loop created by legacy functions + if (!selections.has(selection)) { + selections.add(selection); + parentContext?.select(selection, cache); + } + + onSelect?.(selection, cache); + }); + const accessor = createSchemaAccessor(context); const resolve = async () => { @@ -234,26 +244,58 @@ export const createResolvers = ({ throw new TypeError('Failed to fetch'); } - return fetchSelections(selections, { - cache: context.cache, - debugger: debug, - fetchOptions: { - ...fetchOptions, - cachePolicy, - retryPolicy, - }, - operationName, - }).then((results) => { - updateCaches( - results, - cachePolicy !== 'no-store' && context.cache !== clientCache - ? [context.cache, clientCache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } + // Batch selections up at client level, fetch all of them "next tick". + const selectionsCacheKey = `${cachePolicy}/${operationName ?? ''}`; + + const pendingSelections = addSelections( + clientCache, + selectionsCacheKey, + selections + ); + + if (!pendingQueries.has(pendingSelections)) { + pendingQueries.set( + pendingSelections, + new Promise((resolve, reject) => { + queueMicrotask(() => { + const selections = new Set( + [ + ...(getSelectionsSet(clientCache, selectionsCacheKey) ?? []), + ].flatMap((selections) => [...selections]) + ); + + pendingQueries.delete(pendingSelections); + + delSelectionsSet(clientCache, selectionsCacheKey); + + fetchSelections(selections, { + cache: context.cache, + debugger: debug, + fetchOptions: { + ...fetchOptions, + cachePolicy, + retryPolicy, + }, + operationName, + }) + .then((results) => { + updateCaches( + results, + cachePolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } + ); + + return results; + }) + .then(resolve, reject); + }); + }) ); + } - return results; - }); + return pendingQueries.get(pendingSelections)!; }; const subscribe = ({ @@ -286,7 +328,9 @@ export const createResolvers = ({ // fetch query and mutation. if (context.shouldFetch) { - // resolve() takes the original set, remove subscriptions from it. + // resolve() directly processes the selections set, remove subscription + // selections before calling it, we handle subscription differently + // below. for (const selection of selections) { if (selection.root.key === 'subscription') { selections.delete(selection); @@ -297,13 +341,13 @@ export const createResolvers = ({ promises.push(resolve()); } - // Add it back, subscribe() AsyncGenerator needs it. + // Add subscription selections back after resolve(), the subscribe() + // AsyncGenerator needs it. for (const selection of subscriptionSelections) { selections.add(selection); } - // Subscriptions should disregard context.shouldFetch(), always subscribe - // for changes. + // Subscriptions ignore shouldFetch, always subscribe for changes. { const promise = new Promise((resolve, reject) => { const unsubscribe: Unsubscribe = subscribeSelections( diff --git a/packages/gqty/src/Disposable.ts b/packages/gqty/src/Disposable.ts new file mode 100644 index 000000000..6be9289fd --- /dev/null +++ b/packages/gqty/src/Disposable.ts @@ -0,0 +1,19 @@ +import { type Unsubscribe } from './Unsubscribe'; + +/** + * Objects that can be manually disposed, disposed objects simply opens up + * itself for GC. + * + * Subscribers of the dispose function are supposed to release all references to + * the object when notified. + */ +export interface Disposable { + /** + * Notifying subscribers about the intended dispoal of this object, + * subscribers are responsible to remove any references and release any + * resources. + */ + dispose(): void; + + subscribeDispose(callback: () => void): Unsubscribe; +} diff --git a/packages/gqty/src/Helpers/InfiniteFrailMap.ts b/packages/gqty/src/Helpers/InfiniteFrailMap.ts new file mode 100644 index 000000000..89bced322 --- /dev/null +++ b/packages/gqty/src/Helpers/InfiniteFrailMap.ts @@ -0,0 +1,15 @@ +import { FrailMap } from './FrailMap'; + +export class InfiniteFrailMap extends FrailMap< + K, + V | InfiniteFrailMap> +> { + get(key: K): V | InfiniteFrailMap> { + const value = + super.get(key) ?? new InfiniteFrailMap>(); + + super.set(key, value); + + return value; + } +} diff --git a/packages/gqty/src/Helpers/prepass.ts b/packages/gqty/src/Helpers/prepass.ts index 0277ca4de..fcecb7ce6 100644 --- a/packages/gqty/src/Helpers/prepass.ts +++ b/packages/gqty/src/Helpers/prepass.ts @@ -1,3 +1,4 @@ +import { Selection } from '../Selection'; import { isObject } from '../Utils'; function getFirstNonNullValue(list: T[]): T | void { @@ -12,9 +13,31 @@ export interface PrepassObjKey { export function prepass( v: T, ...keys: Array> +): T; +export function prepass( + v: T, + selections: Set +): T; +export function prepass( + v: T, + ...keys: Array> | [Set] ): T { if (v == null) return v; + keys = + keys[0] instanceof Set + ? (keys = [...keys[0]].map((selection) => { + return selection.ancestry.map((s) => + s.input + ? { + field: `${s.key}`, + variables: s.input.values, + } + : `${s.key}` + ); + })) + : (keys as Array>); + for (const composedKeys of keys) { const separatedKeys = typeof composedKeys === 'string' ? composedKeys.split('.') : composedKeys; diff --git a/packages/gqty/src/QueryBuilder/index.ts b/packages/gqty/src/QueryBuilder/index.ts index f0796a65a..c19c91d8c 100644 --- a/packages/gqty/src/QueryBuilder/index.ts +++ b/packages/gqty/src/QueryBuilder/index.ts @@ -27,20 +27,22 @@ type SelectionTreeRoot = Record< type SelectionBranchEntry = [keyof SelectionTreeRoot, SelectionTreeNode]; const stringifySelectionTree = (tree: SelectionTreeNode): string => - Object.entries(tree).reduce((prev, [key, value]) => { - const query = - typeof value === 'object' - ? `${key}{${stringifySelectionTree(value as SelectionTreeNode)}}` - : key; - - // TODO: buildQuery.test.ts wants exact output of `graphql` parse, - // but this is not future proof and unnecessarily hits the performance. - if (!prev || prev.endsWith('}') || prev.endsWith('{')) { - return `${prev}${query}`; - } else { - return `${prev} ${query}`; - } - }, ''); + Object.entries(tree) + .sort(([a], [b]) => a.localeCompare(b)) + .reduce((prev, [key, value]) => { + const query = + typeof value === 'object' + ? `${key}{${stringifySelectionTree(value as SelectionTreeNode)}}` + : key; + + // TODO: buildQuery.test.ts wants exact output of `graphql` parse, + // but this is not future proof and unnecessarily hits the performance. + if (!prev || prev.endsWith('}') || prev.endsWith('{')) { + return `${prev}${query}`; + } else { + return `${prev} ${query}`; + } + }, ''); export const buildQuery = ( selections: Set, diff --git a/packages/gqty/src/Selectable.ts b/packages/gqty/src/Selectable.ts new file mode 100644 index 000000000..3dc574a45 --- /dev/null +++ b/packages/gqty/src/Selectable.ts @@ -0,0 +1,12 @@ +import { type CacheDataContainer } from './Cache'; +import { type Selection } from './Selection'; +import { type Unsubscribe } from './Unsubscribe'; + +/** + * Containers that handles selections. + */ +export interface Selectable { + select(selection: Selection, cache?: CacheDataContainer): void; + + subscribeSelect(callback: Selectable['select']): Unsubscribe; +} diff --git a/packages/gqty/src/Unsubscribe.ts b/packages/gqty/src/Unsubscribe.ts new file mode 100644 index 000000000..6daf8d0b6 --- /dev/null +++ b/packages/gqty/src/Unsubscribe.ts @@ -0,0 +1 @@ +export type Unsubscribe = () => void; diff --git a/packages/gqty/test/buildQuery.test.ts b/packages/gqty/test/buildQuery.test.ts index 49a2d9c42..5c865f120 100644 --- a/packages/gqty/test/buildQuery.test.ts +++ b/packages/gqty/test/buildQuery.test.ts @@ -44,7 +44,7 @@ describe('buildQuery()', () => { ); expect(query).toMatchInlineSnapshot( - `"query{a{b{c{d{...on val1{b a{f}}...on val2{a{f}}}}}}}"` + `"query{a{b{c{d{...on val1{a{f}b}...on val2{a{f}}}}}}}"` ); expect(variables).toBe(undefined); @@ -77,7 +77,7 @@ describe('buildQuery()', () => { ); expect(query).toMatchInlineSnapshot( - `"query($v1:Int!$v2:String!){gqtyAlias_1:a(a:$v1 b:$v2){a_b a_c}d}"` + `"query($v1:Int!$v2:String!){d gqtyAlias_1:a(a:$v1 b:$v2){a_b a_c}}"` ); expect(() => parse(query)).not.toThrow(); expect(variables).toEqual({ v1: 1, v2: 1 }); diff --git a/packages/gqty/test/cache.test.ts b/packages/gqty/test/cache.test.ts index 97921f616..f651ad8e1 100644 --- a/packages/gqty/test/cache.test.ts +++ b/packages/gqty/test/cache.test.ts @@ -18,7 +18,10 @@ describe('Cache#dataAccessors', () => { }, scalars: { String: true }, depthLimit: 15, - onSelect: () => {}, + select: () => {}, + subscribeSelect: () => () => {}, + dispose: () => {}, + subscribeDispose: () => () => {}, notifyCacheUpdate: false, shouldFetch: false, hasCacheHit: false, @@ -67,7 +70,7 @@ describe('Cache#dataAccessors', () => { const schema = createSchemaAccessor<{ query: { b: { c: string } } }>({ ...mockContext, cache, - onSelect(selection) { + select(selection) { selections.push(selection); }, }); @@ -89,7 +92,10 @@ describe('Cache#data', () => { }, scalars: { String: true }, depthLimit: 15, - onSelect: () => {}, + select: () => {}, + subscribeSelect: () => () => {}, + dispose: () => {}, + subscribeDispose: () => () => {}, notifyCacheUpdate: false, shouldFetch: false, hasCacheHit: false, diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index d031186b6..4d1317fcb 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -294,7 +294,7 @@ describe('compat', () => { expect(queries).toMatchObject( expect.arrayContaining([ expect.objectContaining({ - query: expect.stringContaining('...on A{id a}...on B{id b}'), + query: expect.stringContaining('...on A{a id}...on B{b id}'), }), ]) ); diff --git a/packages/gqty/test/interfaces-unions.test.ts b/packages/gqty/test/interfaces-unions.test.ts index 0760b28b4..a47bd4d10 100644 --- a/packages/gqty/test/interfaces-unions.test.ts +++ b/packages/gqty/test/interfaces-unions.test.ts @@ -124,7 +124,7 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename id ...on A{a}...on B{b}}}", + "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename ...on A{a}...on B{b}id}}", "result": { "data": { "b55fc": { @@ -187,7 +187,7 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename id ...on A{a node{__typename id ...on A{id node{__typename id ...on C{node{__typename id ...on A{id}}}}}}}...on B{b}}}", + "query": "query($v1:NodeType!){b55fc:node(type:$v1){__typename ...on A{a node{__typename ...on A{id node{__typename ...on C{node{__typename ...on A{id}id}}id}}id}}...on B{b}id}}", "result": { "data": { "b55fc": { diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 14f205110..d204a883c 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -51,7 +51,7 @@ describe('playground', () => { expect(query.human().sons).toEqual([]); expect(JSON.stringify(cache)).toMatchInlineSnapshot( - `"{"query":{"human":{"__ref":"Human:1"},"hello":"XDXD"},"normalized":{"Human:1":{"__typename":"Human","id":"1","dogs":[{"__typename":"Dog"},{"__typename":"Dog"}],"father":{"__typename":"Human"},"name":"default","node":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}],"nullFather":null,"sons":[],"union":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}]}}}"` + `"{"query":{"human":{"__ref":"Human:1"},"hello":"XDXD"},"normalized":{"Human:1":{"__typename":"Human","dogs":[{"__typename":"Dog"},{"__typename":"Dog"}],"father":{"__typename":"Human"},"id":"1","name":"default","node":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}],"nullFather":null,"sons":[],"union":[{"__typename":"A"},{"__typename":"B"},{"__typename":"C"}]}}}"` ); setCache(query, { diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 78f2ed24b..facd390dd 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -82,11 +82,10 @@ export function createLogger( selections, }: DebugEvent) { const startTime = Date.now(); + const fetchTime = startTime - startTime; // TODO: Implement an actual timer const queryId = (QueryIdMapper[query] ||= ++idMapper); - const fetchTime = Date.now() - startTime; - console.groupCollapsed( ...format( ['GraphQL ', 'color: gray'], @@ -97,7 +96,12 @@ export function createLogger( ['ID ' + queryId + ' ', 'color: green'], ...(label ? [[label + ' ', 'color: green']] : []), [`(${fetchTime}ms)`, 'color: gray'], - [` ${selections.size} selections`, 'color: gray'], + [ + ` ${ + new Set([...selections].map((s) => s.root.getLeafNodes())).size + } selections`, + 'color: gray', + ], error && [ 'FAILED', diff --git a/packages/react/package.json b/packages/react/package.json index 7fa01ad44..65f07a953 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -78,6 +78,7 @@ ], "dependencies": { "@react-hookz/web": "^22.0.0", + "multidict": "^1.0.6", "p-debounce": "^4.0.0", "p-defer": "^3.0.0", "react-ssr-prepass": "^1.5.0", diff --git a/packages/react/src/query/hoc.tsx b/packages/react/src/query/hoc.tsx index a028436e9..865b9b687 100644 --- a/packages/react/src/query/hoc.tsx +++ b/packages/react/src/query/hoc.tsx @@ -1,5 +1,12 @@ import { useRerender } from '@react-hookz/web'; import type { GQtyClient } from 'gqty'; +// import { +// Suspense, +// useEffect, +// type FunctionComponent, +// type ReactElement, +// type SuspenseProps, +// } from 'react'; import * as React from 'react'; import type { OnErrorHandler } from '../common'; import type { ReactClientOptionsWithDefaults } from '../utils'; @@ -45,7 +52,7 @@ export function createGraphqlHOC( resolve, } = createResolver({ operationName, retryPolicy: retry }); const unsubscribe = subscribeLegacySelections((selection, cache) => { - context.onSelect?.(selection, cache); + context.select(selection, cache); }); const render = useRerender(); React.useEffect(render, [staleWhileRevalidate]); @@ -89,7 +96,7 @@ export function createGraphqlHOC( withGraphQL.displayName = `GraphQLComponent(${ component?.displayName || component?.name || 'Anonymous' - })${Date.now}`; + })${Date.now()}`; return withGraphQL; }; diff --git a/packages/react/src/query/usePaginatedQuery.ts b/packages/react/src/query/usePaginatedQuery.ts index 52e03dfec..71971894b 100644 --- a/packages/react/src/query/usePaginatedQuery.ts +++ b/packages/react/src/query/usePaginatedQuery.ts @@ -188,7 +188,7 @@ export const createUsePaginatedQuery = operationName, retryPolicy: retry, onSelect(selection, cache) { - context.onSelect(selection, cache); + context.select(selection, cache); }, }) as Promise; diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 2d20afca8..e74f13e04 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -7,21 +7,23 @@ import { useUpdateEffect, } from '@react-hookz/web'; import { - BaseGeneratedSchema, - GQtyClient, GQtyError, prepass, - RetryOptions, + type BaseGeneratedSchema, + type GQtyClient, + type RetryOptions, } from 'gqty'; +import { MultiDict } from 'multidict'; import { useCallback, useEffect, useMemo, useRef } from 'react'; import { - LegacyFetchPolicy, - OnErrorHandler, translateFetchPolicy, + type LegacyFetchPolicy, + type OnErrorHandler, } from '../common'; +import { useIsRendering } from '../useIsRendering'; import { useOnlineEffect } from '../useOnlineEffect'; import { useWindowFocusEffect } from '../useWindowFocusEffect'; -import type { ReactClientOptionsWithDefaults } from '../utils'; +import { type ReactClientOptionsWithDefaults } from '../utils'; export interface UseQueryPrepareHelpers< GeneratedSchema extends { @@ -33,14 +35,15 @@ export interface UseQueryPrepareHelpers< } export interface UseQueryOptions { cachePolicy?: RequestCache; + fetchInBackground?: boolean; fetchPolicy?: LegacyFetchPolicy; notifyOnNetworkStatusChange?: boolean; onError?: OnErrorHandler; operationName?: string; prepare?: (helpers: UseQueryPrepareHelpers) => void; refetchInterval?: number; - refetchIntervalInBackground?: boolean; refetchOnReconnect?: boolean; + refetchOnRender?: boolean; refetchOnWindowVisible?: boolean; retry?: RetryOptions; retryPolicy?: RetryOptions; @@ -65,7 +68,7 @@ export type Writeable = { -readonly [P in keyof T]: T[P] }; export type UseQueryReturnValue = GeneratedSchema['query'] & { $state: UseQueryState; - $refetch: () => Promise; + $refetch: (ignoreCache?: boolean) => Promise; }; export interface UseQuery { @@ -74,49 +77,72 @@ export interface UseQuery { ): UseQueryReturnValue; } -export const createUseQuery = - ( - client: GQtyClient, - { - defaults: { - suspense: defaultSuspense, - staleWhileRevalidate: defaultStaleWhileRevalidate, - retry: defaultRetry, - }, - }: ReactClientOptionsWithDefaults - ): UseQuery => - ({ +export const createUseQuery = ( + client: GQtyClient, + { + defaults: { + suspense: defaultSuspense, + staleWhileRevalidate: defaultStaleWhileRevalidate, + retry: defaultRetry, + }, + }: ReactClientOptionsWithDefaults +): UseQuery => { + type ResolverParts = ReturnType; + + const cofetchingResolvers = new MultiDict(); + + let currentResolver: ResolverParts | undefined = undefined; + + return ({ + fetchInBackground = false, fetchPolicy, cachePolicy = translateFetchPolicy(fetchPolicy ?? 'cache-first'), - notifyOnNetworkStatusChange = true, + suspense = defaultSuspense, + notifyOnNetworkStatusChange = !suspense, onError, operationName, prepare, refetchInterval, - refetchIntervalInBackground, refetchOnReconnect = true, + refetchOnRender = true, refetchOnWindowVisible = true, retry = defaultRetry, retryPolicy = retry, staleWhileRevalidate = defaultStaleWhileRevalidate, - suspense = defaultSuspense, } = {}) => { - const render = useRerender(); - const debouncedRender = useDebouncedCallback(render, [render], 50); + const getIsRendering = useIsRendering(); + const resolver = useMemo(() => { + const resolver = client.createResolver({ + cachePolicy, + operationName, + retryPolicy, + onSelect() { + // Stick these resolvers together, their selections will be fetched + // when either one of them requires a fetch. + if (currentResolver && currentResolver !== resolver) { + cofetchingResolvers.set(currentResolver, resolver); + } + + // Trigger a fetch when selections are made outside of the rendering + // phase, such as event listeners or polling. + if (!getIsRendering()) { + refetch({ skipPrepass: true }); + } + }, + }); + + currentResolver = resolver; + + return resolver; + }, [cachePolicy, operationName, retryPolicy]); + const { accessor: { query }, + accessor, context, resolve, selections, - } = useMemo( - () => - client.createResolver({ - cachePolicy, - operationName, - retryPolicy, - }), - [cachePolicy, operationName, retryPolicy] - ); + } = resolver; const [state, setState] = useThrottledState<{ error?: GQtyError; @@ -153,6 +179,8 @@ export const createUseQuery = // after render so it cannot be done via useEffect, instead refs has to be // used. { + const render = useRerender(); + const debouncedRender = useDebouncedCallback(render, [render], 50); const selectionSizeRef = useRef(0); const unsubscribeRef = useRef<() => void>(); @@ -169,17 +197,45 @@ export const createUseQuery = } const refetch = useCallback( - async (force = false) => { - if (!force && !context.shouldFetch) return; + async (options?: { ignoreCache?: boolean; skipPrepass?: boolean }) => { if (state.promise !== undefined) return; + if ( + !fetchInBackground && + globalThis.document?.visibilityState !== 'visible' + ) { + return; + } + + // Run the current selection again to make sure cache freshness. + if (!options?.skipPrepass) { + prepass(accessor, selections); + } + + if (!options?.ignoreCache && !context.shouldFetch) return; + try { context.notifyCacheUpdate = true; context.shouldFetch = true; - const promise = resolve(); + // Sticky co-fetching selections is only needed when more than one + // active context are making selections in one component. This usually + // happens with mixed usage of useQuery and other query methods. + const pendingPromises = [...(cofetchingResolvers.get(resolver) ?? [])] + .map(async ({ context, resolve }) => { + context.shouldFetch = true; + + return resolve(); + }) + .concat(resolve()); + + const promise = Promise.all(pendingPromises); + + // Mutex lock, prevents multiple refetches from happening at the + // same time, without triggering a render. + state.promise = promise; - if (notifyOnNetworkStatusChange) { + if (!context.hasCacheHit && notifyOnNetworkStatusChange) { setState({ promise }); } @@ -194,54 +250,70 @@ export const createUseQuery = context.hasCacheHit = false; context.hasCacheMiss = false; context.notifyCacheUpdate = cachePolicy !== 'default'; + state.promise = undefined; setState({}); } }, - [cachePolicy, context.shouldFetch, operationName, selections] + [ + cachePolicy, + context.shouldFetch, + fetchInBackground, + operationName, + selections, + ] + ); + + // Release co-fetching context + useEffect( + () => () => { + cofetchingResolvers.delete(resolver); + }, + [] ); // context.shouldFetch only changes during component render, which happens // after this hook is called. A useEffect hook that runs every render // triggers a post-render check. useEffect(() => { - refetch(); - }); + if (!refetchOnRender) return; - // Legacy staleWhileRevalidate - const swrDiff = usePrevious(staleWhileRevalidate); - useUpdateEffect(() => { - if (staleWhileRevalidate && !Object.is(staleWhileRevalidate, swrDiff)) { - refetch(true); - } - }, [refetch, swrDiff]); + refetch({ skipPrepass: true }); + }); // refetchInterval useIntervalEffect(() => { - if ( - !refetchIntervalInBackground && - globalThis.document?.visibilityState !== 'visible' - ) - return; - - debouncedRender(); + refetch(); }, refetchInterval); // refetchOnReconnect useOnlineEffect(() => { - if (refetchOnReconnect) debouncedRender(); - }, [debouncedRender, refetchOnReconnect]); + if (!refetchOnReconnect) return; + + refetch(); + }, [refetchOnReconnect]); // A rerender should be enough to trigger a soft check, fetch will // happen if any of the accessed cache value is stale. - useWindowFocusEffect(debouncedRender, { - enabled: refetchOnWindowVisible, + useWindowFocusEffect(() => { + if (!refetchOnWindowVisible) return; + + refetch(); }); + // Legacy staleWhileRevalidate + const swrDiff = usePrevious(staleWhileRevalidate); + useUpdateEffect(() => { + if (!staleWhileRevalidate || Object.is(staleWhileRevalidate, swrDiff)) + return; + + refetch({ ignoreCache: true }); + }, [refetch, swrDiff]); + return useMemo(() => { return new Proxy( Object.freeze({ - $refetch: (force = true) => refetch(force), + $refetch: (ignoreCache = true) => refetch({ ignoreCache }), $state: Object.freeze({ isLoading: state.promise !== undefined, error: state.error, @@ -263,3 +335,4 @@ export const createUseQuery = ); }, [query, refetch, state]); }; +}; diff --git a/packages/react/src/query/useRefetch.ts b/packages/react/src/query/useRefetch.ts index 44e9aa042..e1ce5d9b9 100644 --- a/packages/react/src/query/useRefetch.ts +++ b/packages/react/src/query/useRefetch.ts @@ -81,7 +81,7 @@ export const createUseRefetch = ( }); selections.forEach((selection) => { - context.onSelect?.(selection); + context.select(selection); }); return resolve() as Promise; diff --git a/packages/react/src/useIsRendering.ts b/packages/react/src/useIsRendering.ts new file mode 100644 index 000000000..4a27239ad --- /dev/null +++ b/packages/react/src/useIsRendering.ts @@ -0,0 +1,16 @@ +import { useCallback, useEffect, useRef } from 'react'; + +/** + * Returns a stable getter of a boolean value that indicates if the component is + * currently rendering. + */ +export const useIsRendering = () => { + const isRenderingRef = useRef(true); + isRenderingRef.current = true; + + useEffect(() => { + isRenderingRef.current = false; + }); + + return useCallback(() => isRenderingRef.current, []); +}; diff --git a/packages/react/src/useSafeRender.ts b/packages/react/src/useSafeRender.ts index 0ee960b36..eb4e7651d 100644 --- a/packages/react/src/useSafeRender.ts +++ b/packages/react/src/useSafeRender.ts @@ -1,5 +1,6 @@ import { useRerender } from '@react-hookz/web'; import { useCallback, useEffect, useRef } from 'react'; +import { useIsRendering } from './useIsRendering'; /** * Triggers a re-render only when outside of a render phase, and at-most once @@ -8,18 +9,15 @@ import { useCallback, useEffect, useRef } from 'react'; export const useSafeRender = () => { const isCalledRef = useRef(false); - const isRenderingRef = useRef(true); - isRenderingRef.current = true; - useEffect(() => { isCalledRef.current = false; - isRenderingRef.current = false; }); const render = useRerender(); + const isRendering = useIsRendering(); return useCallback(() => { - if (isCalledRef.current || isRenderingRef.current) return; + if (isCalledRef.current || isRendering()) return; isCalledRef.current = true; render(); diff --git a/packages/react/src/useWindowFocusEffect.ts b/packages/react/src/useWindowFocusEffect.ts index 2955ddf04..4e8d208bc 100644 --- a/packages/react/src/useWindowFocusEffect.ts +++ b/packages/react/src/useWindowFocusEffect.ts @@ -1,4 +1,4 @@ -import { useEffect } from 'react'; +import { DependencyList, useEffect } from 'react'; export type UseFocusChangeEffectOptions = { enabled?: boolean; @@ -6,11 +6,9 @@ export type UseFocusChangeEffectOptions = { export const useWindowFocusEffect = ( fn: (...args: unknown[]) => unknown, - { enabled = true }: UseFocusChangeEffectOptions = {} + deps: DependencyList = [] ) => { useEffect(() => { - if (!enabled) return; - const visibilityChangeFn = () => { if (globalThis.document?.visibilityState === 'visible') { fn(); @@ -24,5 +22,5 @@ export const useWindowFocusEffect = ( globalThis.removeEventListener?.('visibilitychange', visibilityChangeFn); globalThis.removeEventListener?.('focus', visibilityChangeFn); }; - }, [enabled, fn]); + }, deps.concat(fn)); }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d79b838ad..72f5f3f29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,9 +59,6 @@ importers: chalk: specifier: ^5.2.0 version: 5.2.0 - changesets-github-release: - specifier: ^0.1.0 - version: 0.1.0 concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -653,6 +650,9 @@ importers: bob-tsm: specifier: ^1.1.2 version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -850,6 +850,9 @@ importers: '@react-hookz/web': specifier: ^22.0.0 version: 22.0.0(react-dom@17.0.2)(react@17.0.2) + multidict: + specifier: ^1.0.6 + version: 1.0.6 p-debounce: specifier: ^4.0.0 version: 4.0.0 @@ -7516,11 +7519,6 @@ packages: tslib: 2.5.0 dev: false - /changesets-github-release@0.1.0: - resolution: {integrity: sha512-ai++eLjlEjW4flLKExS8Li2a5qocO+N3YTR13aZCAwt4bgj6MYXgPfdoukLktaQXs3QUmaHz5dG2ISot/hZD5g==} - hasBin: true - dev: true - /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} From cb1af698a2254dcc5400750582f4df09fb07b9b9 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 26 Apr 2023 00:49:37 +0800 Subject: [PATCH 050/122] chore: changeset --- .changeset/clever-plums-shout.md | 5 +++++ .changeset/tiny-brooms-check.md | 2 +- package.json | 1 + pnpm-lock.yaml | 8 ++++++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .changeset/clever-plums-shout.md diff --git a/.changeset/clever-plums-shout.md b/.changeset/clever-plums-shout.md new file mode 100644 index 000000000..eb42aec2b --- /dev/null +++ b/.changeset/clever-plums-shout.md @@ -0,0 +1,5 @@ +--- +'gqty': minor +--- + +feat: batching by microtask diff --git a/.changeset/tiny-brooms-check.md b/.changeset/tiny-brooms-check.md index b7423bbe9..d693acb5d 100644 --- a/.changeset/tiny-brooms-check.md +++ b/.changeset/tiny-brooms-check.md @@ -1,5 +1,5 @@ --- -'@gqty/react': major +'@gqty/react': minor --- Fetch errors now throws to boundaries in suspense mode. diff --git a/package.json b/package.json index 5d8528f64..af6979875 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "bob-tsm": "^1.1.2", "bufferutil": "^4.0.7", "chalk": "^5.2.0", + "changesets-github-release": "^0.1.0", "concurrently": "^7.6.0", "esbuild": "^0.17.12", "globby": "^13.1.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72f5f3f29..18c6f9262 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,6 +59,9 @@ importers: chalk: specifier: ^5.2.0 version: 5.2.0 + changesets-github-release: + specifier: ^0.1.0 + version: 0.1.0 concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -7519,6 +7522,11 @@ packages: tslib: 2.5.0 dev: false + /changesets-github-release@0.1.0: + resolution: {integrity: sha512-ai++eLjlEjW4flLKExS8Li2a5qocO+N3YTR13aZCAwt4bgj6MYXgPfdoukLktaQXs3QUmaHz5dG2ISot/hZD5g==} + hasBin: true + dev: true + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} From c424afd7c2c5c5b8311ede51793483c69986c846 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 27 Apr 2023 03:06:57 +0800 Subject: [PATCH 051/122] chore: refactor generated client --- examples/gnt/app/page.tsx | 12 + examples/gnt/gqty/index.ts | 63 +-- .../src/commands/default/generateClient.ts | 6 - packages/cli/src/generate.ts | 52 +-- packages/cli/src/inspectWriteGenerate.ts | 6 - packages/cli/test/generate.test.ts | 246 +++-------- .../cli/test/inspectWriteGenerate.test.ts | 414 +++++------------- packages/cli/test/writeGenerate.test.ts | 59 +-- 8 files changed, 258 insertions(+), 600 deletions(-) diff --git a/examples/gnt/app/page.tsx b/examples/gnt/app/page.tsx index 8560651be..4e7cd2128 100644 --- a/examples/gnt/app/page.tsx +++ b/examples/gnt/app/page.tsx @@ -1,12 +1,24 @@ import { Suspense } from 'react'; +import Character from './Character'; import MyComponent from './MyComponent'; export default function Home() { return (
+ {/* CSR test */} + Loading...}> + + {/* RSC test */} + + {/* @ts-expect-error */} + + {/* @ts-expect-error */} + + {/* @ts-expect-error */} +
); } diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts index 397466478..fe63dec33 100644 --- a/examples/gnt/gqty/index.ts +++ b/examples/gnt/gqty/index.ts @@ -12,6 +12,8 @@ const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, fetchOptions ) { + console.debug({ query, variables }); + // Modify "https://rickandmortyapi.com/graphql" if needed const response = await fetch('https://rickandmortyapi.com/graphql', { method: 'POST', @@ -55,24 +57,20 @@ export const client = createClient({ }); // Core functions -const { resolve, subscribe, schema } = client; +export const { resolve, subscribe, schema } = client; // Legacy functions -const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - -const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); +export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +} = client; -const { +export const { graphql, useQuery, usePaginatedQuery, @@ -84,32 +82,15 @@ const { prepareReactRender, useHydrateCache, prepareQuery, -} = reactClient; +} = createReactClient(client, { + defaults: { + // Set this flag as "true" if your usage involves React Suspense + // Keep in mind that you can overwrite it in a per-hook basis + suspense: false, -export { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -}; + // Set this flag based on your needs + staleWhileRevalidate: false, + }, +}); -export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, -}; export * from './schema.generated'; diff --git a/packages/cli/src/commands/default/generateClient.ts b/packages/cli/src/commands/default/generateClient.ts index c9b77f6d7..2a0c1c04f 100644 --- a/packages/cli/src/commands/default/generateClient.ts +++ b/packages/cli/src/commands/default/generateClient.ts @@ -41,12 +41,6 @@ export const generateClient = async ( await writeGenerate(schema, configuration.destination, configuration); return; } - - if (existingFile.includes('export const {')) { - logger.warn( - `To prevent possible bundling issues, it's recommended to change the export syntax from "export const { query, ... } = client;" to "const { query, ... } = client; export { query, ... };"` - ); - } } ); diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 037853767..da698bc93 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -749,9 +749,7 @@ export async function generate( mutation: Mutation subscription: Subscription } - `; - typescriptTypes += ` export type MakeNullable = { [K in keyof T]: T[K] | undefined; }; @@ -854,39 +852,7 @@ export async function generate( const reactClientCode = react ? ` - ${ - isJavascriptOutput - ? `${typeDoc( - 'import("@gqty/react").ReactClient' - )}const reactClient = createReactClient(client, {` - : `const reactClient = createReactClient(client, {` - } - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false - } - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - ${subscriptions ? 'useSubscription,' : ''} - } = reactClient; - - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -899,7 +865,18 @@ export async function generate( useHydrateCache, prepareQuery, ${subscriptions ? 'useSubscription,' : ''} + } = ${ + isJavascriptOutput + ? `${typeDoc( + 'import("@gqty/react").ReactClient' + )}createReactClient(client, {` + : `createReactClient(client, {` } + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + } + }); `.trim() : ''; @@ -984,14 +961,13 @@ export async function generate( } // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = client; + export const { query, mutation, mutate, subscription, resolved, refetch, track } = client; ${reactClientCode} - export { resolve, subscribe, schema, query, mutation, mutate, subscription, resolved, refetch, track }; export * from "./schema.generated"; `); diff --git a/packages/cli/src/inspectWriteGenerate.ts b/packages/cli/src/inspectWriteGenerate.ts index ec77adb8f..ce9dba35e 100644 --- a/packages/cli/src/inspectWriteGenerate.ts +++ b/packages/cli/src/inspectWriteGenerate.ts @@ -198,12 +198,6 @@ export async function inspectWriteGenerate({ ); } } - - if (existingFile.includes('export const {')) { - console.warn( - `[Warning] To prevent possible bundling issues, it's recommended to change the export syntax from "export const { query, ... } = client;" to "const { query, ... } = client; export { query, ... };"` - ); - } }, transformSchemaOptions ); diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index 37c8cc08a..5423db679 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -193,39 +193,20 @@ test('basic functionality works', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - useSubscription, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -238,20 +219,13 @@ test('basic functionality works', async () => { useHydrateCache, prepareQuery, useSubscription, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -374,38 +348,20 @@ test('custom scalars works', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -417,20 +373,13 @@ test('custom scalars works', async () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -1483,42 +1432,20 @@ test('javascript output works', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - /** - * @type {import("@gqty/react").ReactClient} - */ - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - useSubscription, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -1531,23 +1458,21 @@ test('javascript output works', async () => { useHydrateCache, prepareQuery, useSubscription, - }; + } = + /** + * @type {import("@gqty/react").ReactClient} + */ + createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); + expect(javascriptSchemaCode).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -1808,38 +1733,20 @@ test('ignoreArgs transform', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -1851,20 +1758,13 @@ test('ignoreArgs transform', async () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index 5581a8e3e..7ccb7462c 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -111,38 +111,20 @@ test('basic inspectWriteGenerate functionality', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -154,20 +136,13 @@ test('basic inspectWriteGenerate functionality', async () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -335,38 +310,20 @@ describe('from file', () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -378,20 +335,13 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -558,38 +508,20 @@ describe('from file', () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -601,20 +533,13 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -780,38 +705,20 @@ describe('from file', () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -823,20 +730,13 @@ describe('from file', () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -1046,38 +946,20 @@ describe('from multiple files', () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -1089,20 +971,13 @@ describe('from multiple files', () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); @@ -1328,38 +1203,20 @@ test('specify generateOptions to inspectWriteGenerate', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -1371,23 +1228,17 @@ test('specify generateOptions to inspectWriteGenerate', async () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); + expect(generatedFileContentSchema).toMatchInlineSnapshot(` "/** * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY @@ -1699,38 +1550,20 @@ describe('CLI behavior', () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -1742,20 +1575,13 @@ describe('CLI behavior', () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 97b24d6a0..6eb65fd4f 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -294,38 +294,20 @@ test('creates dir, generates code and writes new file', async () => { }); // Core functions - const { resolve, subscribe, schema } = client; + export const { resolve, subscribe, schema } = client; // Legacy functions - const { query, mutation, mutate, subscription, resolved, refetch, track } = - client; - - const reactClient = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, - }); - - const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - } = reactClient; + export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, + } = client; - export { + export const { graphql, useQuery, usePaginatedQuery, @@ -337,20 +319,13 @@ test('creates dir, generates code and writes new file', async () => { prepareReactRender, useHydrateCache, prepareQuery, - }; + } = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, + }); - export { - resolve, - subscribe, - schema, - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, - }; export * from './schema.generated'; " `); From 9c8c469b3be6e8254c91f6b5772361a8fcf13f1a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 27 Apr 2023 16:04:53 +0800 Subject: [PATCH 052/122] chore: remove legacy website --- internal/website/docs/cli/codegen.mdx | 136 - internal/website/docs/cli/config.mdx | 57 - internal/website/docs/cli/javascript.mdx | 104 - internal/website/docs/cli/programmatic.mdx | 117 - internal/website/docs/client/config.mdx | 121 - .../website/docs/client/fetching-data.mdx | 197 - .../website/docs/client/helper-functions.mdx | 170 - internal/website/docs/client/mutations.mdx | 35 - internal/website/docs/client/persistence.mdx | 110 - .../website/docs/client/subscriptions.mdx | 79 - internal/website/docs/client/upload.mdx | 131 - internal/website/docs/development/logger.mdx | 47 - internal/website/docs/getting-started.mdx | 70 - internal/website/docs/intro/README.mdx | 107 - internal/website/docs/intro/contributing.mdx | 73 - internal/website/docs/intro/features.mdx | 32 - internal/website/docs/intro/how-it-works.mdx | 52 - internal/website/docs/react/config.mdx | 37 - internal/website/docs/react/fetching-data.mdx | 536 -- internal/website/docs/react/meta.mdx | 81 - internal/website/docs/react/mutations.mdx | 90 - internal/website/docs/react/ssr.mdx | 139 - internal/website/docs/react/subscriptions.mdx | 36 - internal/website/docs/react/suspense.mdx | 54 - .../website/docs/react/troubleshooting.mdx | 72 - internal/website/next-env.d.ts | 5 - internal/website/next-i18next.config.js | 6 - internal/website/next.config.js | 30 - internal/website/package.json | 50 - .../website/public/android-chrome-192x192.png | Bin 9722 -> 0 bytes .../website/public/android-chrome-512x512.png | Bin 28953 -> 0 bytes internal/website/public/apple-touch-icon.png | Bin 6890 -> 0 bytes internal/website/public/browserconfig.xml | 9 - internal/website/public/favicon-16x16.png | Bin 979 -> 0 bytes internal/website/public/favicon-32x32.png | Bin 1551 -> 0 bytes internal/website/public/favicon.ico | Bin 15086 -> 0 bytes internal/website/public/fonts.css | 26 - .../website/public/fonts/ColfaxWebBold.woff2 | Bin 34576 -> 0 bytes .../website/public/fonts/ColfaxWebLight.woff2 | Bin 33756 -> 0 bytes .../public/fonts/ColfaxWebMedium.woff2 | Bin 34164 -> 0 bytes .../public/fonts/ColfaxWebRegular.woff2 | Bin 34220 -> 0 bytes .../website/public/fonts/OperatorMono.otf | Bin 35788 -> 0 bytes internal/website/public/img/graphql.svg | 1 - .../public/img/intro/client-only_fields.png | Bin 27067 -> 0 bytes .../website/public/img/intro/intellisense.png | Bin 26332 -> 0 bytes .../img/javascript-output-type-error.png | Bin 65542 -> 0 bytes internal/website/public/img/logger.png | Bin 13072 -> 0 bytes .../public/img/logger/devtools_query.png | Bin 16526 -> 0 bytes .../public/img/logger/devtools_verbose.png | Bin 18106 -> 0 bytes .../website/public/img/production_ready.png | Bin 63566 -> 0 bytes .../website/public/img/react-key-warning.png | Bin 3476 -> 0 bytes internal/website/public/img/react.svg | 9 - internal/website/public/img/suspense-ssr.png | Bin 6747 -> 0 bytes internal/website/public/img/typescript.png | Bin 10493 -> 0 bytes .../website/public/locales/en/common.json | 3 - internal/website/public/logo.png | Bin 23999 -> 0 bytes internal/website/public/logo/logo-light.svg | 13 - internal/website/public/logo/logo-sm.svg | 13 - internal/website/public/logo/logo.svg | 16 - internal/website/public/mstile-150x150.png | Bin 6736 -> 0 bytes internal/website/public/powered-by-vercel.svg | 6 - internal/website/public/safari-pinned-tab.svg | 7830 ----------------- internal/website/public/site.webmanifest | 19 - internal/website/public/style.css | 26 - .../public/video/invisible-data-fetching.mp4 | Bin 38007 -> 0 bytes internal/website/routes.ts | 65 - .../website/src/components/Examples/App.tsx | 105 - .../website/src/components/Examples/Embed.tsx | 81 - .../src/components/Examples/NavLink.tsx | 57 - .../src/components/Examples/Sidebar.tsx | 30 - .../website/src/components/ThemeSwitch.tsx | 18 - internal/website/src/pages/_app.tsx | 288 - internal/website/src/pages/_document.tsx | 44 - .../website/src/pages/docs/[[...slug]].tsx | 51 - internal/website/src/pages/examples/index.tsx | 81 - .../src/pages/examples/suspense/auth.tsx | 96 - .../src/pages/examples/suspense/query.tsx | 27 - internal/website/src/pages/index.tsx | 117 - internal/website/tsconfig.json | 20 - 79 files changed, 11825 deletions(-) delete mode 100644 internal/website/docs/cli/codegen.mdx delete mode 100644 internal/website/docs/cli/config.mdx delete mode 100644 internal/website/docs/cli/javascript.mdx delete mode 100644 internal/website/docs/cli/programmatic.mdx delete mode 100644 internal/website/docs/client/config.mdx delete mode 100644 internal/website/docs/client/fetching-data.mdx delete mode 100644 internal/website/docs/client/helper-functions.mdx delete mode 100644 internal/website/docs/client/mutations.mdx delete mode 100644 internal/website/docs/client/persistence.mdx delete mode 100644 internal/website/docs/client/subscriptions.mdx delete mode 100644 internal/website/docs/client/upload.mdx delete mode 100644 internal/website/docs/development/logger.mdx delete mode 100644 internal/website/docs/getting-started.mdx delete mode 100644 internal/website/docs/intro/README.mdx delete mode 100644 internal/website/docs/intro/contributing.mdx delete mode 100644 internal/website/docs/intro/features.mdx delete mode 100644 internal/website/docs/intro/how-it-works.mdx delete mode 100644 internal/website/docs/react/config.mdx delete mode 100644 internal/website/docs/react/fetching-data.mdx delete mode 100644 internal/website/docs/react/meta.mdx delete mode 100644 internal/website/docs/react/mutations.mdx delete mode 100644 internal/website/docs/react/ssr.mdx delete mode 100644 internal/website/docs/react/subscriptions.mdx delete mode 100644 internal/website/docs/react/suspense.mdx delete mode 100644 internal/website/docs/react/troubleshooting.mdx delete mode 100644 internal/website/next-env.d.ts delete mode 100644 internal/website/next-i18next.config.js delete mode 100644 internal/website/next.config.js delete mode 100644 internal/website/package.json delete mode 100644 internal/website/public/android-chrome-192x192.png delete mode 100644 internal/website/public/android-chrome-512x512.png delete mode 100644 internal/website/public/apple-touch-icon.png delete mode 100644 internal/website/public/browserconfig.xml delete mode 100644 internal/website/public/favicon-16x16.png delete mode 100644 internal/website/public/favicon-32x32.png delete mode 100644 internal/website/public/favicon.ico delete mode 100644 internal/website/public/fonts.css delete mode 100644 internal/website/public/fonts/ColfaxWebBold.woff2 delete mode 100644 internal/website/public/fonts/ColfaxWebLight.woff2 delete mode 100644 internal/website/public/fonts/ColfaxWebMedium.woff2 delete mode 100644 internal/website/public/fonts/ColfaxWebRegular.woff2 delete mode 100644 internal/website/public/fonts/OperatorMono.otf delete mode 100644 internal/website/public/img/graphql.svg delete mode 100644 internal/website/public/img/intro/client-only_fields.png delete mode 100644 internal/website/public/img/intro/intellisense.png delete mode 100644 internal/website/public/img/javascript-output-type-error.png delete mode 100644 internal/website/public/img/logger.png delete mode 100644 internal/website/public/img/logger/devtools_query.png delete mode 100644 internal/website/public/img/logger/devtools_verbose.png delete mode 100644 internal/website/public/img/production_ready.png delete mode 100644 internal/website/public/img/react-key-warning.png delete mode 100644 internal/website/public/img/react.svg delete mode 100644 internal/website/public/img/suspense-ssr.png delete mode 100644 internal/website/public/img/typescript.png delete mode 100644 internal/website/public/locales/en/common.json delete mode 100644 internal/website/public/logo.png delete mode 100644 internal/website/public/logo/logo-light.svg delete mode 100644 internal/website/public/logo/logo-sm.svg delete mode 100644 internal/website/public/logo/logo.svg delete mode 100644 internal/website/public/mstile-150x150.png delete mode 100644 internal/website/public/powered-by-vercel.svg delete mode 100644 internal/website/public/safari-pinned-tab.svg delete mode 100644 internal/website/public/site.webmanifest delete mode 100644 internal/website/public/style.css delete mode 100644 internal/website/public/video/invisible-data-fetching.mp4 delete mode 100644 internal/website/routes.ts delete mode 100644 internal/website/src/components/Examples/App.tsx delete mode 100644 internal/website/src/components/Examples/Embed.tsx delete mode 100644 internal/website/src/components/Examples/NavLink.tsx delete mode 100644 internal/website/src/components/Examples/Sidebar.tsx delete mode 100644 internal/website/src/components/ThemeSwitch.tsx delete mode 100644 internal/website/src/pages/_app.tsx delete mode 100644 internal/website/src/pages/_document.tsx delete mode 100644 internal/website/src/pages/docs/[[...slug]].tsx delete mode 100644 internal/website/src/pages/examples/index.tsx delete mode 100644 internal/website/src/pages/examples/suspense/auth.tsx delete mode 100644 internal/website/src/pages/examples/suspense/query.tsx delete mode 100644 internal/website/src/pages/index.tsx delete mode 100644 internal/website/tsconfig.json diff --git a/internal/website/docs/cli/codegen.mdx b/internal/website/docs/cli/codegen.mdx deleted file mode 100644 index 534c01bda..000000000 --- a/internal/website/docs/cli/codegen.mdx +++ /dev/null @@ -1,136 +0,0 @@ ---- -id: codegen -title: Codegen ---- - -Given it's [configuration](/docs/cli/config), creates a typed gqty client from a graphql endpoint/schema. - -## Installation - -Install the following dependencies to your project: - - - -## Command - -After `@gless/cli` is installed in your package, you should add a `script` in your `package.json`. - -```json -{ - "scripts": { - "generate": "gqty generate" - } -} -``` - -Then, you can execute: - - - -## Format output code - -The CLI code generator comes with built in support for formatting code using [Prettier](https://prettier.io/). The config search will start at the output directory and will continue up the directories tree. - -## Default client generated code - -By default with `react` & `subscriptions` turned on, the generated client files should look like this: - -```ts -import { createReactClient } from '@gqty/react'; -import { createClient as createSubscriptionsClient } from 'graphql-ws'; -import { createClient, QueryFetcher } from 'gqty'; -import { - GeneratedSchema, - generatedSchema, - scalarsEnumsHash, -} from './schema.generated'; - -const queryFetcher: QueryFetcher = async function ({ - query, - variables, - operationName, -}) { - // Modify "/api/graphql" if needed - const response = await fetch('/api/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query, - variables, - operationName, - }), - mode: 'cors', - }); - - const json = await response.json(); - - return json; -}; - -const subscriptionsClient = - typeof window !== 'undefined' - ? createSubscriptionsClient({ - lazy: true, - url: () => { - // Modify if needed - const url = new URL('/api/graphql', window.location.href); - url.protocol = url.protocol.replace('http', 'ws'); - return url.href; - }, - }) - : undefined; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - subscriber: subscriptionsClient, - }, -}); - -export const { - query, - mutation, - mutate, - subscription, - resolved, - refetch, - track, -} = client; - -export const { - graphql, - useQuery, - useTransactionQuery, - useLazyQuery, - useMutation, - useRefetch, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, - useSubscription, -} = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); - -export * from './schema.generated'; -``` - -You can modify this file safely, and each client has configurations you can set. - -- See [Core client configuration](/docs/client/config) - -- See [React configuration](/docs/react/config) - -- See [Subscriptions configuration](/docs/client/subscriptions) diff --git a/internal/website/docs/cli/config.mdx b/internal/website/docs/cli/config.mdx deleted file mode 100644 index 0d22f50dd..000000000 --- a/internal/website/docs/cli/config.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -id: config -title: CLI Configuration -sidebar_label: Configuration ---- - -The `CLI` looks for 3 places of configuration files/property, in this respective order: - -1. `gqty.config.cjs` -2. `gqty.config.js` -3. `gqty` property inside `package.json` - -And since it's using [cosmiconfig](https://github.com/davidtheclark/cosmiconfig) to resolve it, if you are using GQty in a monorepo, having it in the root of your monorepo might be enough :tada:. - -## Default Config - -The default configuration file, which is automatically generated after the first execution of `gqty generate`, should look like this: - -```js -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - enumsAsStrings: false, - react: true, - scalarTypes: { DateTime: 'string' }, - preImport: '', - introspection: { - endpoint: 'SPECIFY_ENDPOINT_OR_SCHEMA_FILE_PATH_HERE', - headers: {}, - }, - destination: './src/gqty/index.ts', - subscriptions: false, -}; - -module.exports = config; -``` - -## Properties - -| Name | Type | Description | -| ---------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| enumsAsStrings | `boolean` | Whether to use enums as simple string types, or as the default [Object String Enums of TypeScript](https://www.typescriptlang.org/docs/handbook/enums.html#string-enums). | -| react | `boolean` | Whether to add the [React](/docs/react/fetching-data) bindings to the first-generated client. | -| scalarTypes | `Record` | Mapping of Custom Scalar Types to TypeScript, since by default, **any custom scalar will be casted as `any`**. | -| preImport | `string` | Code to be added at the very beginning of the generated `schema file`, useful for adding custom imported types in custom scalars. | -| introspection.endpoint | `string` | Endpoint from where the introspection of the target GraphQL API, it can be an `http`/`https` endpoint, or the path of a `.gql` GraphQL schema file. | -| introspection.headers | `Record` | Custom headers to be added to `http`/`https` introspection, normally for authorization purposes. | -| destination | `string` | **File destination** of the generated client. Keep in mind that the generated schema always will be alongside this destination, but named `schema.generated.ts`. | -| subscriptions | `boolean` | Whether to add [Subscriptions](/docs/client/subscriptions) support to the client. | -| transformSchema | `(schema: GraphQLSchema, graphql_js: import("graphql")) => Promise | GraphQLSchema` | Transform the GraphQL Schema before being used to generate the client | - ---- - -- See [JavaScript Output](/docs/cli/javascript) -- See [Programmatic Usage](/docs/cli/programmatic) -- See [Codegen](/docs/cli/codegen) diff --git a/internal/website/docs/cli/javascript.mdx b/internal/website/docs/cli/javascript.mdx deleted file mode 100644 index da959934b..000000000 --- a/internal/website/docs/cli/javascript.mdx +++ /dev/null @@ -1,104 +0,0 @@ ---- -id: javascript -title: JavaScript Output ---- - -Although the focus of GQty is to be used in [TypeScript](https://www.typescriptlang.org/), -it's completely possible to use it in JavaScript projects, outputting valid JavaScript code, -alongside it's type-definitions, and using [JSDoc](https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html) -to be able to use a typed GQty. - -We recommend taking a look at [Type Checking JavaScript files](https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html), [allowJs](https://www.typescriptlang.org/tsconfig#allowJs) and [checkJs](https://www.typescriptlang.org/tsconfig#checkJs). - -## Configuration - -To enable `JavaScript Output` you have to especify an extra `javascriptOutput` property in your [Configuration file](/docs/cli/config), with some extra considerations: - -```js -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - // It should be set as 'true' or removed. - enumsAsStrings: true, - - // You have to specify the '.js' extension - destination: './src/gqty/index.js', - - // This has to be set as 'true' - javascriptOutput: true, -}; - -module.exports = config; -``` - -And the client will be created following the structure: - -```bash -src/gqty -├── schema.generated.d.ts # Generated schema, you shouldn't modify it manually -├── schema.generated.js # Generated schema, you shouldn't modify it manually -└── index.js # gqty client is exported from here, you can safely modify it based on your needs -``` - -## Usage - -The usage should be exactly the same: - -```js -import { query, resolved } from './gqty/index.js'; - -resolved(() => { - const dogsNames = query.dogs.map((dog) => { - return dog.name; - }); - return { - type: query.time, - dogsNames, - }; -}) - .then((data) => { - console.log({ - data, - }); - }) - .catch(console.error); -``` - -With the caveat that, even if the autocomplete might allow you to import the types, it will probably mean a runtime-error: - -![Javascript Output Type Error](/img/javascript-output-type-error.png) - -To use the types, you have to use the [JSDoc](https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html) [`@type`](https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#type): - -```js -import { query, resolved } from '../gqty'; - -// ... - -// Here user should be automatically typed -const user = await resolved((query) => { - const user = query.user({ - id: '1', - }); - - user.id; - user.name; - - return user; -}); - -function readUserData( - /** - * @type {import("./gqty").User} - */ - user -) { - // Here `user` will be typed -} - -readUserData(user); -``` - -> For [`Node.js`](https://nodejs.org/) usage, if you don't have `"type": "module"` in your `package.json`, you might have to manually modify some `imports` to `requires`, -> since _for now_, outputting `.mjs` doesn't have much utility, since [TypeScript doesn't support it yet](https://github.com/microsoft/TypeScript/issues/18442) diff --git a/internal/website/docs/cli/programmatic.mdx b/internal/website/docs/cli/programmatic.mdx deleted file mode 100644 index 64848878b..000000000 --- a/internal/website/docs/cli/programmatic.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -id: programmatic -title: Programmatic usage of CLI -sidebar_label: Programmatic usage ---- - -**@gqty/cli** has also a complete programmatic API, which allows you to generate the client with custom scripts. - -## inspectWriteGenerate - -Basically calling CLI functionality programmatically. - -All the fields are optional, and it will always read from the [Configuration](/docs/cli/config) if any field is not specified. - -```tsx -import { inspectWriteGenerate } from '@gqty/cli'; - -await inspectWriteGenerate({ - destination: './src/gqty/index.ts', - generateOptions: { - preImport: '', - scalarTypes: { - DateTime: 'string', - }, - react: true, - enumsAsStrings: false, - subscriptions: false, - }, - headers: { - authorization: process.env.TOKEN, - }, -}); -``` - -## writeGenerate - -If you have direct access to the [GraphQLSchema](https://graphql.org/graphql-js/type/#graphqlschema) from [graphql-js](https://github.com/graphql/graphql-js), you can give it to this function and it will do the rest. - -All the `GenerateOptions` are optional, and it will always read from the [Configuration](/docs/cli/config) if any field is not specified. - -```tsx -import { writeGenerate } from '@gqty/cli'; - -// You get the `schema` from somewhere... - -await writeGenerate( - // Required - schema, - // Destination, Required - './src/gqty/index.ts', - // GenerateOptions, optional - { - preImport: '', - scalarTypes: { - DateTime: 'string', - }, - react: true, - enumsAsStrings: false, - subscriptions: false, - }, - // What to do if a gqty client file already exists, Optional - (existingFile) => { - // existingFile == string - } -); -``` - -## generate - -If you have direct access to the [GraphQLSchema](https://graphql.org/graphql-js/type/#graphqlschema) from [graphql-js](https://github.com/graphql/graphql-js), you can give it to this function and it generates the code and simply return it. - -All the GenerateOptions are optional, and it will always read from the [Configuration](/docs/cli/config) if any field is not specified. - -```tsx -import { generate } from '@gqty/cli'; - -// You get the `schema` from somewhere... - -const { clientCode, schemaCode, generatedSchema, scalarsEnumsHash } = - await generate( - // Required - schema, - // GenerateOptions, optional - { - preImport: '', - scalarTypes: { - DateTime: 'string', - }, - react: true, - enumsAsStrings: false, - subscriptions: false, - } - ); -``` - -## getRemoteSchema - -Inspect a remote GraphQL API - -If the headers are not specified, it will look for [Configuration](/docs/cli/config). - -```tsx -import { getRemoteSchema } from '@gqty/cli'; - -const schema = await getRemoteSchema( - // Endpoint, required - 'http://localhost:3000/api/graphql', - // Optional - { - headers: { - authorization: process.env.TOKEN, - }, - } -); - -// schema == import("graphql").GraphQLSchema -``` diff --git a/internal/website/docs/client/config.mdx b/internal/website/docs/client/config.mdx deleted file mode 100644 index 78b4fe2a5..000000000 --- a/internal/website/docs/client/config.mdx +++ /dev/null @@ -1,121 +0,0 @@ ---- -id: config -title: Core Configuration -sidebar_label: Configuration ---- - -The Core Client has some configurations you can set manually: - -```ts -createClient({ - // Required configuration - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - subscriber: subscriptionsClient, - }, - - // Optional configurable options - cacheOptions: { - maxAge: 3600, - normalization: true, - staleWhileRevalidate: 600, - }, - fetchOptions: { - retryPolicy: true, - }, -}); -``` - -## ClientOptions - -| Name | Type | Default Value | Description | -| ------------- | ----------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| retryPolicy | [`RetryOptions`](#retryoptions) | `true` | Retry on error behavior | -| normalization | `boolean` or [`NormalizationOptions`](#normalization) | `true` | Enable, disable and configure [Normalization](#normalization) | -| subscriber | [`subscriber`](/docs/client/subscriptions) | `undefined` | Subscriptions client | -| depthLimit | `number` | `15` | Set the maximum depth limit, needed to prevent possible infinite recursion. After the specified depth is reached, the proxy creation is stopped returning `null` | - -## RetryOptions - -By default GQty has a retry policy of `3` max retries, with a delay of a standard back-off delay `(attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000)` ms. - -You can customize it this way: - -- `retryPolicy = false` to disable it. -- `retryPolicy = 6` it will retry failing requests `6` times, with the standard back-off delay. -- `retryPolicy = true` to use the default `3` max retries, with a delay of standard, a back-off delay. -- `{ maxRetries: 6, retryDelay: 2000 }` for `6` max retries, with flat 2000ms of delay per retry. -- `{ retryDelay: function customRetryDelay(attemptIndex) { ... } }` for `3` max retries with custom back-off delay, and so on... - -## Normalization - -GQty has support for normalization, which helps to reduce data redundancy and improve data integrity across all the cache. - -It is `enabled` by default, but you can disable it, which will disable the need of automatically fetching `__typename` and `id's` and all the computing logic needed to support it. - -```ts -createClient({ - // ... - cacheOptions: { - normalization: false, - }, -}); -``` - -But often enough, it's very useful, and keep in mind that `Normalization` in GQty is highly customizable: - -### Identifier - -You can specify a custom object identifier function. - -It gives an incoming object with it's `__typename` and it should return: - -- A **string** if successfully identified -- '**null**' if it shouldn't be normalized -- Or '**undefined**', to fallback to either default or custom [`keyFields`](#keyfields) - -```ts -createClient({ - // ... - normalization: { - identity(obj) { - switch (obj.__typename) { - case 'User': { - if (obj.email) { - return `${obj.__typename}${obj.email}`; - } - return null; - } - default: { - return; - } - } - }, - }, -}); -``` - -### schemaKeys - -Auto-fetch & object identifier customization. - -> Keep in mind that GQty already checks your schema and looks for the fields **id** or **\_\_id** -> and it add thems **automatically**. - -Set custom **id's** of any object type in your schema. - -**IMPORTANT**: Please make sure to only put [`Scalars`](https://graphql.org/learn/schema/#scalar-types) -without any variable needed as `schemaKeys` - -```ts -createClient({ - // ... - normalization: { - schemaKeys: { - User: ['email'], - }, - }, -}); -``` diff --git a/internal/website/docs/client/fetching-data.mdx b/internal/website/docs/client/fetching-data.mdx deleted file mode 100644 index 7a632cffa..000000000 --- a/internal/website/docs/client/fetching-data.mdx +++ /dev/null @@ -1,197 +0,0 @@ ---- -id: fetching-data -title: Fetching data ---- - -### Prerequisites - -Make sure you've completed [Getting Started](/docs/getting-started) first. - -> `../gqty` refers to the generated directory. - ---- - -GQty is a framework-agnostic GraphQL client, and can be used anywhere _(we might add more bindings for other Frontend frameworks in the future)_. - -## Fetching data - -### resolved - -Accepts a callback, which will be recursively executed, until the data has been fetched (or an error occurs). -The final result of the callback is returned as a promise. - -If your request has any error, either from syntax or from the GraphQL API, -it will always throw an instance of `GQtyError` _(which is itself, an instance of [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error))_ - -```ts -import { query, resolved } from '../gqty'; - -resolved(() => { - return query.helloWorld!; -}) - .then((data) => { - // data == string - }) - .catch((err) => { - // err == import("gqty").GQtyError - }); -``` - -You can specify options in the second argument, like forcing a refetch or isolating from existing cache. - -### inlineResolved - -`inlineResolved` is the exact same as [resolved](#resolved), but it returns the data straight away if it can. - -```ts -const possibleData = inlineResolved(() => { - return query.helloWorld!; -}); - -if (possibleData instanceof Promise) { - // data == Promise - - // Waiting for data from API - const data = await possibleData; - - // data == string -} else { - // possibleData == string -} -``` - -## Refetching data - -### refetch - -A special function that accepts object proxies, or functions. - -When dealing with object proxies, it recovers **all** the history of the specific object down the tree of selections, -and refetchs them, returning the same object back after all the resolutions are done. - -On the other hand, when used with a **function**, it calls the function (using the core scheduler) ignoring possible nulls in the middle in the first pass, -and returns whatever the function gave back as a promise. - -```ts -import { query, refetch, resolved } from '../gqty'; - -// ... - -const data = await resolved(() => { - const user = query.user; - - if (user) { - return { - id: user.name, - name: user.name, - }; - } - return null; -}); - -// Later... - -// It will refetch 'id' & 'name' of 'query.user' -const refetchedUser = await refetch(query.user); -``` - -## Advanced Usages - -### Operation name - -A custom operation name can be added to GraphQL queries, mutations and subscriptions. - -This is useful when mocking for unit tests, and advanced server logics. - -```ts -import { query, resolved, inlineResolved } from '../gqty'; - -resolved(() => query.helloWorld, { operationName: 'MyQuery' }); - -inlineResolved(() => query.helloWorld, { operationName: 'MyQuery' }); -``` - -Both `resolved` and `inlineResolved` above will generate the following query: - -```graphql -query MyQuery { - helloWorld -} -``` - -### track - -The function `track` accepts a callback that gets automatically called every time related data arrives or related cache changes, particularly useful for subscriptions, but it also works for queries. - -The returned function `stop` unsubscribes and stops tracking and `data` is an object that has a field `.current` that has the latest returned value from the callback. - -```ts -import { track, subscription } from '../gqty'; - -const { stop, data } = track(() => { - return subscription.newNotification; -}); - -// data.current === string | undefined - -setTimeout(() => { - stop(); -}, 5000); -``` - -#### track options - -```ts -track( - (info) => { - /** - * info === { type: "initial" | "cache_change" } - **/ - }, - { - onError(err) { - /** - * err === GQtyError - **/ - - console.error(err); - }, - // Refetch on initial call - refetch: true, - } -); -``` - -### The scheduler - -GQty exposes the Scheduler API, which is used by the helper functions above. - -```ts -import { query, client } from '../gqty'; - -async function Example() { - query.helloWorld; - - await client.scheduler.resolving?.promise; - - // string - const helloWorld = query.helloWorld!; -} -``` - -#### Error handling - -The scheduler resolves to a promise of a `GQtyError`: - -```ts -async function Example() { - query.helloWorld; - - await client.scheduler.resolving?.promise.then(({ error }) => { - // error == import("gqty").GQtyError | undefined - if (error) { - throw error; - } - }); -} -``` diff --git a/internal/website/docs/client/helper-functions.mdx b/internal/website/docs/client/helper-functions.mdx deleted file mode 100644 index b0879344a..000000000 --- a/internal/website/docs/client/helper-functions.mdx +++ /dev/null @@ -1,170 +0,0 @@ ---- -id: helper-functions -title: Helper Functions ---- - -# Helper Functions - -## prepass - -A common pattern to do while using GQty is to just access manually some specified fields, so GQty can pick up your requirements faster. -That allows preventing some possible "waterfalling", or simply to make sure to get all the fields requested in the same query, -specially while using conditionals on possible nulls in your GraphQL Schema. - -For that use case we offer a very useful function called `prepass`, in which you can give it an object or array, and given some paths, it will traverse them, -with some specific features: - -- You can specify the path with different syntaxes `"user.dog.name"`, `["user", "dog", "name"]` or `["user", { field: "pet", variables: { type: "dog" } }, "name"]` -- You **don't** have to specify an array index, since if it finds an array, it will pass-through the **first non-null** value of it -- If you have a field with arguments that you want to access, you can also specify it's value and it will automatically call it's function with that value. - -The only **disadvantages** we see are basically: - -- If it finds a function, and you don't specify it's variables, it can't check if all variables are actually optional, so it will call the function anyways without any variable, and that might result in a GraphQL error. -- It doesn't have autocomplete 😔 - -```ts -import { prepass } from 'gqty'; -import { query } from '../gqty'; - -prepass( - query.user, - 'dog.name', - 'address.country.name', - 'address.country.location', - [ - { - field: 'pet', - variables: { - type: 'dog', - }, - }, - 'name', - ] - //... -); -``` - -## selectFields - -Given an object or an array of objects, create a new object/array with the specified fields. - -### Features and Limitations - -- Allows to **select every field** of the proxy with a simple `"*"`. -- But when it encounters a field with arguments, it only returns the function back, since it can't assume your intent, - even if all arguments are optional. -- Specified keys can be composed via `foo.bar` -- Specify recursive depth _(`1` by default)_ -- Bad Type-safety, it just returns the same type as the input - -### Examples - -```ts -import { selectFields } from 'gqty'; -import { query } from '../gqty'; - -const dataPicked = selectFields(query.user, ['name', 'address.city']); - -const dataEverything1Depth = selectFields(query.user, '*'); - -const dataDeep = selectFields(query.user, '*', 2); -``` - -## getFields - -Given an object, pre-access the specified fields, and returns the object back. - -### Features and Limitations - -- Good Type-Safety -- Allows keeping the proxies around. -- If no keys are specified, it selects all the scalars of the object -- You can only specify the first level of scalars -- It doesn't do anything for objects inside objects -- It skips fields with arguments - -```ts -import { getFields } from 'gqty'; -import { query, resolved } from '../gqty'; - -const data = await resolved(() => { - return getFields(query.user, 'name', 'email'); -}); - -// Proxy is kept, and you can pass it around safely -// data == query.user -``` - -### getArrayFields - -We also have a helper to work with arrays, and works the same way as `getFields`. - -```ts -import { getArrayFields } from 'gqty'; -import { query, resolved } from '../gqty'; - -const data = await resolved(() => { - return getArrayFields(query.allUsers, 'name', 'email'); -}); - -// Proxy Array is kept, and you can pass it around safely -// data == query.allUsers -``` - -## Type Casters - -If you find too annoying having to deal with `undefined` everywhere when -by logic you can be completely sure that in runtime you are not dealing with actual `undefined`s, GQty also exports no-op functions -with useful types that removes your `undefined`s. - -> Use with caution, since you might encounter runtime errors if they are used unwisely - -> You can also use the types that are being used for this functions for types-only usage. - -### castNotSkeleton - -Removes all the `undefined`s in 1 level of your object or array. - -This next example is a perfectly safe place to use it, since here `id` and `name` will always be actual values in it's return value, not `undefined`. - -```ts -import { castNotSkeleton } from 'gqty'; -import { resolved, query } from '../gqty'; - -const data = await resolved(() => { - const { id, name } = query.user; - - return castNotSkeleton({ - id, - name, - }); -}); - -// query.user = { id: string | undefined; name: string | undefined; } -// data = { id: string; name: string } -``` - -### castNotSkeletonDeep - -Removes all the `undefined`s **recursively** of your object or array. - -This next example is a perfectly safe place to use it, since here all the fields returned will always be actual values in it's return value, not `undefined`. - -```ts -import { castNotSkeletonDeep } from 'gqty'; -import { resolved, query } from '../gqty'; - -const data = await resolved(() => { - const { id, name, dogs } = query.user; - - return castNotSkeletonDeep({ - id, - name, - dogsNames: dogs.map((dog) => dog.name), - }); -}); - -// query.user = { id: string | undefined; name: string | undefined; dogs: { name: string | undefined }[] } -// data = { id: string; name: string; dogsNames: string[] } -``` diff --git a/internal/website/docs/client/mutations.mdx b/internal/website/docs/client/mutations.mdx deleted file mode 100644 index 8dc4055f7..000000000 --- a/internal/website/docs/client/mutations.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -id: mutations -title: Core Mutations -sidebar_label: Mutations ---- - -Mutations greatly follow the format of queries (see [fetching data with `resolved`](/docs/client/fetching-data#resolved)). - -## Example - -```ts -import { resolved, mutation } from '../gqty'; - -resolved(() => { - const { email, name } = mutation.createUser({ - email: 'xx@xx.com', - name: 'XX', - }); - - return { - email, - name, - }; -}) - .then((data) => { - console.log('User created!', data); - }) - .catch((err) => { - console.error(err); - }); -``` - -## See also - -- [Mutations with React](/docs/react/mutations) diff --git a/internal/website/docs/client/persistence.mdx b/internal/website/docs/client/persistence.mdx deleted file mode 100644 index 87a030ae4..000000000 --- a/internal/website/docs/client/persistence.mdx +++ /dev/null @@ -1,110 +0,0 @@ ---- -id: persistence -title: Core Cache Persistence -sidebar_label: Cache Persistence ---- - -GQty offers easy to use `Cache persistence`. - -- `client.backupPersistence` gets all the cache and returns a string, and optionally accepts a `version` string parameter, that allows for invalidating previous versions of cache, and ignoring them. -- `client.restorePersistence` accepts a **_possible_** string that should have been stored persistently in some way, and optionally accepts a second `version` string paramater, that should be the same as the one used in `backupPersistence`. - -## Data Revalidation - -For an effective usage of `Cache persistence` it's almost always required some kind of automatic data refetching, -and for that reason we recommend you to use: - -- React - - - [useQuery](/docs/react/fetching-data#usequery) and [graphql HOC](/docs/react/fetching-data#graphql-hoc) `staleWhileRevalidate`, - - [useTransactionQuery](/docs/react/fetching-data#usetransactionquery) and [useLazyQuery](/docs/react/fetching-data#uselazyquery) [`cache-and-network` fetchPolicy](/docs/react/fetching-data#fetch-policy), - - And setting them by default in [your defaults](/docs/react/config#defaults). - -- Core - - [resolved](/docs/client/fetching-data#resolved)'s `onCacheData` function. - -## Examples - -In both examples we use a `debounce` function exported from GQty that reduces the amount calls to the storages, improving the user experience. - -[Here you can read a quick explanation of debouncing](https://dev.to/afrazchelsea/debouncing-v-s-throttling-what-s-the-difference-4k95) - -### Local Storage - -In this example, for simplicity we are using [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) to offer cache persistence, -but for most serious applications we recommend using async solutions like [localForage](https://github.com/localForage/localForage). - -```ts -//... -import { debounce } from 'gqty'; - -// ... - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, - // ... -}); - -// ... - -// This conditional should not be present for client-side only apps -if (typeof window !== 'undefined') { - const backup = debounce(() => { - localStorage.setItem('gqty-cache', client.backupPersistence('v1')); - }, 1000); - - client.restorePersistence(localStorage.getItem('gqty-cache'), 'v1'); - - client.eventHandler.onFetchSubscribe((promise) => promise.then(backup)); - - client.eventHandler.onCacheChangeSubscribe(backup); -} -``` - -### Async Storage - -We recommend using [localForage](https://localforage.github.io/localForage/) or [@react-native-async-storage/async-storage](https://github.com/react-native-async-storage/async-storage) - -```ts -import { debounce } from 'gqty'; - -// ... - -import localForage from 'localforage'; -// import AsyncStorage from '@react-native-async-storage/async-storage'; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, - // ... -}); - -// ... - -export const clientReadyPromise = client.restorePersistence(() => { - // return AsyncStorage.getItem('gqty-cache'); - return localForage.getItem('gqty-cache'); -}, 'v1'); - -// This conditional should not be present for React Native or client-side only apps -if (typeof window !== 'undefined') { - const backup = debounce(() => { - // AsyncStorage.setItem('gqty-cache', client.backupPersistence('v1')); - localForage.setItem('gqty-cache', client.backupPersistence('v1')); - }, 1000); - - client.eventHandler.onFetchSubscribe((promise) => promise.then(backup)); - - client.eventHandler.onCacheChangeSubscribe(backup); -} -``` - -### diff --git a/internal/website/docs/client/subscriptions.mdx b/internal/website/docs/client/subscriptions.mdx deleted file mode 100644 index 933812c1d..000000000 --- a/internal/website/docs/client/subscriptions.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -id: subscriptions -title: Core Subscriptions -sidebar_label: Subscriptions ---- - -Support for [`GraphQL Subscriptions`](https://github.com/graphql/graphql-wg/blob/main/rfcs/Subscriptions.md) in GQty. - -## Installation - -First, install `@gqty/subscriptions` into your project's dependencies: - - - -## Usage - -If you activated `subscriptions` in the [CLI Configuration](/docs/cli/config) you should have something like this in your generated client file: - -```ts -const subscriptionsClient = - typeof window !== 'undefined' - ? createSubscriptionsClient({ - lazy: true, - url: () => { - // Modify if needed - const url = new URL('${endpoint}', window.location.href); - url.protocol = url.protocol.replace('http', 'ws'); - return url.href; - }, - }) - : undefined; - -//... - -export const client = createClient({ - // ... - fetchOptions: { - subscriber: subscriptionsClient, - }, -}); -``` - -It basically enables subscriptions only on client side, in case you are using [SSR](/docs/react/ssr). - -It's important to note that `url` can be a `string`, a `function` that returns a `string` or and an `async function` that returns a `string`. - -### Lazy behavior - -By default the subscriptions client uses a `lazy` behavior, which means that it will create the connection only when you actually make a subscription, and disconnect after a couple seconds on last unsubscribe. - -```ts -createSubscriptionsClient({ - //... - - /** - * Controls when should the connection be established. - * - * `false`: Establish a connection immediately. - * - * `true`: Establish a connection on first subscribe and close on last unsubscribe. - * - * @default true - */ - lazy: false, -}); -``` - -### More options - -| Name | Type | Default Value | Description | -| ------------------------ | ---------------------------------------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| reconnect | `boolean` | `true` | Should the websocket connection try to reconnect | -| maxReconnectAttempts | `boolean` | `Infinity` | Amount of reconnection attempts | -| connectionCallback | `() => void` | `undefined` | Callback after successful connection | -| failedConnectionCallback | `(payload: unknown) => Promise` | `undefined` | Callback after failed connection | -| failedReconnectCallback | `() => void` | `undefined` | Callback after last reconnection attempt failed | -| connectionInitPayload | `(() => Promise>` or `Record` | `{}` | Connection init payload, or async function to get the init payload before connection, overridable with [setConnectionParams](#setconnectionparams) | -| headers | `Record` | `undefined` | **Might not be actually supported by browsers, use connection params**. Headers to be set on websocket connection | -| lazy | `boolean` | `true` | See [Lazy behavior](#lazy-behavior) | diff --git a/internal/website/docs/client/upload.mdx b/internal/website/docs/client/upload.mdx deleted file mode 100644 index 9d5bdc2d3..000000000 --- a/internal/website/docs/client/upload.mdx +++ /dev/null @@ -1,131 +0,0 @@ ---- -id: graphql-upload -title: GraphQL Upload -sidebar_label: GraphQL Upload ---- - -In GQty you can add `File Upload` support easily, following the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec). - -## Preparation - -Normally, in the API servers, they implement [graphql-upload](https://github.com/jaydenseric/graphql-upload), which could be implemented with [mercurius-upload](https://github.com/mercurius-js/mercurius-upload) for [Mercurius](https://mercurius.dev/), or in [GraphQL EZ](https://www.graphql-ez.com/) with the [GraphQL Upload EZ Plugin](https://www.graphql-ez.com/plugins/upload). - -Meanwhile in the client, to follow the GraphQL multipart spec, you can easily use [extract-files](https://www.npmjs.com/package/extract-files). - - - -And then, use it in your `QueryFetcher`, like the following example: - -> Compatible with browser's [File](https://developer.mozilla.org/en-US/docs/web/api/file) and [Blob](https://developer.mozilla.org/en-US/docs/web/api/blob), and **React Native** using [ReactNativeFile](https://github.com/jaydenseric/extract-files#class-reactnativefile) - -```ts -import { extractFiles } from 'extract-files'; - -// ... - -const queryFetcher: QueryFetcher = async function (query, variables) { - const extracted = extractFiles({ - query, - variables, - }); - - if (extracted.files.size > 0) { - const form = new FormData(); - form.append('operations', JSON.stringify(extracted.clone)); - - const map: Record = {}; - let i = 0; - extracted.files.forEach((paths) => { - map[++i] = paths; - }); - form.append('map', JSON.stringify(map)); - i = 0; - extracted.files.forEach((_paths, file) => { - form.append(++i + '', file as File); - }); - - const response = await fetch('/api/graphql', { - method: 'POST', - headers: {}, - body: form, - mode: 'cors', - }); - - const json = await response.json(); - - return json; - } - - // Fallback to regular queries - - const response = await fetch('/api/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query, - variables, - }), - mode: 'cors', - }); - - const json = await response.json(); - - return json; -}; -``` - -## Usage - -### Core - -Since the images are not serializable, GQty might be confused while -using them, that's why you have to specify a special option `nonSerializableVariables` in your [`resolved`](/docs/client/fetching-data#resolved)s - -```ts -import { resolved, mutation } from '../gqty'; - -resolved( - () => { - return mutation.uploadFile({ - file, - })!; - }, - { - //... - - // You should specify this flag - nonSerializableVariables: true, - } -) - .then((data) => { - // ... - }) - .catch((error) => { - // ... - }); -``` - -### React - -Since the images are not serializable, GQty might be confused while -using them, that's why you have to specify a special option `nonSerializableVariables` in your [`useMutation`](/docs/react/mutations)s - -```ts -const [uploadFile, { isLoading, data, error }] = useMutation( - (mutation, file: File) => { - return mutation.uploadFile({ - file, - })!; - }, - { - // ... - - // You should specify this flag - nonSerializableVariables: true, - } -); -``` diff --git a/internal/website/docs/development/logger.mdx b/internal/website/docs/development/logger.mdx deleted file mode 100644 index 43af8c63c..000000000 --- a/internal/website/docs/development/logger.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -id: logger -title: Logger ---- - -You can improve the development experience using a `Logger` of your GQty usage, which will print relevant information about the requests made to your GraphQL API Server. - -![Logger screenshot](/img/logger.png) - -## Installation - - - -## Usage - -> You can add the logger alongside the generated client, or import it from another file - -```ts -// /src/gqty/index.ts - -// ... - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, -}); - -if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') { - import('@gqty/logger').then(({ createLogger }) => { - const logger = createLogger(client, { - // Custom options... - }); - logger.start(); - }); -} -``` - -### Options - -| Name | Type | Default Value | Description | -| -------------- | --------- | ------------- | --------------------------------- | -| showSelections | `boolean` | `true` | Show "selections" in logs | -| showCache | `boolean` | `true` | Show cache snapshots in logs | -| stringifyJSON | `boolean` | `false` | Stringify JSON before printing it | diff --git a/internal/website/docs/getting-started.mdx b/internal/website/docs/getting-started.mdx deleted file mode 100644 index 5ce9de1e7..000000000 --- a/internal/website/docs/getting-started.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: getting-started -title: Getting started ---- - -## Installation - -1. Go to the root of your project, and run: - - - -2. Next, add a `script` field to your package.json: - ```json - { - "scripts": { - "generate": "gqty generate" - } - } - ``` -3. Then run the script once, to create a `gqty.config.cjs` file: - - - -## Configuring Codegen - -The default config should look something like this: - -> _Can also be specified in `package.json` via `gqty` key_ - -```js -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - react: true, - scalarTypes: { DateTime: 'string' }, - introspection: { - endpoint: 'SPECIFY_ENDPOINT_OR_SCHEMA_FILE_PATH_HERE', - headers: {}, - }, - destination: './src/gqty/index.ts', - subscriptions: false, -}; - -module.exports = config; -``` - -Point `introspection.endpoint` to your GraphQL API, _adding headers for authorization if necessary_. Then run the generate command again, to fetch your schema and output to the `destination` file: - - - -The output should look like this: - -```bash -src/gqty -├── schema.generated.ts # Will be overwritten when you codegen again -└── index.ts # GQty client is exported from here, safe to modify options -``` - -## Getting started - -Configure the `fetch()` call to your GraphQL server, located inside the `queryFetcher()` method within `src/gqty/index.ts`. You might for instance want to dynamically generate the URL depending on environment, or connect it up to your apps authorization. - -## Usage - -See one of the following for more: - -- [**Using with React**](/docs/react/fetching-data) - -- [**Using the standalone Client**](/docs/client/fetching-data) diff --git a/internal/website/docs/intro/README.mdx b/internal/website/docs/intro/README.mdx deleted file mode 100644 index 665825193..000000000 --- a/internal/website/docs/intro/README.mdx +++ /dev/null @@ -1,107 +0,0 @@ ---- -id: intro -title: Introduction -sidebar_label: What is & Why ---- - -From previously working on a large GraphQL codebase, the boilerplate involved with shipping new features often slowed me down. - -## What is - -gqty is a fundamentally new approach to a GraphQL client. It makes using your API enjoyable, by _generating queries at runtime_ based upon the data your app consumes. - -#### Your app - -```tsx -const App = () => { - const query = useQuery(); - - return ( -
- Hello {query.me.name}! - {query.users({ limit: 10 }).map((user) => ( - - ))} -
- ); -}; -``` - -#### Generated query - -```graphql -query { - me { - name - } - users(limit: 10) { - id - name - } -} -``` - -## Why - -I wanted a GraphQL client that lets you _forget you're using GraphQL_, whilst tackling some issues shared across all existing GraphQL clients: - -- **Slow Typescript DX**. Typescript should speed up your workflow, not slow it down -- **Inefficient queries**, due to underutilized nesting. [Relay](https://relay.dev) is a solution, but has even more boilerplate 😢 - -## Workflow comparison - -Lets say you've just added a new field to your API, and want it displayed within multiple places in the UI: - -```graphql -type User { - username: String! -+ avatarUrl(size: Int!): String! -} -``` - -### Conventional client - -First you'd need to search your components, and identify which queries need updating. After referring to your browser for documentation, you'd then update the query - -```graphql -query UserProfile(avatarSize: Int!) { - user { - ... -+ avatarUrl(size: $avatarSize) - } -} -``` - -Typically you'd then run a type generator to create types for each query (changes may not be reflected in IDE straight away). - -Finally you'd do the task you set out to do - updating the components, - -```tsx -const UserProfile = ({ id }) => { - const { data } = useQuery( - gql` - query UserProfile($username: ID!, $avatarSize: Int!) { - user(username: $id) { - avatarUrl(size: $avatarSize) - } - } - `, - { - variables: { id, avatarSize: 100 }, - } - ); - - return ; -}; -``` - -### With GQty - -Just update your components, and the queries generated at runtime will reflect your changes. - -```tsx -const UserProfile = ({ id }) => { - const query = useQuery(); - return ; -}; -``` diff --git a/internal/website/docs/intro/contributing.mdx b/internal/website/docs/intro/contributing.mdx deleted file mode 100644 index 108068a6e..000000000 --- a/internal/website/docs/intro/contributing.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: contributing -title: Contributing -sidebar_label: How to contribute ---- - -## Codesandbox - -You can test and play with GQty using [This codesandbox](https://codesandbox.io/s/gqty-sandbox-zswf1). - - - -And if you find a bug, reproducing it there would be very helpful. - -It uses [**Next.js**](https://nextjs.org/) for the frontend -and [Fastify](https://www.fastify.io/) + [mercurius](https://mercurius.dev/) for the GraphQL API - -## Cloning / Forking Repo - -This project uses [pnpm](https://pnpm.js.org/) with it's workspaces support. - -To contribute just make sure you have it installed: - -```shell -npm install -g pnpm -``` - -And inside the cloned/forked repo, simply call: - -> To install packages and build everything - -```shell -pnpm i -``` - -> To test everything - -```shell -pnpm test -w -``` - -
-
- -In the repository you will have some specific folders: - -- **internal/website/docs** - - Documentation - -- **examples** - - Examples usually used for "Real world" testing - -- **internal** - - Internal packages like this website, build utilities, and testing utilities. - -- **packages** - - Official packages of GQty diff --git a/internal/website/docs/intro/features.mdx b/internal/website/docs/intro/features.mdx deleted file mode 100644 index fe0ec7bfe..000000000 --- a/internal/website/docs/intro/features.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: features -title: Features ---- - -## Invisible data fetching - -Simply access data and it will magically appear. Queries are generated automatically, so you never need to write another line of GraphQL again. - - - -## Typescript - -Typescript support is **built-in** and enabled by default. Run code-generation _only when your API changes_. - -## Editor intellisense - -You get awesome DX out the box, with docs displayed inline (no extensions required) - -![VSCode suggestions screenshot](/img/intro/intellisense.png) - -## Server-side Rendering - -We fully support Server-Side rendering (**SSR**), with focused support for [Next.js](https://nextjs.org/) - -## Cache - -The built-in [normalized cache](/docs/client/config#normalization) automatically caches everything for you - -## Subscriptions - -Subscriptions support. [More info here](/docs/client/subscriptions) diff --git a/internal/website/docs/intro/how-it-works.mdx b/internal/website/docs/intro/how-it-works.mdx deleted file mode 100644 index eac328e5d..000000000 --- a/internal/website/docs/intro/how-it-works.mdx +++ /dev/null @@ -1,52 +0,0 @@ ---- -id: how-it-works -title: How it works ---- - -## Skeleton render & values - -GQty performs a invisible render (called the skeleton render) of all components, to identify the data they need. During this render, all scalars & enums are returned as `undefined` (aka. skeleton values). -Once the response from the server arrives, these skeleton values are replaced with actual ones. - -### Interplay with Lists & Keys - -It's important to be aware of skeleton values, as using them as keys will result in a warning: - -```tsx -query.users.map((user) => ( - // During the skeleton render, the key is `undefined` -
{user.name}
-)); -``` - -![React lists key warning](/img/react-key-warning.png) - -You can overcome this using either destructuring, - -```tsx -query.users.map(({ id = 0, name }) => ( - ^^^^^^ -
{name}
-``` - -or the [nullish coalescing operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator): - -```tsx -query.users.map((user) => ( -
{user.name}
- ^^^^^ -``` - -## How does it work? - -GQty performs a invisible render of all components, to identify the data they need. Once the data is fetched — scalars, nulls, and array sizes are filled in. - -## Will it affect bundle size? - -In the code-generated files, an object representation of the schema is outputted - negligible for most apps. This could be optimized in the future by stripping out unused parts. - -The gqty packages are lightweight and don't require external dependencies. - -## How fast is it? - -Very fast, gqty's architecture was designed with performance in mind. Unlike other clients, queries are generated directly - instead of outputting intermediate AST. diff --git a/internal/website/docs/react/config.mdx b/internal/website/docs/react/config.mdx deleted file mode 100644 index 58314e746..000000000 --- a/internal/website/docs/react/config.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -id: config -title: React Client Configuration -sidebar_label: Client Configuration ---- - -The React Client has some configurations you can set manually: - -```tsx -// in your `destination` file specified by your gqty config -createReactClient(client, { - defaults: { - // Here - }, -}); -``` - -## Defaults - -In most functions available through the React Client you have some options you can set. - -The defaults value of some of them can be overriden here: - -| Name | Type | Default Value | Description | -| ------------------------- | ---------------------------------------------------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| suspense | `boolean` | `false` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [graphql HOC](/docs/react/fetching-data#graphql-hoc) and [useQuery](/docs/react/fetching-data#usequery) | -| lazyQuerySuspense | `boolean` | `false` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [useLazyQuery](/docs/react/fetching-data#uselazyquery) | -| transactionQuerySuspense | `boolean` | inherited from ` suspense` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [useTransactionQuery](/docs/react/fetching-data#usetransactionquery) | -| mutationSuspense | `boolean` | `false` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [useMutation](/docs/react/mutations#useMutation) | -| preparedSuspense | `boolean` | inherited from ` suspense` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [prepareQuery hooks](/docs/react/fetching-data#preparequery) | -| paginatedQuerySuspense | `boolean` | `false` | Enable/Disable '[React Suspense](/docs/react/suspense)' behavior for [prepareQuery hooks](/docs/react/fetching-data#preparequery) | -| transactionFetchPolicy | `"cache-and-network"` or `"cache-first"` or `"network-only"` or `"no-cache"` | `"cache-first"` | '[fetchPolicy](/docs/react/fetching-data#fetch-policy)' of [useTransactionQuery](/docs/react/fetching-data#usetransactionquery) | -| lazyFetchPolicy | `"cache-and-network"` or `"network-only"` or `"no-cache"` | `"network-only"` | Partial '[fetchPolicy](/docs/react/fetching-data#fetch-policy)' of [useLazyQuery](/docs/react/fetching-data#uselazyquery) | -| paginatedQueryFetchPolicy | `"cache-and-network"` or `"network-only"` or `"cache-first"` | `"cache-first"` | Partial '[fetchPolicy](/docs/react/fetching-data#fetch-policy)' of [usePaginatedQuery](/docs/react/fetching-data#usepaginatedquery) | -| staleWhileRevalidate | `boolean` | `false` | Enable/Disable '[stale-while-revalidate](https://web.dev/stale-while-revalidate/)' behavior for [graphql HOC](/docs/react/fetching-data#graphql-hoc) & [useQuery](/docs/react/fetching-data#usequery) | -| retry | [`RetryOptions`](/docs/client/config#retryoptions) | `true` | Retry on error behavior | -| refetchAfterHydrate | `boolean` | `false` | Refetch **after** SSR Hydration | diff --git a/internal/website/docs/react/fetching-data.mdx b/internal/website/docs/react/fetching-data.mdx deleted file mode 100644 index 75c62eb05..000000000 --- a/internal/website/docs/react/fetching-data.mdx +++ /dev/null @@ -1,536 +0,0 @@ ---- -id: fetching-data -title: Fetching data with React -sidebar_label: Fetching Data ---- - -## useQuery - -[React hook](https://reactjs.org/docs/hooks-intro.html) that uses the main design of GQty. - -This hook returns the core `query` object, and it will detect the usage of it, and **suspend** _(if enabled)_ when the data is being fetched for the first time, and update the component when any of the requested data changes. - -### Features - -- **Composability** -- Advanced '[stale-while-revalidate](https://web.dev/stale-while-revalidate/)' behavior, allowing you to set **_any_** value to re-trigger re-validation. -- Extra `$state` in the returned value, which is extra valuable for `Non-Suspense` usage. - -### Suspense Example - -```tsx -import { Suspense } from 'react'; -import { useQuery } from '../gqty'; - -function Example() { - const query = useQuery({ - // boolean | undefined - suspense: true, - - // boolean | object | number | string | null - // If you put an object to trigger re-validation on-demand, it should be a `memoized` value from `useMemo` - staleWhileRevalidate: true, - - // ((error: GQtyError) => void) | undefined - onError(error) {}, - }); - - return

{query.helloWorld}

; -} - -function Container() { - return ( - - - - ); -} -``` - -### Non-Suspense Example - -See [Non-Suspense usage](/docs/react/suspense#non-suspense-usage) for more details - -```tsx -import { useQuery } from '../gqty'; - -function Example() { - const query = useQuery({ - // boolean | undefined - suspense: false, - - // boolean | object | number | string | null - // If you put an object to trigger re-validation on-demand, it should be a `memoized` value from `useMemo` - staleWhileRevalidate: true, - - // ((error: GQtyError) => void) | undefined - onError(error) {}, - }); - - if (query.$state.isLoading) { - return

Loading...

; - } - - return

{query.helloWorld}

; -} -``` - -### prepare - -`useQuery` offers a nice helper that allows for good optimizations, allowing you to do a _prepass_ over specific parts of your expected query, before your component ends rendering the first time. - -It's basically a function that is called right before the `useQuery` returns, allowing your component to either [`Suspend immediately`](/docs/react/suspense) or add a conditional render using the `$state.isLoading` property. - -The function receives as parameters: - -- The [`prepass`](/docs/client/helper-functions#prepass) helper. -- Your auto-generated `query` object. - -> Since it's a function called before the hook itself returned, the returned value/values **are `undefined`**, and unfortunately `TypeScript` can't know that. - -#### Suspense example - -```tsx -import { useQuery } from '../gqty'; - -function ExampleSuspense() { - const query = useQuery({ - prepare({ prepass, query }) { - prepass(query.users, 'id', 'name', 'dogs.name'); - }, - suspense: true, - }); - - return ( - <> - {query.users.map(({ id, name, dogs }) => { - return ( -

- Name: {name} -
- Dogs: -
-

    - {dogs.map(({ name }) => { - return
  • {name}
  • ; - })} -
-

- ); - })} - - ); -} - -// ... - - -; -``` - -#### Non-Suspense example - -```tsx -import { useQuery } from '../gqty'; - -function Example() { - const query = useQuery({ - prepare({ prepass, query }) { - prepass(query.users, 'id', 'name', 'dogs.name'); - }, - suspense: false, - }); - - if (query.$state.isLoading) return

Loading...

; - - return ( - <> - {query.users.map(({ id, name, dogs }) => { - return ( -

- Name: {name} -
- Dogs: -
-

    - {dogs.map(({ name }) => { - return
  • {name}
  • ; - })} -
-

- ); - })} - - ); -} -``` - -## graphql HOC - -`graphql` is a [Higher-Order Component](https://reactjs.org/docs/higher-order-components.html) alternative to [useQuery](#usequery), designed specially for [Suspense usage](/docs/react/suspense). - -For this function it is expected to use the `query` object exported by the core client, and it will detect the usage of it, and **suspend** _(if enabled)_ when the data is being fetched for the first time, and update the component when any of the requested data changes. - -### Features - -- Specify `Suspense fallback` directly -- Intercept the data requests faster than [useQuery](#usequery), allowing it to prevent an extra render. -- Basic '[stale-while-revalidate](https://web.dev/stale-while-revalidate/)' behavior - -### Example - -```tsx -import { Suspense } from 'react'; -import { graphql, query } from '../gqty'; - -const Example = graphql( - function Example() { - return

{query.helloWorld}

; - }, - { - // boolean | { fallback: NonNullable | null } | undefined - suspense: true, - - // ((error: GQtyError) => void) | undefined - onError(error) {}, - - // boolean | undefined - staleWhileRevalidate: true, - } -); - -function Container() { - return ( -
- - - -
- ); -} -``` - -## Difference between "useQuery" and "graphql" - -If you read both, you could see that both do similar stuff, but enable different things based on it's nature and React constraints. - -The [graphql HOC](#graphql-hoc) is targeted specially for **Suspense usage**, since it can intercept the data requests before the render phase and _Suspend_ right away, and also specify the fallback directly, but since it's a [`HOC`](https://reactjs.org/docs/higher-order-components.html), it's not as nice to use as hooks. - -On the other hand, [useQuery](#usequery) enables very nice composability, but it lacks the ability to intercept the Render Phase if not using [useQuery "prepare" helper](#prepare), which in practice it only means 1 extra render, which most of the time it doesn't matter. - -And it's important to note that for `Non-Suspense` usage we encourage to always use [useQuery](#usequery). - -## usePaginatedQuery - -Paginated focused queries, in which you specify a function and initial arguments, which is going to be automatically called on first-render or via custom `fetchMore` calls. - -### Features - -- Suspense support -- Partial [Fetch policy](/docs/react/fetching-data#fetch-policy) support (`'cache-first'`, `'cache-and-network'` or `'network-only'`) -- Custom data merge function, with included `uniqBy` & `sortBy` helpers. -- If no new args are defined in your `fetchMore` call, the previous or initial args are used. -- You can override the existing `fetchPolicy` in the second parameter of `fetchMore`, for example, to force a `refetch`. -- The [helper functions](/docs/client/helper-functions) are included in third parameter of main function. - -### Example - -```tsx -import { usePaginatedQuery, ConnectionArgs } from '../gqty'; - -// ... - -function Example() { - const { data, fetchMore, isLoading } = usePaginatedQuery( - ( - // Auto-generated query object - query, - // You have to specify the arguments types, in this example we are re-using auto-generated types - input: ConnectionArgs, - // Core helpers, in this example we are just using `getArrayFields` - { getArrayFields } - ) => { - const { - nodes, - pageInfo: { hasNextPage, endCursor }, - } = query.users({ - ...input, - }); - return { - nodes: getArrayFields(nodes, 'name'), - hasNextPage, - endCursor, - }; - }, - { - // Required, only used for the first fetch - initialArgs: { - first: 10, - }, - // Optional merge function - merge({ data: { existing, incoming }, uniqBy }) { - if (existing) { - return { - ...incoming, - // If using 'cache-and-network', you have to use `uniqBy` - nodes: uniqBy([...existing.nodes, ...incoming.nodes], (v) => v.id), - }; - } - return incoming; - }, - // Default is 'cache-first' - fetchPolicy: 'cache-and-network', - // Default is `false`, it only applies for the initial fetch. - suspense: true, - } - ); - - return ( -
-
    - {data?.nodes.map(({ id = 0, name }) => { - return
  • {name}
  • ; - })} -
- {isLoading &&

Loading...

} - {data?.hasNextPage && data.endCursor ? ( - - ) : null} -
- ); -} -``` - -## useTransactionQuery - -Alternative to `graphql` and `useQuery` that works via pre-defined functions, which allows for extra features that are not available in `useQuery` & `graphql HOC`. - -### Features - -- Polling -- Conditional skipping -- Automatic call on variable change -- Lifecycle functions `onCompleted` & `onError` -- Suspense support -- [Fetch policy](#fetch-policy) support - -### Example - -```tsx -import { useTransactionQuery } from '../gqty'; - -// ... - -function Example() { - const { data, error, isLoading } = useTransactionQuery( - (query, args: string) => { - return query.hello({ name }); - }, - { - variables: 'John', - // By default is 'cache-first' - fetchPolicy: 'cache-and-network', - // Polling every 5 seconds - pollInterval: 5000, - // By default is `true` - notifyOnNetworkStatusChange: true, - onCompleted(data) {}, - onError(error) {}, - suspense: false, - // By default is `false` - skip: false, - } - ); - - if (isLoading) { - return

Loading...

; - } - - if (error) { - return

Error! {error.message}

; - } - - return

{data}

; -} -``` - -## useLazyQuery - -Queries meant to be called in response of events, like button clicks. - -### Features - -- Lifecycle functions `onCompleted` & `onError` -- Suspense support -- Partial [Fetch policy](#fetch-policy) support (no `'cache-first'`) - -```tsx -import { useLazyQuery } from '../gqty'; - -function Example() { - const [getName, { isLoading, data }] = useLazyQuery( - (query, name: string) => { - return query.hello({ name }); - }, - { - onCompleted(data) {}, - onError(error) {}, - // Default is 'network-only' - fetchPolicy: 'cache-and-network', - retry: false, - suspense: false, - } - ); - - if (isLoading) { - return

Loading...

; - } - - if (data) { - return

{data}

; - } - - return ( - - ); -} -``` - -## useRefetch - -Refetch giving specific parts of the schema or via functions - -### Example with functions - -```tsx -import { useRefetch, useQuery } from '../gqty'; - -function Example() { - const refetch = useRefetch(); - const query = useQuery(); - - return ( -
- -

{query.helloWorld}

-
- ); -} -``` - -### Example with objects - -In this case, you have to specify an **object type**, **scalars won't work** (for those, you have to use functions). - -It will automatically refetch **everything** previously requested under that tree - -```tsx -import { useRefetch, useQuery } from '../gqty'; - -function Example() { - const refetch = useRefetch(); - const query = useQuery(); - - return ( -
- -

{query.user.name}

-

{query.user.email}

-
- ); -} -``` - -## prepareQuery - -Prepare queries on **module-level**. - -### Features - -- Enable **Render as you fetch** pattern -- **Re-using** the callbacks in [_useTransactionQuery_](/docs/react/fetching-data#usetransactionquery) & [_useLazyQuery_](/docs/react/fetching-data#uselazyquery) -- Composition -- Prefetching -- Refetching -- Suspense Support - -### Example - -```tsx -import { useState } from 'react'; -import { prepareQuery } from '../gqty'; - -const { preload, refetch, usePrepared, callback } = prepareQuery((query) => { - return query.helloWorld; -}); - -function Example() { - const { data } = usePrepared(); - - return

{data}

; -} - -function Container() { - const [show, setShow] = useState(false); - - return ( -
- - - {show && } -
- ); -} -``` - -## Fetch Policy - -Fetch policies allow you to have fine-grained control over your fetch behaviors - -| Name | Description | -| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `cache-first` | Client executes the query against the cache, if **all** requested data is present in the **cache**, that data is returned.
Otherwise, it executes the query against your **GraphQL server** and returns the data after caching it.

Prioritizes minimizing the number of network requests sent by your application. | -| `cache-and-network` | Client executes the full query against both the **cache** and your **GraphQL server**.

Provides a fast response while also helping to keep cached data consistent with server data. | -| `network-only` | Client executes the full query against your GraphQL server, without first checking the cache.

The query's result is stored in the cache. | -| `no-cache` | Client executes the full query against your GraphQL server, without first checking the cache.

The query's result **is NOT** stored in the cache. | diff --git a/internal/website/docs/react/meta.mdx b/internal/website/docs/react/meta.mdx deleted file mode 100644 index 531bd8021..000000000 --- a/internal/website/docs/react/meta.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -id: meta -title: Inspecting Client State ---- - -## useMetaState - -Hook designed to inspect the React Client state, like error handling and fetching state - -### Features - -- Notify start fetching -- Notify fetching complete -- Notify on error -- Notify on retry attempt -- Filter selections you want to inspect in the specific hook -- Returns current errors and fetching state - -### Example - -```tsx -import { useMetaState, query } from '../gqty'; - -function Inspector() { - const { isFetching, errors } = useMetaState({ - onStartFetching() {}, - onDoneFetching() {}, - onError({ newError, selections, isLastTry }) {}, - onRetry({ retryPromise, selections }) {}, - - // Optional, if it's not specified, inspects everything - filterSelections: [query.user], - }); - - return ( -
- {isFetching &&

Fetching...

} - {errors && ( - <> -

Errors!

-
    - {errors.map((error, key) => { - return
  • {error.message}
  • ; - })} -
- - )} -
- ); -} -``` - -```tsx -import { useMetaState } from '../gqty'; - -export function Example() { - const { isFetching, errors } = useMetaState({ - onError({ newError, isLastTry }) { - if (isLastTry) { - console.error(newError); - } - }, - }); - - return ( -
- {isFetching &&

Fetching...

} - {errors && ( - <> -

Errors!

-
    - {errors.map((error, key) => { - return
  • {error.message}
  • ; - })} -
- - )} -
- ); -} -``` diff --git a/internal/website/docs/react/mutations.mdx b/internal/website/docs/react/mutations.mdx deleted file mode 100644 index ac06aa63d..000000000 --- a/internal/website/docs/react/mutations.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -id: mutations -title: Using Mutations with React -sidebar_label: Mutations ---- - -## useMutation - -Hook designed to be used for [GraphQL Mutations](https://graphql.org/graphql-js/mutations-and-input-types/). - -### Features - -- Lifecycle functions `onCompleted` & `onError` -- Optional **Refetch queries** after mutation call _(with 'awaitRefetchQueries' option, to wait until they are complete before calling the mutation complete)_ -- Suspense support - -### Example - -```tsx -import { useState } from 'react'; -import { useMutation, query } from '../gqty'; - -export function LoginComponent() { - const [login, { isLoading, data, error }] = useMutation( - (mutation, args: { email: string; password: string }) => { - const { user, error } = mutation.login({ args }); - - if (user) { - return { - name: user.name, - }; - } - - return { - error, - }; - }, - { - onCompleted(data) {}, - onError(error) {}, - refetchQueries: [query.user], - awaitRefetchQueries: true, - suspense: false, - } - ); - - const [formData, setFormData] = useState(() => ({ email: '', password: '' })); - - const errorMessage = data?.error || error?.message; - - return ( -
- - { - setFormData({ - ...formData, - email: ev.target.value, - }); - }} - /> - - - { - setFormData({ - ...formData, - password: ev.target.value, - }); - }} - /> - - - - {errorMessage ?

Error: {errorMessage}

: null} -
- ); -} -``` diff --git a/internal/website/docs/react/ssr.mdx b/internal/website/docs/react/ssr.mdx deleted file mode 100644 index badc5b0e3..000000000 --- a/internal/website/docs/react/ssr.mdx +++ /dev/null @@ -1,139 +0,0 @@ ---- -id: ssr -title: Server-Side Rendering with React -sidebar_label: Server-Side Rendering ---- - -## Helper functions - -These functions are meant to be used together, in different steps of your application. - -### prepareReactRender - -Function designed to be used before the React Render is being made, for example, in places like [getStaticProps](https://nextjs.org/docs/basic-features/data-fetching#getstaticprops-static-generation) or [getServerSideProps](https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering) of [Next.js](https://nextjs.org/) - -Internally it uses [react-ssr-prepass](https://github.com/FormidableLabs/react-ssr-prepass) - -### useHydrateCache - -Function designed to be placed at the very top of the hydrated component - -### Example - -Made with **[Next.js SSR Data Fetching](https://nextjs.org/docs/basic-features/data-fetching)** in mind. - -> It's exactly the same usage for `getServerSideProps` -> If you are using `staleWhileRevalidate` in your application, **You should always set 'shouldRefetch' as false**, since that feature will always do the refetch anyways. - -```tsx -import { PropsWithServerCache } from '@gqty/react'; -import { GetStaticProps } from 'next'; -import { prepareReactRender, useHydrateCache, useQuery } from '../gqty'; - -type PageProps = PropsWithServerCache<{ - name: string; -}>; - -export default function ExamplePage({ cacheSnapshot, name }: PageProps) { - useHydrateCache({ - cacheSnapshot, - - // If it should refetch everything after the component is mounted - // By default 'shouldRefetch' is `false` (You can change it in the 'defaults' option) - shouldRefetch: false, - }); - - const query = useQuery(); - - return ( -
-

{query.hello({ name })}

-
- ); -} - -export const getStaticProps: GetStaticProps = async (_ctx) => { - const name = 'John'; - const { cacheSnapshot } = await prepareReactRender( - - ); - - return { - props: { - cacheSnapshot, - name, - }, - }; -}; -``` - -## Using Suspense - -Please check [Suspense in SSR](/docs/react/suspense#suspense-in-ssr) - -## Using Next.js Router - -If you are using [Next.js `useRouter`](https://nextjs.org/docs/api-reference/next/router) inside a component of a Next.js project, you might encounter errors like: - -- `TypeError: Cannot destructure property 'pathname' of 'Object(...)(...)' as it is null.` - -Since with `prepareReactRender` you are rendering outside of the Next.js tree, you don't have access to it's `router`, and it's not even created yet. - -We suggest a couple of solutions: - -### Add a default object before destructuring - -You will need to check if you really have any router property available - -```ts -import { useRouter } from 'next/router'; - -// ... - -const { pathname } = useRouter() || {}; - -// pathname == undefined while "prepareReactRender" -``` - -### Mocking Router Data - -Here you can either manually set the values of the router, or simply let it be `{}`, and all it's properties are simply going to be undefined. - -```tsx -import type { PropsWithServerCache } from '@gqty/react'; -import type { GetServerSideProps } from 'next'; -import { useHydrateCache, prepareReactRender } from '../gqty'; - -import { useRouter } from 'next/router'; - -import { RouterContext } from 'next/dist/next-server/lib/router-context'; - -export const getServerSideProps: GetServerSideProps = - async ({}) => { - const { cacheSnapshot } = await prepareReactRender( - - - - ); - - return { - props: { - cacheSnapshot, - }, - }; - }; - -export default function Page({ cacheSnapshot }: PropsWithServerCache) { - // ... - const { - // ... - } = useRouter(); - // ... -} -``` diff --git a/internal/website/docs/react/subscriptions.mdx b/internal/website/docs/react/subscriptions.mdx deleted file mode 100644 index 1729630a1..000000000 --- a/internal/website/docs/react/subscriptions.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -id: subscriptions -title: Using Subscriptions with React -sidebar_label: Subscriptions ---- - -## useSubscription - -Hook designed to be used for [GraphQL Subscriptions](https://github.com/graphql/graphql-wg/blob/main/rfcs/Subscriptions.md). - -For more configuration of Subscriptions [check here](/docs/client/subscriptions). - -### Features: - -- Subscribe on-demand -- Automatic unsubscribe on component unmount -- Automatic updates on cache changes - -### Example - -```tsx -import { useSubscription } from '../gqty'; - -export function Example() { - const { newNotification } = useSubscription(); - - if (newNotification) { - return ( -

- New Notification: {newNotification} -

- ); - } - return

Waiting for new notifications...

; -} -``` diff --git a/internal/website/docs/react/suspense.mdx b/internal/website/docs/react/suspense.mdx deleted file mode 100644 index f1a28bcbb..000000000 --- a/internal/website/docs/react/suspense.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -id: suspense -title: Using React Suspense -sidebar_label: Suspense & usage without ---- - -## How to enable it - -One of the goals of GQty is to embrace the React features [Suspense](https://reactjs.org/docs/concurrent-mode-suspense.html) & [Concurrent Mode](https://reactjs.org/docs/concurrent-mode-intro.html). - -Until these features become widespread enough, you will need to **opt-in** for Suspense support via configuration. This can be done directly in hook, or via the [defaults of the client](/docs/react/config#defaults). - -```ts -// Enabling support with hooks -const query = useQuery({ suspense: true }); - -// Enabling support with HoC -const Component = graphql(() =>
, { suspense: true }); -``` - -## Usage without Suspense - -All hooks return a `$state` object, when suspense support is not enabled. - -```tsx -function Example() { - const query = useQuery({ suspense: false }); - - if (query.$state.isLoading) return

Loading...

; - - return

{helloWorld}

; -} -``` - -## Suspense & SSR - -React doesn't yet support suspense whilst rendering on the server, so [react-ssr-prepass](https://github.com/FormidableLabs/react-ssr-prepass) is used in our SSR functions: - -![React Error with Suspense in SSR](/img/suspense-ssr.png) - -And for that, reason we suggest using a slighty modified `Suspense` component: - -```tsx -import { Suspense as ReactSuspense, SuspenseProps } from 'react'; - -export const Suspense = - typeof window !== 'undefined' - ? ReactSuspense - : function SuspenseSSR({ children }: SuspenseProps) { - return <>{children}; - }; -``` - -And everything should work as you might expect. diff --git a/internal/website/docs/react/troubleshooting.mdx b/internal/website/docs/react/troubleshooting.mdx deleted file mode 100644 index 712b98b85..000000000 --- a/internal/website/docs/react/troubleshooting.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -id: troubleshooting -title: Troubleshooting ---- - -## Skeleton Render Values Are `Undefined` - -GQty performs a invisible render of all components, to identify the data they need. Once the data is fetched — scalars, nulls, and array sizes are filled in. - -During this render, these skeleton values are `undefined`, so using them as keys will result in a warning: - -![React lists key warning](/img/react-key-warning.png) - -Take a look at the [How It Works](/docs/intro/how-it-works#interplay-with-lists--keys) guide for options to overcome this. - -## Data Selections & Conditionals - -Placing a data selection behind a condition is not supported. For server-side rendering to work properly, and to prevent cascade requests, you must ensure that you have no data selections behind a condition. Take the following example: - -❌ **Wrong**: Data selection behind a condition - -```tsx -import { useQuery } from '../gqty'; - -export default function ExamplePage() { - const posts = useQuery().posts()?.nodes; - - return ( - <> -

Posts

- -
    - {posts.map((post) => { - if (post.id === 250) { - return
  • {post?.title}
  • ; - ^^^^^^^^^^^ - } - })} -
- - ); -} -``` - -✅ **Right**: Requiring the data no matter what - -```tsx -import { useQuery } from '../gqty'; - -export default function ExamplePage() { - const posts = useQuery().posts()?.nodes; - - return ( - <> -

Posts

- -
    - {posts.map((post) => { - // Define the data selection outside the condition - const postTitle = post?.title; - - if (post.id === 250) { - return
  • {postTitle}
  • ; - } - })} -
- - ); -} -``` - -Alternatively, you could use the [`prepass` helper](/docs/react/fetching-data#prepare) to do a **prepass** of your data before rendering. diff --git a/internal/website/next-env.d.ts b/internal/website/next-env.d.ts deleted file mode 100644 index 4f11a03dc..000000000 --- a/internal/website/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/internal/website/next-i18next.config.js b/internal/website/next-i18next.config.js deleted file mode 100644 index 7c7e42774..000000000 --- a/internal/website/next-i18next.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - i18n: { - defaultLocale: 'en', - locales: ['en'], - }, -}; diff --git a/internal/website/next.config.js b/internal/website/next.config.js deleted file mode 100644 index b6f319ee6..000000000 --- a/internal/website/next.config.js +++ /dev/null @@ -1,30 +0,0 @@ -require('bob-tsm'); - -const { i18n } = require('./next-i18next.config'); - -const { withGuildDocs } = require('@guild-docs/server'); - -const { getRoutes } = require('./routes.ts'); - -const withBundleAnalyzer = require('@next/bundle-analyzer')({ - enabled: process.env.ANALYZE === 'true', -}); - -module.exports = withBundleAnalyzer( - withGuildDocs({ - i18n, - getRoutes, - experimental: { - esmExternals: false, - }, - async redirects() { - return [ - { - source: '/docs', - destination: '/docs/getting-started', - permanent: true, - }, - ]; - }, - }) -); diff --git a/internal/website/package.json b/internal/website/package.json deleted file mode 100644 index 0dfd979f3..000000000 --- a/internal/website/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "website", - "version": "0.0.1", - "private": true, - "scripts": { - "analyze": "cross-env ANALYZE=true next build", - "build:docs": "next build", - "dev:docs": "concurrently -r \"next-remote-watch ./docs ./src/pages/_app.tsx ./src/pages/_document.tsx\" \"wait-on -s 1 http://localhost:3000 && open-cli http://localhost:3000\"", - "next": "next", - "start": "next start" - }, - "dependencies": { - "@chakra-ui/icons": "^1.1.7", - "@chakra-ui/react": "^1.8.9", - "@chakra-ui/theme-tools": "^1.3.6", - "@chakra-ui/utils": "^1.10.4", - "@emotion/react": "^11.10.6", - "@emotion/styled": "^11.10.6", - "@guild-docs/client": "2.1.1", - "@guild-docs/server": "4.0.0", - "@mdx-js/react": "^2.3.0", - "@theguild/components": "^1.12.0", - "csstype": "^3.1.1", - "framer-motion": "^6.5.1", - "i18next": "^22.4.13", - "next": "^12.3.4", - "next-i18next": "^13.2.2", - "next-seo": "^5.15.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-i18next": "^12.2.0", - "react-icons": "^4.8.0", - "react-use": "^17.4.0", - "shiki": "^0.10.1" - }, - "devDependencies": { - "@next/bundle-analyzer": "^12.3.4", - "@types/node": "^18.15.5", - "@types/react": "^17.0.53", - "@types/react-dom": "^18.0.11", - "bob-tsm": "^1.1.2", - "concurrently": "^7.6.0", - "cross-env": "^7.0.3", - "esbuild": "^0.17.12", - "next-remote-watch": "^2.0.0", - "open-cli": "^7.2.0", - "typescript": "^4.9.5", - "wait-on": "^7.0.1" - } -} diff --git a/internal/website/public/android-chrome-192x192.png b/internal/website/public/android-chrome-192x192.png deleted file mode 100644 index 4000fe3f6c6c407e59c32a4b203e9440f423a2f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9722 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 diff --git a/internal/website/public/android-chrome-512x512.png b/internal/website/public/android-chrome-512x512.png deleted file mode 100644 index ea3c99110670eb9b19620ed7cf3ec8a499dcf04d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28953 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 V_#dlDrUM@V($O$fuT*;;`CoIORu}*P diff --git a/internal/website/public/apple-touch-icon.png b/internal/website/public/apple-touch-icon.png deleted file mode 100644 index 7077c396bbf5b4a3ad2952372032a04d8176a0af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6890 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 - - - - - #da532c - - - diff --git a/internal/website/public/favicon-16x16.png b/internal/website/public/favicon-16x16.png deleted file mode 100644 index 055854f65ca1227b3c8fbd884843e9d03b1cfebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 979 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>Q~0e zzg1UGi1ohl+5R*2`2T5-L4q*!JLk;5!t+4%JLfb+@K5fUPca8>nl8R=vGjBNp>HY2 zPDxKVz}0eqy9Hf z_a5SF1FC=Kxp6OhBhU?}q$a%eLs1WO|LdR~$HaP$iF5;Pu^LeWB!+11Ts)u`2YX3(8-U0fm>7( z;55Q8hNwT7Jm(F~h?2VpF9v@a`nVz>gbcy3G1KTy5cg(HvpLrp4Yst>F^RiORl$Bld1hnld zw?+a@R}z%Z_hnD=wNn9F$(ZEr?owpN#~T6Uu$OrHy0SmzU=b4MI=}nbM4-?#PZ!4! ziOb0e3d{yY1x1ENN*{MtR{Z?II%7s6Q)T)MQzfl)HjvXa$RHB~g! zw3OFZHo>z40R1GbPY^G3@xmTjI9g}v<(cb3=HaSCYPgV z$jwj5OsmALfxqSUX`qJis*s41pu}>8f};Gi%$!t(lFEWqh0KDIWCn(cIgdZ_a1@4V zXq@stea7=?5CgL^w_Y;0u(GiCWD#az1(ybs!zs+ln?n>%-?(z($eANDN7zp{cr5VJ ZV|XPlSn|oqbSlsa22WQ%mvv4FO#ry4lve-% diff --git a/internal/website/public/favicon-32x32.png b/internal/website/public/favicon-32x32.png deleted file mode 100644 index e5f8be050b1dce64a7d5985174e1cb5ce8dbe01b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1551 zcmV+q2JrcbP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rg2m}%r3eUUdkpKV$ut`KgR9M69mRoETRUF2D z|1&eY-BMawC=_AQLIEM5;4O*@B8Y(yK}>wWV1m&Yn~-3FF;O4zL5aSYXrl2&;)BM- zNJu2qU^E&CO65|Ji)f(>~7n=%;g*(_LOi-j0VC>zn7WJ%$fgpzVClIFpOag z<2FOCec(5@4&A!I2%w0egh1@mhi)B#D*`(}4KM~s06x$M^eIOLI?^|li1@Fy4$*Lc zY8$u`P=LAO+XB!FWPlKEjv@-d0Y(9hz$BnbM8u7Gk(Y>vULqbjo};ZA6M;sAT4z+H z3fJw!81w(51L8NgHc|Fk0YoAG~XMjV%AixuY?*Ncq-f~s2G2512N5BO}TB(h49ev^0*@n)xj^?1?FE+-E z08FNws6RZC?QTMhdt? zK8q5Qz0f=I?EVuQf}+33jeEN*suH_(q$`U9g(ZO>Bms{7d|+vRI1@?NI`@Kz%GFO9|JIDB?%#51_tAW3TgPVLJz%}jdR0SH z@=qN_9|0A>VqgKV1egG1^vL0AB)Y5t$bSVTUNGvek0PURO{q=K@doMpKM26-JxU%5~boC=n?lVoY?EtwkUdk%~;J_t)C-V~$WR z>o;tkO#ptg1d^1?eWw~)?YNGKCE_PA#B$wz^TW)5H~HZie@vTy&zjna_3t85RF3LV zN?i>7VEVwtOr;xh8A#`be(^Lg8bez{)5HWY1?U7)_I@OA+r2 z@dP%f3Wyy7)0vGj=c@()2Rj#Spd8a z6tvO5M?q8vi~~*rW9{yRa<7>KJZF>fs5|7Zj>03AM1)XgtyS=y<_V;90ipcx6no{K!A#;o|2Y`0qG2nCHW1t&&*?K=3 z=mAcO-`qNtD_XDPxw`v!=h#&Hxp{uRG(|*8m9--dCg)DwTUA$GG)9Zj#yFmv+w;{= zjeeoD%u2f(m<9Y&Gp;U`oY^=Hc+v*m0o(`7v}JXdS2MMMlD zM5Vy7Z8wjQ79@+3$b_2MXE&Y+>E$h$vcxZ1>30IlZAH8aeCGlYa0$p!o(ZFMq$_pg z4>c*V*8-3RvKT^xA@<3G{2QdaJ_alUo(IkY>wvBHeHquB14daz;y{U^DJTS(|273} zTNay?)xbr&Va9A*dgB9$R}&}5mSWbDd>BN&>p8dNKr)PB4CA)rA1B@W1eWbYssI20 zC3HntbYx+4WjbSWWnpw>05UK#F)c7SEig1xF*rIhGdeLaD=;uRFfe}EV|M@m03~!q zSaf7zbY(hiZ)9m^c>ppnGBGVMI4v+VR53U@GBY|cFe@-HIxsK~gxkvi0038dR9JLU zVRs;Ka&Km7Y-J#Hd2nSQX>fF7004NL1 Bt>gdz diff --git a/internal/website/public/favicon.ico b/internal/website/public/favicon.ico deleted file mode 100644 index 74a56305f8cbb837e114ab36c438a8c94e0b6e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 diff --git a/internal/website/public/fonts.css b/internal/website/public/fonts.css deleted file mode 100644 index 016e9581e..000000000 --- a/internal/website/public/fonts.css +++ /dev/null @@ -1,26 +0,0 @@ -@font-face { - font-family: Colfax; - font-weight: 300; - src: url('/fonts/ColfaxWebLight.woff2') format('woff2'); -} - -@font-face { - font-family: 'Operator Mono'; - src: url('/fonts/OperatorMono.otf'); -} - -@font-face { - font-family: Colfax; - font-weight: 400; - src: url('/fonts/ColfaxWebRegular.woff2') format('woff2'); -} -@font-face { - font-family: Colfax; - font-weight: 500; - src: url('/fonts/ColfaxWebMedium.woff2') format('woff2'); -} -@font-face { - font-family: Colfax; - font-weight: 600; - src: url('/fonts/ColfaxWebBold.woff2') format('woff2'); -} diff --git a/internal/website/public/fonts/ColfaxWebBold.woff2 b/internal/website/public/fonts/ColfaxWebBold.woff2 deleted file mode 100644 index 914df484fba79edb1f521a5c7d959989652cc583..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34576 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 z 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

;3}A{qKZ`+a3;!8z#-(LpecBlWhS`oUhx=m> z$jU;O;Ee(K^SAe90wP}6*Nm){zgo1U<`oWn;&fcuDbM&9;(Z)n!L+`}+maF^r%_Ti z@IfRhEHE;9pry*Pue>k5TwrcS_al*m#veOxU^J!X)@ZEo#%O{vXP~Z{bR%6CO@?h(0p>U+nW@6r8E@1IX**74wm7vkP2F^# zzhjdk3H7I6fH9z0QAeZCZH%d@o-tEU`aqiOMoi~MPz(Yl$&3U!K2~hFg&JEr(!US7 zL}$Cc!HF+DY=fVm#x2&~FkIQ*;b50%tGnyzEIddZbn$mc{R4%#f}W0-J6xc4{$ zEj6+L?b*H3#JkR&{Pr|)pA=MsA_3N5%u0>UWwt)Y@P0i#Ho7`}SG-Y}F*X@ifdtef ze8UC(p39%7_b)I=eDm6WGO^)zxIQo~HKPt1+Cl`NGyW1|@p{GEH;OqjABEAhICGOh zLCG_O9ZqXHza0hpl=ep}VIXc3u3TAzWnQR^0V&V7=X$>~nL;P=f?t?01dY-poBF#O z?jtferGXP4Q__|XM;t49TI@So)UCJo#dOOHV?cp;BI6e963Taa;oEuYGPr3dX#ZiW`ZpvH|Lu5gSCFs?@CQu7e|Qv20yV0r zhyX8a+$<9dMURT_)-Bgh(M78G{41#Wk&m~2H82sTK+ikj1zCLK_=eA-c>G#f9-&uVP zhGz^AA`kx|P-BT;@t)Gv%=bAzt9vR_&h1nXq}Eq48Hr4)$W8kD5M>Y6YJCV)KlrPq z`}pwgb1~FL(d8x`B16C$(B!vU;PjOLl$puL?ni=Z`O2MUE_-Yq~b$x0s3)naa5PEQqP5&a?Scw02KW{Ld-08u8@66Sub@;n#ZsP#MSx$G3 z>pGHGl5z60{~QRIM5KS=^}$D1{OYq~ojaYMxu@b@y31Gz>nVGfUi{q~0`K4E6i5ACNfGZ2)y_TVf%|T!!JLhXppHaRoMU$>x6dT z!#VL=>Pwq8A2ysRCL*3H)vJ-p;7MXm)z)>rQ=06ZMy?Uz z>HMhv0J%y{6l|zU%QPI%Ed%)%s7xGe=9GEM2hbL2?QJVAU50BF5n65;y&gR}NeC7@ z1<@6T?PulMk#jLONk6{@s*;UGyF9Bj%No_i)PcfnR0~f|%MKKIN|6v@N{g-R@WzC)U{{T2Z$G?2~#{Viph^hC!(T`^t1mu*M=qys0bP*{! zl4#*aiZJHZI4qYI%6s{&lQ+=G*}*k|KQh>tXeQ43-st`Fee>&VX<;J38kdD#gU&z0~03dNjq^6UpFLH2o<~x^fyTT+XDN*&`xb z9q$fblYN2_ela#o~X5i9gOz_mqqNct34S)3B8{gnoW~bq! z!-z>DL3c`BomSO~hR+O#o%4%Azuj9Sv_jWzVA&g8kuGa0>(ve(%irwXtAC}hO$y1d zA)l19^$|vmr{{=h=_}^ zEnH%5XPGS_jXIGoRI|k}UB`PnUQW2dkYQ=s++@i|GSm=n(l6-MzeJJJ znnEJW2o$Xf1!=7Dzx_AW9~7Bp}n%tt0+ck0KfP%G(k^wj#)2LyEZ_^zD$sB7@9^A;>QpRxqjL>>+e z-9@Ibj*`4z!L_?u(2K3V%PW4Io+_V6Y4Snm0F_oF(@yDJ${yxs{t9G%kn>gU^l9 z-Tm*yFG5=Ze<$mxe6wWyr_k{c`uI_D^v!v|i{^1?#b3vgpV<7fRo}%P?t}KOvSr(D z3r7TurL}r^^{H|NyIyAK{?JY5RH)E&pO~m_T1a=4cMKh^;#ANbYZzqgdIeq?QfGSV zt48BD?O`k-bxKW~Z9aq(-d&Ppwiy0x?3(P#>KN*Xe3fjt3_*3k)Ba$3B?tu%RooFO=TPQgTh+l4p34#}UcTQEkh(8OZ3YzUe z7j@OlbYX7agi5%)SFUYUZKB;_++Omy66lB**({GrCx=C55)~2T1a?eSjA$^&CMVQC zmotfxVd-Rf6xr;xvtx5}(_sbaxnof}l|-snMMCxHDFk94T2z$nGb2xVq<@qm|NmnJ zBYjNERGM~c3nf!KmJ&q>6!Zz!BQiAUEczCttbKRK?(Pk?7!2cf-w8R}zqyYycgF5` z$EHsg7gtpHPQPUS_rAaXzyCPK3T5USS>f?hy#J5(&5Z94!4xPAqhA;l#%l>BQ>o0R zhKFSk6_F$}pCH60w!~w&R4qIODPI|#kLbl-n7{NpM9TXqga*#Dnf@Sy#nI^ZP2ODA z?byBS=CU~~eohYWe$)L6Lm|$Df5%{li!%p?@*3|IvbXKn;dxvCb7RC3)a8%24_p5u zvSU#ebR3W8LCg0w!Y2M_J$&2k8ovuzl}u(Oi!?-`3~kV5lFcTx-8U`OWLabv7Rmj{ zCE3~kDq)CTB2;@KiKKem6gLo=<7Z6jHw!{Z>p!1e8Q^WtA~st?J)2~X?9z2~ikfCS z-m~)78`Y{E?@C1SuB&U;dMWk6Yp?F>oA2X@_AP>Ie@gOAK~=`}jCI#hQb%i?+wLV^ z^+d7ueBoLonzRCZD^U7UD4r*H3oZ{rX}bk2N9I1+*|>J|$&;Jee?7r``H4H3jxS~1 z?~S)x<5xLeQ9kPayL#$L;o9?xwaAlCHjCGOCtN#1S$mM7db6Tt1>DbU^#AeHI2tp) z=dwSwL@G@i0zp~`2!_xIbx+_YPj&nGILNbu^58!XV1t4mrojUKjLkx460iKo>izzO zlkDEl|MYJ`o;m>0VaXR4;9|rY63kWVkEev1bN76^5iWSePz=-*yRI~EEFbCKS9Kr=Fp{uCeY z2o$a5QmS)}h6=-QE3@eeIAQL~rr+Y?yO3T8S2x673nPrlvbMXBNx3I$IwwC|6Aaw# z;+TET^4sA6m$MxpP!Hs)=xARDzb86p&l4#8oES*=(rT-t6Z5)N?-GS99R1&S!om0G zp>s2S7jeRD!8o-40f~w7O~oMe;dceG-Hbj&TJ<2Ox9%Q(us6XfMEs7LWbjpjf{->qo@h@Q!7 zJ?i9^FK^ObINSw2c64x~l>7t*ei?QQ+J?-@9|8Q<_&WfTvwlOUqXYTE79k|>p&};- zn5*B@9ej^>a#qg!yEI-1z~*LM+%RJ=h_mJsVQDbRfu|oRnUoJt4p0D|gbsXTGf_S~ zJwU;{`&1v|(04~VcjHyqW0M^~$p<39Aoe?fp7G=2VLDs^oLX!*!i2sn-Cg&wV6Xie zG-w%9EVdJhyK9-HPq2SrLdRf&?TzlP_f>OHS*~t>G$16)Wv3R~J!L}QweGIRv7%o4 zv(cdCJH=wVt+=~Zl&}tVcZcGXci_vG%*XkOcIC0OHA85Oeh>{&&Li^Y@4 zpxf>^6&c|Euh8w%H;i7-gjKi8S~)1?%(M&uyQ#W4Q}MPAfY;mD(tDvEmd72deVv!w z5#3INukUd|P;Hyjx9S95$NFlT(^#!VbK=>A&Ihn83T-|HMGM%9`1~s-IIbA6*$~;r zpXz?hz5wSpOW(`vv>5*i;Ht19&IH3XgCBdt2V`GOW$=d(GtI`@nSJRf!GaxVV%E;iy>qEn9q>y{+pdS*TBZr;MO4R!iDcU=fBOIFc>MlV@e=(1kNHF;%60di&wuy};QCL?0DKOx2&hlA6|WQPs_oQ( zI(JkDRNFfr;2#_x3&V@tqz^^!74#+K4-4#G?0{*}6O4G;ywWsd(n&gp?N^5d~ z7-H&xUMDzr*9we)xgfRKLOFX?3(5&e!$!7f_WaP07>j<^+N}oEd*BQ$ss4s7e!6Bg zG+QLdUe%ULLyn2D=w~g25!-ZVFTyE_F+{2FVMooiPyuiHin}jB?P*&(0LXLOx()$y zPu=Yv0CH<<>0&^Z>uPr!kh^AURY0z)TZ;z!|Iw3UySkOtEXh;)=z4&3rao%XQunBV z5tGTI*WXy?o&u==xzS(M?b*lyHMt=_L{bt9sEl-v8kxB=wSro{JM~?NrHQnVOf63> zBOFbY6vl^U^yf7gZ~`E9rM7%p5N&>7G+uOB^Y%DCxO-Go&F;shv^H!5NPEj%XHD~N zNwg%cCRQYF#ivyXEg0d$0qs*d!Hu>^JxeW53b#wet{k1f0_2yZB*vnjwRQva7Ch0_ z%1tDliKO%%Rb(ypxNCF}g*uK2d-MXu^Rl|J1-OrRwidFKQIx)1Z|AWyXl>wc4q#89 zyZd-!UqRf7M_&tI76#nNIyI}8Ncyo9Y&#E*TK$8aqMzkucC#o7f zP`6*zld`lL(!Rja^{A@ZA?j$yy2xxc57>$Bz`)6o#dPyh(!x5>LMWO@8h*^?n+>qO z9P!0Hp1;4i&U{`0r@cE=NnN^jSKU`4XqRrv;mZUj*N3}*JE5EN1mlaofNE|91suSE zjq;DGPgWEehssgy0L)FhPup~Y+J*7D7!N{CK?2DXwL6K=XyfJ#du(yI1~q_XkTbSxt+Xy2I_n0xkMp=4cVhCf$T%414PgphDDEe}1+pF2@^}e)LJxW<2tC1sSS14G zrc^x{EnX8xm{x?=mO6y}cs#P}E9@|&U9?~PIL?J)A=dSBfX=?}2Xs60FV=qUez|$- zD$lI7+sBMTMbaxkDh%QhgAO-wPy;Yqmq7~Y%Sj2#phBp#J$F#)(B1ucA`RcPCiEye zxf5wlQrdvz(p6=Gm`*BKs_6=(s^{g}1PrRkn$&G6TxNaobf|(5LLUm@*;3$RJLpIH zUY@L>FdsUaCg&$-hha`PR|(u{rG@u6@{;z|f#dw1+7y!jRZ~JLA&5KEwmM7X!Z0vw zD=dtD4@P>_F^PS#L;H5!qC8~ikRFE^xUX(dYIB^4o}CZ^ASi^8%E^KeNpw1HfGYbU z!U%#RNnAp{z7$jv58P39o-u}`upMaXjT@Nt@r=sq0EP>=ST*EsnF$NXxWGWS|7sS>_ z2teiJuP~grI6H+GKg#q&hLtb`pxwyAkhY&dA9c$-!5lMTw-A?<8gQelgXmziw2Ah^ z9ZgXtOjQIboHGIehjx>=f{w*~_y}}Wms-%@;ZXoB-P-ktGvTk0WRQ&0_hV3+Z%}x$ zmhqg73drzS6A2?OijF;KSaG541;l!$P1XRJ9^DDCx`MFh6{yVl_avAO9=A13FP@@rYA96XO^KnMaMdNvF78mzjMZn&Ds503Os3r z;Si%LH=?>=rLf9rB9b&MkOoMFf^Lb|!Ovoh;1CrvUC1nhu~s(l)}R9PDu9qSX#=FD z{i54nDucSxy%;%ZVITxa*;w)p!2K34`z@k^ni@0{%!h-VMmh(%x)@SvQiyAzhWQvI zz5!Iaq>Q5`fOYs2XB28sP2=5yhC3%fXTB!#fi=hqeOEU)r@(yC93)A{H_wqhH3D@4 zT~%=fIm<(Fyhf33N6cuQ&L}0vqxN(;G3$q>;@2q9C_q;9%D}Z_5%_UU1p3z$q7{K&Thg*iivMKMS&P83HfX zoruS`)XHp{a?8F6H6L9`v23n{i0iwUzC#OdKABVQI*4lNMbjkold6H)H|dGNIOV+a>; zee?5AV{ta1+quKViOTz4B=ush{8BkqX7JOi-G4~VtxHScXQZ}ATHou{{Z{gSgEGAB z_8+?>7&S_JD-%5JzL#tH{MND$cKp5EY3wD@@y8u&bQghpzq5Ylj<5C<7E$T22hxfpFu?aHb zSA+U12)TF&U+4^#J}bQXfey-ulGm**sfN}(mQ|Y}JpAcc_0?G603x9;x&g2j0{|*w zPAn+}M=J6}z9S30JCV+aacNCZ27-=cE`6N|Bc-6E9^lB{q^2&xU>p?KrVne)1`OH4 zQE+0lHe;L55lLJb+cSq*n7tiqVBZV`4i;%W4QqgnxK zBh~mEPG?~NgAtqAq%g1CvuiXlplI7BY~_0@m^Ax`=$eu0SuQTY7spV-o@Qt?K|Jh- z$SFF5U5F4o2B-S;)r=nHX^yG5?LCTOSAvh)AN;|R)FmImQL=9=+cJW}e9ZAO#rtSklG z7aAnG6ldP%WwZR%CG79j<^Q*|KMP0eSf5Uu_Fge(b(IICW`xeCS88)XQwFZrT3Gdj1ydW9vV>7SLD(Y_LOEeLajI%~CK0 zC5tR6b=VkHbeg}vhmw?2-6S2)`V&}FH-(ea6)EKDluJ9fmHSQeD#4V)!_ zqXR}AlBU1F-a@?*NJV_9}y5#?jKrM|>jce@T)ZPurOMj1}Er~9CVlg{b+e}O5P zfVt9wm3r^Ieu3rwrVf&;%8Z2nbi|ayFG{3T0RzM}D1m2A7yW?)=|c+->L&_tit!*Q z@3>MWM%beyuiJO_O{$`)yS4Enpe@RiZatXibp+{vhpg@$e*S5%LI6*jPXp|HB{UIs zS_F6X&&T!Y<5%m;$9+sR*cf|8Z(*_uVF-$-i)Ool0hA|tgX}xQe#)SX&fOZh+G`ID zfOg4KU(>{Mlsc<}Gaa|ENKBX^g+4fop*DN2fTDHQ*ULOTBJg!EuS%>o_YIu{gt7OW zh1Swmfb)fsY%;;2URHCmv6@rl1ShV@3yekg1y>tZfcuN?qe!M|**08!91{4+j69Le zGkZGNO?Z6@+J|0n{h8?tKYHQU#qylJz{4aSWdaOeRck6m(8E42_%PKuyQ=OG0A0>H zwwI}X^_H6LuT{@T2Rie(G`D9QTS$`TdCe)8S5(^F;}&HVU3zn%6joQu0BQ}lw+ZsV zek$aL?$lCqn48Lc6IsBe)!kDH!@VqOeXNH{xXD-cSMFCvE5j9A!AgJuj$mb7N{Tn8 zWI@6qX}6ohP(vf3-d-^cd2libATXA>s2hsI81(I#?$~0u=U(&CmtaBNz{z{Qo*V>$ zxtaOH>^Qy3JMIs&CrI987Us5FL`Tz~W!craS#fr>qpQqWN-A7hL}jf`V>(8lxZoCG zc1Qs_bzK}5k(o3j1C$HN(V?A?0d521LoZ*=-3PfJi>>YMrC;M<>!mB;<2tHX*hXfH zmy0}U>*{mhQ0KnwjdZls?~&urvw*SSBb|y9+gsW?tg_(H)qN`zxt^RT%bAdx%~>Rx zK($h!z)92(zcvsb7DG2ruhaYV^$d?4oC&%|kLU?)PIjK>U;i7ueWwFMjp>G?3uPYN z4P9(##M*3E)|U~;k>fndItCt_=v*NU#v!VgZn4nnq)L;~uQU}E>ze3C_y|`cpA)t~ zM`TDnVb)RWNZE9jhvO*eX6Ke%f7m}P7-}3Vq5X$T!+!b@H470IiZg6lGAY8!)kKwT ze z%&HIQP;ODI*2N-7ivf^ck1#)u(H9R0MFMb04Y4?GbAh44Eg)!FoE`{&(eCH)f5a`$ zl?SnUF+;UagbQM!B+mBG=!T~NoP%OQy1QU3qLduie?t2j;b1eBN@tZR7hOTL8H2fI zCr%D-`8KmIv$zX_5#DT;OX=3rd`LCZMg}4Hq_SHN62G@FAcD%XFzH+u%NV!xFo%A?1j!)@!nSf#Vl)Lxt#s%zkY+mis;2DSw zXB%dK=gsFA;Gdhhr#kMyt7*3qG`q2FHlHfc+d5&W{pip(1Laf7yOn>K=^I}8hS%^2~{Uch)L1kEGnit+L4hgw+o1-N0D=CKQgYj5JtqHo}mPu?X$8Y?~a zxX*)Qp)Z`(rC5?E^sd{gthvY+xW13a)CtV8JltbA*%WDR8Zz?W{;QWj*sa_7@4@6^Wcx9(e`mg^*x*6?V<5pX?NJ_h`#O_{slVk28Q zL2@tD{|Juy8oX*|siT5HN?GQwksQ~gUE1kyG`dhm zq@JGiKm&I=CW;&i^}s+!t32Y-(F+^^ucZ-8`N2Y(2om7-7%XBK_##xJisba*N-c;t z2KDJweW4V$@`3g-Kcuj(Gn^qL@`ESJqH=4X+Ui9XxXfX{VCYDp{1wQ z;eF`hZ|lWB!|U+gKYJQ{?9VRD{Il+uA>(}6F}ow-JbK;$YRv73XU|3e-vAZ{{|`!2th1rtND#)5!)PFZR})CcaUQCqX? zw=6c@>&mDOxisweIiN8Be;gN1U6O79^ByXAos>+u*SAcH|HKIdo$U&zg3FVaYh9jTs{#Bm2x=}fEr zSd>PPuVoZ{N1r|w*h)dmm2(orgXi$BBEof?2Gkzt%?%E~&f*W1zr{(~$eE4PIV&e6 z-z8^q16s$i$Zez{CUUCSBcDBQ9A!bZeJ)j8)B^i;fTv9{tPLiFyW%bjN3yahkC?o;r^v%Uxq*B!#D zzrru@)%CAR{|Bb)9%}s9NlbY#xtx*_`jCbq%|(Gum|oA#KF}`M?s6YUQl>B?(A41ctncO+xS@+QB zVijJ;4sjWTM*`eHothz$)TI(HXyOTKmf&;-55dlWbHov}vWWVB=W7k%3W>qbMk3;O zsJm1xd~DN!IfqhImEq&0IHVnu^0-QtD(@P%ElttovY*$}PMT|~wDhVi5 zGlxWoNrR%h4Yo8G&ge`%jh@4k?)md9IHdc624W=Q698vH>3-ZfxxxU#|g3i~G^PYK$^fpa#3iB=78^+3 zdVKQzPZ&YdOvoaE14XcIeMGr4Lmj`iiL;{0#e=-dpy&pvixkm~vy4Lxh>Iqb8;R#5 zO|W1s7cUMixh4$Ycgu|vD;ZhMh1I^cLCB#Yxf#v=o-D))Eqq3{$1I{Qpu@1uFJrkU zMxuc%H`zD(irWU6pG+~*s~Xb~u~?7Et~CB*an~zTL9Ca2HVBcmn8Vgc?$&fbX5E;~ z>|RI0jFVe8ncA5Sv?coU>BIF?WZjM`WnoJOB@T`szO>5L=6qZ)VI1EKKo5q-pcVQ* ztQ(;nl5xCk*pO#c2ZRJ$ZsyHsu6*H2G#lwoW*VJY@g zuZ~+JzMw)bZx9`U3D9`cQ zOT7QsfW7%%~AZwfYZ07jm4^#0lla+I)u*akBa(w%l!K&8zCm#r1|% zWCkMzVXDku`i;=O_M)5T-o4x2{lR2=;Nz<{4O<}i zHZ8;Ei7jde*_QRAjq@BT7ln4}0BINdaLAnsUDxwJH3mBV5E~$?qKR`7F z6&m3X@bFCk*HuGnRG+N^JiShH%;hnQfFaviSuDrL%sJ~yau0!!HQJ+shyc&^Ep8ji zUX{pr!Eveu8gQXN&Q;@M&0F}O>a0aV0WL(dAl|#|B5SRjbuHvhBM~SL*0WM$zK&Uz zn^DR>Dj`h%rBxZ>{p(A!@ysC_S668rsDdAQJzi;r1*d`h`~=AL(vKB``;r0F-tCAI zAQ^~J0kAHwNKdbFNcMh=e9rP?XH-{ZSnwZ%)R|CKIwH#P%%Ry`vf3+%;gAd`kU^S0 z?=}G0LJ8`uEh9?64`pfWM#~TIVHG|+kO){YH1^-PF46F&4OtsLYtZ@!>nj`WiGqpCABw9=bcy3kTXE(|!`&Bb-k6j*ut=B!F$) zmYV1`3frv?uJ!CSGEhN+aMBER2r?kX464FIHX@z1(TFeyX(XoJ_0@*^iU``Ebi#E| z`USU5AeSVo8I$o}+-9Os_>nIT&6+Q00?t|_rC1o21YP#!A_drwp*`b5z?9AJ1)K$3 z>N|!|BmbCv0BCOi9ZPHV-6KvpEigC4l;hAQfpYM&&x#6H1Yh&EjZ9it38;o>MiNhF zLhK=rXGYV5!`D(2gJV?g(y*LZpwg3_*^;YHHc^G7G3EN4AQ-;tl!8G?K4YWT4apWECQIl1y zTcSTqslYhGQ&JYfNSz!y3o+n_SdQ)}xbT&%NiMOHhsn+o!~6SahzYWdLaAt`c=R5i z1LZaP^B6bmXW>v}X16>}1A0!SWmS3qpH27aKer?qEmz!kw(x4`eX$gRdNt2M!+*AN z0dIdqF$iQ7-i@fm@9HkJd-dq<1$Dmo5=oLCdykg8{FSDHX}$XUnlwpx1eK9I+o1xmUw57Y6!+_RPiyF%h`BPSh<8#5>J>3o(6B^R zE}3`@ZJoHN=KmQ{jtjcY0`tExN!RLD;kvCVUg3rQ33N9AZWm^csdjVDU`a!-G2C9} z#|CxC#ht3EbJ3(>p(K^EXHJx}cElqFUj8sG$M^mEzV^EFS)gUHPp>J?gKq@eF=EYT=7%E6bzz?yc-icFwpqBx- zV5onDk}L^$pRK3J`rF`=J1N-$cI5i9QA|X5<`8}v4>U$XvTl_E!o2D;HEku+O9Hi2 z8ar8^HZ+^iqtPaEk1tr`BVCVoPEwZ<&M3SaQByggfYgY?ymnkry)&42;SPh@9#yj> zOQn$aOq2ZQp>A@TG=&z7nJGG24$CbF!jV**qHm{r7Jsuv6gFje)EF9%7YY@LLE>|l3hV& z)pVI1L&t6QTv&z%z=bQb(-1OxLF1YezPwOLsoH`ei;JlW^j=dcr1lLj7h=V*8WJP6 zBAY5zu^+MMa#+8|f9i6g4!c&9Cv~o;NP{lK?CRc8t%t1m-?jJ zRH2<75@s+$43j_-O^=JRKISn|y+A-m^5pn=+Wj1x(_DU>zW^9vpv*6_6@xx_ zFwPB8t+4<&xXuuD#1h}|f{Ejq9`fP_pNrLyCc8O`Y zjgzxeGsUJWP$O`?QvR7PsH&K2snc53{-A|Q2pgKFW>UcC&x<$@KmEvXL+z?Q?+jJ! zSUwF1U_Ck8^G189EI0R&?q`(t=X9!b8+q*rg1RxFtA8DiEyF3Cd7@Y2wk*|CJCRTr(=v6~mM#>+Xm z7;^vhs?&AzJ4&XJ_s7bBZnM!!9t%D@s7>wgKT^l?gGgd#NmC-JrQ|UqA=~31L`2HM zh_G-&*yF}q+0AjO)GJ%O1<2bttgA>2)HUNNOsNkeE)jR0x4+C~{5WBfW6N|gGm5@7 z-)#u|h$f=TozcLA2oRg$D#kq_G%?vlQg2bW_{(mEG&Fk_oVeOt6bNvP8-rL zsA;Se=+NwL=xKJ2!;+MLq@^8TVpfw287o2H$1G*UG<+21L<*POXSjNxw4VHZJ6&f; zV!1LW@BSH)=W0({3_~@%{+Hgb{=1RK4Y|nvmM+qFc*vjaj(V-_$<=48bLwp;v(_@E z40osdxoq+2t#!BFug<{gJx&bk@onK(s_6u^bFPn~dk(3XMaO=c`_&F4h(@au*|+CK z2lu}@bJ6FL>@F4ICi=^i3T1uMjH#Hq?jpp9t>|mGQ?Vamnf{5Y*|n z3PwW%wqjr~Cm_{-z%+W{p)^xs#VCQqA|WLJ3gp2|q(o-y5GTLPM-G+!=#5PzGYz=x|r-b<$ukhqWWgB^NT z5fEd*91=MwQ6fwMp+QPRFLRE7KKdKRwbsiCA;w`AnBrUko*4Gw&{4n~tm1$liAlB< zhv0UM2&&K`aa&4JFFxN{7f8g#9o}Tj&MT$pwFl#tAdyS?72*dkA3n(SFonxTgmPIx zVJkRDOv4Mp02N9bg5;Vcm(HLz6NbG|NN!pEOHLDpoLQ-f63K<4rfd0m9^>CoDo5H4 zDcLY+2wX?P5E2*LOM!7)SR-W(Sh#hF_5u|@a&GuhUq)a{r05gN0E25Jk5VAIVsFI2 z1d*U4#52n3M+_(8^;)NkBl5;)G@e@lU*3D_*kh2(fl?hy|msc){WwNhVot6zpt{^Up z18ssd8pgT2yHxZ5w!vZm+%}@S6dN&@C{O9kCZzQ7iWGeZs9t2glElo6X2-Y^z&I+b z97iFAf%0w`QyR|->+2TNt;ydK3c!tK)?I!XspE2YDb@F$B>S@vCl>(}y@h$&*um@cBm3o|34*G(eTvVh~!Xml}0u81SHINpGyuDZp&mYyk|jRrom zp`5v7)Opp2gHMg`6(B6`{2f2=EJ*b`i#bN=6Q&pi%*NCcS3`8y%l=TXe= zUNCIO#0-h$%9>UpD2z#HBgApW=qW*jI4}*z*E>Z34=wZh`PLa7!L!U9gYCr=Tr!iD z+B}21GYG(t!KDx(LGLl&Q6#0Mm^$UbM?RoKSrB43!w-;Tz$Nn_xag1s#Flj3BoZqr zhWG3|iaD|S)(^T+Y zOPW8hR8rJFA*6(p55Zp>xdC|vX_-sy1Mp9YQRho30a{chK#j;~;uKb45s%1iOe(6R zLj60F7h!@LBl9(3dT(z8r|+2p ztzHD4t0oGWokUdk9C;LAy(Wf5=jQrrnhQM}()|uoP07}oFeMVkkJ>pEbbf{&fBy#x%hLxBP;3{0nEpT|-z>`uE$ot%N5_4n`PB`OK0ZZJ;C*0mtnUZndCHV~xYkst89edCB{w{qd^P()is=HaCQZkoScNfQ{{~OBh)W zw6z5U_k)ZH+4WlM%p|adI2yQXrBfda2z4Z=oZ!w$afn=paQW{KuOmWpxY>zRq=z=<)1<~ zXTY17MQ|Kg_kTd)|G74DI&isUeO4O$PmJ@UGVd;M= ztzACXBfH-!M%`q9@}=L4DQPqK~HF0QYld; z%${gi)d-bIoHB(Nv9q}snf=c&WELwmF2{c<-$D>Tn1&5JX(ge1KTn&*99cv&Ei|`* zCHH8Oq}NvaOkZa~Ntsn!y=LJw?z23arzFwAB@aSy>tC-rt*d@*C5Ic+N?1>)OeBjr znxSz*zH{EYY8);vG5^#adgg0uo^B(dyA~Hlu{^60+>3M(Dn#_ROktG=>4P z++zfKM|zfzqFZEiK%EN@vfOHR-%lu(`_6*6<%+mVRan2{T%;%|g^X4>#Noc8tW^bp z{fH}c;R3cwHyEHpn6#2e-mf#ycvZkFqM01cehl^5!Ozpa@b{gh*9#aJE|_wy&mN~W z@j1?yLUh~T1#ISfFFE}U}0Dhk{{O&&!Os1n=b@0=pde{&T~KRy+2Cm zc7-f1q9*!-=Ar=b_A~|pn2g!^t*MZ97ui~Q70>4IZ1uHzLP73~QpFhk{?BDDZ}#Ir?rzLGb9;CbW_8kJ zTAD~6QqRpSh5J;>Q%-x7+c3G!OxsUYN%dw}Fg|OkRk_wN4&GbKt(w&QE@n$wD1)M` zO=T!rzMWMUTm-g^0YCZtQO$qSwEN1PPC7-+>w27btl)mB%8ZVirj3+k73dG1i>Q&( zgi~2isG?3D+M6i_{1D5gPrNDrF&z#i9sn4Y;no$hmc)V|v$P=Q$Zcd1FH1AURoQ=!$}f+`hA?C3?V5%2RC;@FQDPvEp=7OJOn(2DOXofRauT?VI)wYvXZ14&h|q?o zne?gczUQ3A%a>ZC&efmw)_ah_h@T+9{ELU+tNEHrYu9n@f(+8^^Og z)yj{{{hZ)NIQ%r5430D=r+x{sp^-iB4{VtJ74!~Gdn%T*iT>od$ZBq4sMx8ZS<#N3 zm9?iSZ=AV)ed#oo0S5cWyVI@Yg@1V(F-NN6pso$9>gRS5Ho>Ui*JqcEnKgPN70k8w z&n=P}^*OoCj8gK)zn$~t$iJS*!-aB+tS>)zne2e*dhx-``f@!E0IqNC?%iuJ>f(c# z3^t?57J9eZnrZ9f4md}Z-m>=c1s`t4v1d^eldk0udV`?+}EBl_nJ*?`rE5ZCY&+$cFn?hZtMEBdn%*8xa4tyaQ^pIr|VgM zyO%s&sHe*I4s&;i?2!n^6)=mvtv`-ZV7&a$+t)I9i&q12X%#+0`zU3TY(t5y^x0eQ zS^GL!)pK3z+KaCByOn}JdCQWefsNJc-`1Rq!GnoF?T8u~@1YBUw{TkycJnXlmixVD zX6o8jIlD-yTOI8!Vn!uM3CL2WZt9fixs@rw2>5@3t#;%mMV0>x8?P=p3Xs>v$0mD8 ziubp7cjEk2q)vl6KNj`-06$O1Zoj{2g)&=rbT+pvZCk&O*sYMg$6DMOAl(0Vy~OY3 z_XqOwu6j4!K10c>#Ury^xQzO=^?BBc+%J2%8%IZ9IZ{{Gp$m?MkK zTQJ`SmfVlCQsq*fR{QgF)5=`{@R`1EKTc0o%AfEP!1(w-{GXVse?CjzF0_Z){uL|9 z?nY}MW*TARqWLRtuX}4WStx;jZ$%3W*X)(t@s|CKLACqzlrKMa>jUrhTPK)5`Df?S zd)rO}O#A~-YK8Wa|NjTj-|z$c_^tkvQI5+y>x3-&lUt4Y7+NLaHhTt-8xw!>J*S-8JOO;DGfx=Djv7jsM50L(8;f2&l%HBVk! zz}k86`_)HRAD8MPOAk3+sP==4iB!Jb@dMPAfnL>Q6%8yNuq1w|hpsZ^tjgSzr<2%o zE!mHXybY6`Ii>H_W&JEiTNRLK?mJH-E;#3g=2mpD^5tAm;7|_#JBL}mK3;H*VEI2F zXNWE>e(fZyCB)T^)?T$5iSvcJMc~h_#;;#_mlCUde&ugdKYyN9xyiQ9^nN*?1ERy5 zCC-au7&Gl0pB}5GwG{l8@7fOH3Wk+C49dM2fCh_5laTa+phJspJU9kMp;-!)oq=8TnAg$1jxFS4hLA()m zUFC$c)J=@Ivu={-<`UbYBe#TTMvM%fSIi2DkbD8b|Mg5&D;2>kj8h zQ4oZVBCfPy?E$f6A@P^`EZ84R7F9Beu5@mTCQfZBwtwHdk$g%PEzuve{_;N?L*%#(1QZJ z3h*u;wGx1pc+DvduWRhJ2m3ahH4b`D8G6vo>zAI#*q6~eUg%~$?oNT?VW%ZTkD0FRvXsU8Tgs!f8zC8uf6idgnfSZ ztNrSyb3nc`3jAiy1!tXe-UEfMxag7tiaaxD-v3-x?2#wBl`2uDqE)E0MU|Qo{^e4q zLA^#z9%|OAMVrOiov_tXOZvLtRVw$EWtdSWGMTZ>p3HP+GV6H$r#b!3bi5!+03u8% zllM=?&0a>?bDaRp-oyq3%h2rNseT=KM zx(PL!t#+py^!fw3x>lXhc=8cZ@B^au5k||^db8c_S0C-^9D5}ByS? zTz|UhAOCmlv&F8%LfX=v#aUw9=%rcqky8iH%5dA7}jAc9<)&f3AT zwMBAq9jhbAG2*Dhz(p$8*s27!#<$~yW9@}nDCcpshViXciE)hU@`Z>jiw;$SwCBMS z^jOH-+zVfh{U{6)->_3mi4ugd-_J@Z{Wo|o$@l%B z5{JQ(zmze$b&8hPaj58dC!ERRN@NoQgk~@A6gByjstD10& zwqthy$Dx2Lavl!A9s^sjW^H@un+#ZPGKVRGpawV&tMVDGzRu&raZebc>ttVxjH+|h zdy*&yu;(;XVn}iOE?5^UV;gKui*aO=cJgTaCe-4EHy&Sggf8QYoR#%}OTlm1o(V2Y zeHPj49d>?|iK*t=UB@tlf#gU100ejN+9X~ORz@z{hj^!z=sHzcy zDs>#k!G&rgz@;F6svR0i`|87;E?8D6vQFd67aQX<`(67+0Imy$jg#a{cwPM$zs0H|Kgnpd8HWP&?P$GUQKERS^PkBeB*@E+{HHGn3HotwrRNL62=?zw m@41ae@JXeV!!YZ|e{op7q+pq{0R9wO9bbif_C_dY0002KmJ@XV diff --git a/internal/website/public/fonts/ColfaxWebLight.woff2 b/internal/website/public/fonts/ColfaxWebLight.woff2 deleted file mode 100644 index e2c28d9232a3dc5941688871ae720575f2426fec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33756 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 diff --git a/internal/website/public/fonts/ColfaxWebMedium.woff2 b/internal/website/public/fonts/ColfaxWebMedium.woff2 deleted file mode 100644 index 663dbd70e36ffac8486d57c927f82538fa9c99fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34164 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 U$$Iwpvvdu4pYZ)xuJk+r0Id@=MF0Q* diff --git a/internal/website/public/fonts/ColfaxWebRegular.woff2 b/internal/website/public/fonts/ColfaxWebRegular.woff2 deleted file mode 100644 index 5852a9a648e99bffa33a9f0cce4e5b407960f80a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34220 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 diff --git a/internal/website/public/fonts/OperatorMono.otf b/internal/website/public/fonts/OperatorMono.otf deleted file mode 100644 index 76a6c930d97a27bfb308203c659bc9d2b520096a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35788 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 \ No newline at end of file diff --git a/internal/website/public/img/intro/client-only_fields.png b/internal/website/public/img/intro/client-only_fields.png deleted file mode 100644 index 7b8e0903bfbf7f63998d55cca97a7553f75c1321..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27067 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 z 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 diff --git a/internal/website/public/img/intro/intellisense.png b/internal/website/public/img/intro/intellisense.png deleted file mode 100644 index 6c404a72f0d9775d5dabd60f530506739e0b453d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26332 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%0AOk`P$a%uyr8OqOs@yi(sb7f>FTa z@0ag+Xa-at^)+n*|I zXD?IJU##7oaA1@8!&)fXeNceSt%)B#SdHYM0xBdFLiFM#sGOeTqH3ZHOUQQ%YJz_n zn{vv}OYl5RsxnSD6Go+lI%$Diybw<8EnnODoF4$6-f!`mN^juPtzoPXgl7Z`Jpinq zd!}WqYcnNfJKyWrjH4HTe?fs#`>8@==RyDi*xcr|b^LwHJBgV$;a?&c)6x8Z$YV+Y zDTA~(budpLwR6~davR715RWEj{t^U=C(rE{rbsYJ*&TMLeGFi5cltyTh0X;18s!Rn z(U$C+49cl0V8T|seBvWTGCBh4GUe^+X-T#6s~fNtRE$yhi7qlj9=wA5+y!dOSy*3! z@+pjIO`_Tp%`C)U*GWNqvFq#5>D>GzGf-wP%$O5$b@+o8{nsi@LlQtC41N;NKwoK} z-qA8!1_@yOn^1VSxv5>n6)|-!Spl;OQC0orUg*)un3Da>c5X-h};Eh zys)u8s8g(#KbMA7juHL<1ln$AbjZ#vA6N&R{Zr;fzH?65dfU$QRhW}17Hr~xWrh`^ z0Q{<8h>j(n43~Ejzjaq!x$}5x0Re zY&Tv=#*DSQmI7CSVHH@A{ZbGP{|E*Jl$ zbYU{w`EJK29rMq3tUoY+nz&b%)0gRc>cDXi`by~JfsfcbwTO%vKZzo5LOvp-xXS7! zG5B1VG=Xc@Uw$*OQc@}Qy2Vj2FWvO>V5T^n<6hGZ>6Qrdy^x?saQ&2cG{6C0vL@no^j`%QS$T1-l_E zSUjaRH5%}pLgyq$F2wV3WLXoxPm;1|BFH39@B5u>UYC#gpK{0Kzq7>-3d)v3c2?oyfkIVlGFq0F*!QP+^;g~STGyDWuzOW&z^6e!(9r;mV{oY} zT{tNIZQ#t7&;V+sHqM{mz7s6Ulc!1z)NdLQlrku#(37(oc6bNuXAKRQ;P z3Kg2{;_HJBZ+@~47rhGp5iB_ufdl54cgqTFhgGBmffBCaA#Kj?4n#dED49oqpM|Gz z|H!5F6HBK4x1h{#W}-lq;RrL>WN7XNU%7VhUs{&~PS+|nc@`sz%!Dp=pepS%vvG$E zT{CzxV1y%QLl&)8k%SWUu_@)Ef4RZsPNDIICzK_IMaH<=elJ#H!|uxD44Y*7Bru0WAH%&Nk3d3?@BEnJJh9sR5!f2H#ML-5wpqs0 zE)#8|z3mF)F7OzZ>p@^RM`bUfNA{9z`;r1`Ken+xn16P4kB&GM`?O(^*)4*&x zvh%mccFD3l=+idBA7&_DKA$8Po(EqgpdvA1$dLp;$0UVEGQhkt?L9+TvR~oNUqfx~ zVFDKV;4J6l2zJL~xdZZEM28*?Y`sc44BmnG#X?07)){6olPEKBNPgRRKx;k$b6HfZ z45b6?qxkVv4FZ35F;}M;p{pJ1s~0670*@b^9m&vaB}*Ds4UKNWIWC73a8wlPU_F3g ztL}#(=k4F5e+_g>2s3_Z{kMxuk>MM-t)ZB-iCj%C|KHmen1IuKP%fTN^6e%$|G#?O zw+DB138P#P9$}PL4m}?rI4lAw2*KV;4WFvs2Q$o!+In79MUyV6xbplB2y+3Wo}b;t z&m0w#C-@h|Y;!&O(uuJ2gSk5EtL5tIfK~Z1okRO+r&di2D{+$8NOJzth(CFwvXq}_ zQH*ccWl8rd?NO^iQSd|m-krYz$lM{%7D18_%D7L?ypB)dnHDAAaOfdP-9g;9F&SY~ zg0VOpq>xCc!{CILhXBTskj$vN^=c~VhLtgr1$wIt+R%+oVqHDq{r+b+VxYpVFTs6` zQ?Ff{AtoeqEyd<{An5>8y(510g;!~UYHDr>C5QyW)fn7os!?a9otw;32?I=U1vRFH za-yO!Mswj@eDC2wkzw=m^QYXgMlUO+^p0>$vCPj#!RRxO?W^wtD%`KT$Ah0w=HAVq zhP2(#r8R7@q;pQ{9U`Msu2D8TEOboIJqgZ=lAH&Rke)!0f>8$BV*Y8q*P-n~D*B!J z3@n)0b@;Qdd&1guH|A=8CC>Wd>{N6^li0ALEVI+NOvnO1L&v}cl)hp7CVTILb=pKa z`~~OKpq}$!hGz{t;Fq`f>dED0pq|?K(t3tdiuz5%Afeg7x-gm{5dU06?fJ4?V=gpq z>f|ZN2=9=A&Y?}Wag<#jW`&_O>FaVg9HNV!rJ4y!Y0;`TP|$Igj=$BL?p12P1vwY4 zJ^&if>MN@2yjB~MGoHvA2Wz!39j#?Yy(Ttfr;N$M=5nRHlnPt(=KXIz+9H zZ@XE_oV@EB@=$CUWWXxmdd#QhxvoQVs~@VT(@`$e4c7WFeMx5oQzcHO`}@jhPW?h- zeZ`7H5M$q_Or|z0LZ(NdPL@i)1!Csmr{_I)z=r>#oqL0DLi0(>yaLx`ibKJ=!SMmc zxC$^lWkJ&}gE|$YOrghM@+CB{N{a{dzGV2`#^H~g&p1IMqUtPLjsF?F-oWfrmO z=j$pLuL+~XGfH9d`#P@~okB3y=j*3&66dX^x~j46<;6U9DWx3)Rg;3=yI`%~B>wwr ziV3A~=DD9afm>TDWCvKjcMsvhJABx_+steA9>cxe7BlkJnIeIn;J|!i{qq3*R>Dhe>G?JZu?LE zh)Ub?WLHm@9HW?iZEGPzayy7nf@cDRAugUKX)7Pn{`^VGs>-R}POIFVDW??o+oEGX z0#nTmTh zJ@o#A3@});Whg`tgOLPvGhhXC9yI+cpF3^S6O24X@{IaSZF(Q_+H{+kQKhp}@%)G? zs$Cn6JgAFQn89yV;v0 zJ(9n^LyFg@m_lUQw-@xGdYtqNmcr$FZx{UuRI}duB*N9@zrh&TE$d0sV{oj3GpBXL zmTxYZPT*;ewQj(bL}RfF1MyHo1fuVd^qT1_{Zjw^iP;GO;MxPYj5=5&*eIqN{W@5G z9d0zHSZ}1ye8tKHG^oZU7YuDPeI*xgRefHNsq6K`XMaYpVCuM}4WO^aTuSjAl1QCA z%F95jt$58|l*CFH(?uZ^x4*gONRd(SyPA_0$fAqzGHBr@@PxxL*e9Rlmp5_G*RZG?<@$Nu*<1xq08v>)u+T~lh&)k zekpUxR05fIGt)qC(RZ7*#*_X$s$a_G=ovpICLh%KbI|t$EA#yHe1@6(mw+q$>|PEh zDho?#oPPka4~Dq~$20zPkv4%CJsjQgp0xyokn?HG6fp0o==dmf+z?hHTht+hL{kPI z4rE>lzoIVHe|)AFQ`)K>GZL^3mLHbeGB{TC*zOpR?WqFl#-|xtdIzOQR-A5+vjyQ=>+90sZ?=33cUX3 zhmeqHzeC%G)xfKdT-3pyk-HpD3zNn*)G-`KZo=Z(+7Q zpN|Q2kgy0 z2ouoRW{%=AvX=-TxMx&(d!~R1^zvyC2k+YZjwkQRrZ0PnUVPLnz^O5VqE`(E<|iD> zc_y2|z~>#n#}?N_tjjy&7B(ciO_1v)V}Zl*nyBvTv!p^KJno}bY($?yJ*Q%;{mXik$bebk-eKT*rTi+ZKEj~^PU6{$fj(J0; z(=B7~-lMv`0QfEc^rlXd9<3glaj(ICpm%7LRYrKp<8yn=blt})A{JpGVO+&8MJAvG z)`u=Q^EOUidVlgq4ROgVt_0&2*wD-&%$x5yfI_q~r16>R`8UNo*x=tq_Qf(9flHOg z?!*o59_hQGZiYp7k$Hu)s?V6&C98v(Iw@-SRc_c6s~?KyA71+M?S-rP@%1W~ zYWXOreU${zxdNi64ytewA}adK_a59)g*{BhMsJxG?uhya98fe@z5 zUU{(oXz2<4f#1&L@iA_kHkc336yFQiX$b5+#q7Jl_HqYYJOZ}s2|dA>b`%+z8ArA7 zh52^c>Eun9-CtK{a*du&oJ@Y}LzqJLjCszr6;Sdxoyu|PEk`TJV80Jj)$2xLT7%_5 zcP|U~)~cq;>6_EyhP5iO^oRWqJ?NMcw@>QjMjiDOiG7Lj5h)(?mj#NL;8cO;8~50K z8{_w^QLTMbl{Hs-0n6p~wXE0=uk(B1FxxVnoh$voK(jgNn-HsWLND=MeKBIaWtfWb z6L)DEenbCC7e|7|?imDjqKGSXX5-~e(N{vJ{fmu)m|we#Hj@f`ToYrLhR`nO`E)5; zsm>Sij_G5w@16TNb>#UR0_4b{s%uByjk&Cs6$6eZeU9n0>JNH1-~IIpW@fbM;z@ca z#mYh0ja#|%u*ggZf0Z`ia+FKzxn0m06;QgPh-B4U9%wl>Ltc?MKKc}m1y=X^ugpL* z!fDKo%mTgl97m)U=~obF#)XNyKs*ie0teqhji5b@6U(;e3)00gdGgK~PUM7Tfeiq| z_1le&%lq8}NI~o%HU!l=g=?%;WBTMJB2O)v zzwW@2-qh_V?-U&m1Y90a=+1cIIub8@Z>lkY-Ukp#gzs1WDksgXnn{KJ-y)t)TN0-| z);R)}4>0*s<|pEiT>t{Wbfj{%Bry_(TCQ~@)1cL@o^dC2b6*{1Gh#!wYl($Iffq52 zCSIG7hbnaJK)riR6!I)eziz@$Z!-T^6j_M$O!c)-DtcJE*sqA!413doTI;b^Iuefu zv{(JUI*GX&2jIPcYn+60zoVY=ZRN3ap)p_w+*yL+wl2w~VCoe^6!vL$d!3K6#kYoo+(fjIN zc<rW1vp5I3s4{`+8kb4n*BTk;ad{1}?yD&v@aKjIVaD&0w@%rc+j1|j@G?2U{! z4w-qbr_|Wz4ujh^vlI_o^dA5FHOaCiy^NpkbfMA$e8+FvslH{+c|}>X`Y<(xm33 zU4nGMgNK7k)RWj30^<}QE(`2Eh?hOiD5O}?8mY3Pyes1}-Qq*<&?)Czk?@7U%n0Bz z*Xb$~XUX7ly`K1S61V5!By>4ch@XcS70#{^u>X%4W zIvebSq_f9uy>9~1tEaWYU{Fu=k9lE8(-O&^)f)}DevRC817LBwTL^Z#7CHZd=`Fhl zh`MRv=ysq($Z99wUjHGpv&24$N`BR!%Re^e$ruDx_&o zwN;K!y1mDaU?+cCD>2_|0opALquz)R9=4Ge$cCEjvZFW8zL)Ad8W0xhXnjx2=B(ZK ze`Pm5zpTExxTvkZvwr#Tlg7)IoyV@l&lFK7zZ2z3o4&#ED+1#;l*+evKW++bJ11_IJZvZT|j6M zS`hx_SIgybb)(2h2Cea9kz=;Tlg?XofP5MzK5?vo9ayKL-grQP${3&lVx4@o(Js|P zE`METj}+whtXg|tE3Hkd^LE0}0YeWr@&t$iJ^+4D7KMpoSDEcJ#=Zx-44OBoZ_3CW zd*Rlo($|@B(5@L=wPP{}W)^QcmHS8lkw~o9aUrDa8krwGAEnl(7QWt%dl%m&ctm|7 zms{=_WY2^WU0UT9Ma;8Z#h2wIJAZ``)BzP>pw{Is1bv;L%8; z2(->7Rk45C=-u<@dVvfc5-}%^pjM7TI+8X2mG9Q_*jA0paBqj!d8B&$`rT{@&zkjL zC^x@o=!h!T9w}=YMVfS+&{(enz(#21>mnwAg1K)CHGHZI)UP7b8V*V+?2m}+`AGef z`s-umyiKMT?|xBdfnc=HNxTf8udzn&Dx#$|)uKh&Bd?aHNG0Go2N3g7^j(s=OCy^A zyU3Xf{)k+7U79OA^SA5#qo!VR5me4)OaFo)_b3f>EU(?XoQM5w2m|ZiQHF`UH8Ls0 zc!>brOTRwOS%mHRs*uVvnz7!NvjvYzt(L0_aSTY&WA%x|OUY9s8aQ!S ziL;z*T}Y^dm;=_y=#B#cu@O=q0PGj?5ECgA2gnH&aiiWorZ@J}$TfDLWRBCkiA4I? z47%O678-dQ(wzz6$snf5FLQR5M|}0o)GX{`R~p~Rv}pC!;>QXDJd3}(y%Xkfw?02D zOLJk`Ldy9hj5eMhnpP)P6UMGcbVfH+)c#hWV_eVn_R<-7Iz8YWoR2UM6JYDXy=Hj> ze3IAchHWFZko|!8q%JoHRS9i|mD|EUY>y*$ zdMm}UFv;6(b7$&1 zCcy8Y@c?&uU~Kji9xI8)|MKLUt&L0Br!#LSFYA&@3IZiZiCuLm@uu_MZ)H_JZ=$C+ zn)@mR&`6Se+b=_%hfc4k)rl#Sl$-H#9@!&$-bzmVQ9{l?l8RQg`4JfbV5?qXI8Z}} ziXq=FE~13zR};>EP}A($Mk~*jQ|Nm)E~V$GTvQgDD8fAnpbW6ST|&Tdj7qV>)JX}N zl|y`aFniasGH8S@;H0%I2KjFg8r&`J4p(nnu?xeCA-Uen?x!YSuSWlL@WttNw0H*=v~F|FiXet4gl zpF?`oLlCnoJeud%7EJl()|ue#5il|++mBAv{z976<`d{Kx&wQ)GWZX1+2Y_%vsp7U zKr>7(ywErKCr17ZNOs(+VhdoyyKIo9Bgb;3XTZ9ne*!}I7HQt|7SDni zh_{+>>PvuK9Yedt& zGHc7GZNY^jf#X9eSyS6_17zWcOWIyUEzbZAS}oq1Vcd7(Ogr=!p1=LSo%32@^a~zZ zIN0z+4`_4-)*HXpcTO)8L)Auso=~1%#~RlevJepMiSXSr{kH^ZrlUUe&4F0&d)E@K zqOM(BBIn1aha~+rqIbreFiPd{UFSP3a`e)Uva$BIrvs)7F;9gBaL!W#;T35DJni0C zuE0z>|33o=?}oL{7jK9DcBYSCarw`COSni<=)$?&gE-r6bE2)vPswv4AzdzjcBSwL zx+F`r;ULl34}4W~!bfzo^i608a|_+mF+G>oFG#F4K2wAc~E68F#S8UaOG@}X@w=N@mvc34*y&YoV#I1 zUqF1mn1>QbtJ-XouvpFR(b%8+P(64ks5?3(@yn^#An)4_%az-timu2J@`aYKxRP*@c$8l;k%`H=u+ z&Wxegs0HRs-74^s7gd4BE5trZlP&Osme{f4yI-r0GGe>r`)K0d{i}h;Ox&|ih?Htl=zZpLO5&SICND6s+mVQb(J5dZn;1)9+Y zH(vew!jk1K{8e|ro#sC8Ux{*C(X{gJ`{@7y{#O(t>u2<1+sOtE$6B`&hWgFC`( zwVXcogW75B;-0Ki+`XB%Bn8b+XVV9Q323LTSN=AES(N}Qh~1>Hv+r9M$PZo0)$fgG zBUQ1oZyl2SHp2wgyA=K$=6RfJIWK(N9YHyi>IJ4l0RIw{r3?Uu1XD8REl&8-zynWd zla9Mp%dWPI&r+MD1BbwbUO|yr^Gp?2raJo44n1_TE&Jkaa>31ejQKKT6!JiArl0h# z$gHL~vz*I;r1RQvJ@mq@gguDHYsM6JwiPp`0E2AH(IbeO`fdLYsvxfj-VZMT9BJ*JG@ z@~5Nhtspj#F7a@%jav<=C@#D4>|5MQ;03ZTEkF;susDT4R2^Ql4(XXv_9S+yT<(E{ zc_Lal-UjHneYjW~2&__Nxda=uFkT43lad&*N@+21C*dsE>C2B4shcq|F3-8;2Lo{d zX9pOJ(*C%n6NJzj1ABp*y|^U00@_s>U6#o5!r88MZ{Ld3B~!~U?IoSb*?P!}Swn6? zRTPNX1`3QMgh>sxc{LOV9&89To^H9VUkEOwBiFkra{$po`$_J3#B_9K6!7qd8O5Vq zvL|EqE|c-}8j7IUT{11)#xOmF(O@>gEpvt)p4&O~>S=f~k8$HcMb$1?SM6{7{UtA0 z_4Z7Q;v(LxSMUCR?ka3k zqhjV`j=t1a43Fz*5bvA_Z@52s0<%fmfajk`71DtM_uVBBJ9;XfsE#9LBC;f*wrD~a z;~ZDeewx8 z_TNX^Gkrl`7u=hD;10Vr?jd+)=@t-r7`?Ud4JRypy z3Lq?P3}W87Hf01ej5Sj~Is3w6pJE?Kl^0+d3ENAu%!EF8)h#>EmKU{DD;XB>DkuO> zPPCf(nrPiYpB&ztS0wko^jnPNDM}Otd-Q6lvNq6$oVUYsbN{O5LYm1gt$+!_elwWo z_%2Xpv1AJL{&PM?!EZzH5_eV`8sjBx4jA4`9#6K$1B{vt@u0Yp_a+nWLC=tOk-h1| zqg7Cg32LndjP!;0%q)}Bt_>Hh0tE{++>G2qtn(*96rx`#e2ohN0F=llbsH|98a5}) z`Jtl|&C~>SxS;w3AyI6j%|_|d>zgruuG4SZIAvbvmg%=OOCv|ha|cXeRjw{@&G(&z z+RvZ2(nwy)>EJ!3vD#2K(C646$}MppRgvz>gfYU!vf+^5IYb|#yo$F`6@253}Z+QXZybE13k8TlzNnkU1`XWrh;B@<$W1D_lUn3M0mzDjiLQZ%(oKI{CCgYNY@!OiK0xzL)1MU1Oo z6j=KqYiZS@G-V=VYzgMlf}ptb7_8qiWYTdHea(#k2EgH+K=1!fM@%s#m2M7L`Otwa zzuQ4?tx=v)zQ|R&KzxJaZ9sP^!_?_IPei^VS-UFJ;l<@-3-R4c$UDA`_cy~uV;6D` z?j7vlf8<&lfUr-0v$5!e+oW#Y$pPr5;j6z5d`E3W7t^AryQQ!jRn_vjmp$-`yJFX--DSz9?*)M;hbJ;G3KdZEWJXj-Z z!mw?q8(JN|jX2EBe!8bk3Yv|P@u3saQ#@q)eZLoyw%I!hS8nNqCl5IFxB6?$PO(;} zr?qrS*SL%bsh|G-V(;2&H5TE$`PSCisza+5;PhDp4$j40*`-Vf!JpLRec*pii4?s3 z>YHaq9?zR*Ci+E^t{UTT@A7d#|UjpSO*uGF5wy=5ElcHbqGuMGx(h zsjD$bc0it%&-_PX(=J81xz00{DLfikYGjD5uuJO_H^2#fnuCRBu(3ds9~J-+ps-85 z*&sClIfQ-I{~GSI=Y;`ZVS1=6Jrz(aKx!ekkr?z55@lscrGCiEc=FIDiS`(NHu0BAb{<77bakg_}a;uAN$Uf#Arg>|~V?|LXH zzKB}!SCOZXF7~}37%P4D6+#Mh6jStIh^>S*g1+cd}umQw4P! z#lyRMpqLVAfg3siH7>y5$A_DxH@cGN?9=w{JcIvtGk!03Z1$+*R*J8Gn!m4*D}Z@P zh^(mM;12LXwLjfB7Z6_<)x=sF55ex&x;#aJ;_c^iv2RY%qAG@M#NdIbfqp}dhn54^ z{J7<#eLB(+lFAn&PK7NAu)0m(d=31(QJSm~URCWthK|^Xvsof(fI^bO2nd;@D%pF; zNEY%65)M*`DJIz1C{?Y0LAA_YWXTy5dipVnrbOtC#OJ2bNi)@ToY2{_qQ#!S~ zKuAaem}AumotSg=Q+f7a}^3{9&yn^MWd&_um7G+*S z?6qC{ZP=SL;N9w7gU6=->TQ;v01ddztjtdkXvbHdsc8@oG~>J;-rJg zLVFu>?sbG6jVPie5Y@`CwPbF;9H0aTolKPLR~x13ldHeV-|CpHa!jcc|NBvlp&Ia% zd-nm5x~W-09(cbZjs;Xlo&z?GFRd^z0nz830fc!RJM`uH3w_k$GPh-M3hI0S55EkoL|26kzLB5qF&~6d#h4M zYTW5&zMuKrP2F&*y;RCoHLyDfi*6(727f)es|9|6)6lOwyITc)Aw&-TcjU0f1T8vZ8+K;AeZb=i>z8AvYSs84- zF7tOg3XvVWi{!!^Ri+$TFD^$kFD257-WlXG)P9YBwuVQYl;l8;*oYcvkeiI{9N3h)ZnTfz^Ja z>mfSNDta(QO@sWd%g^x>{hH9SUSdS=P>4`Z`Az+_Gpm0G`ySGdPJscp<=*w0;6T5| zV~_=^=`<|&HB6|5>vk7D^^^(h+&R5GLoLtBQ>RMpwtC6iyzN!7QKOc`+$=EGo(nCA zn-D6~y-rkSvZL9ku)9QFy6-INV6$rpl+Ai}%dXgg(-!!|Aq8DpZsRmH$MVLyq_GI~sdj%pRbsWzXp|?#4g?daMhr?lfsk&+KfD8cz0X`_4M zDD>SxQg<0zJ>gA{`k)Cl- z%K2^3odhA1JVh9PzMf@gNBp17L$8R zVax9UP4p-&)nFVZF``sdY^z zO7GYP$5N@^&`JRQv`yJjbM>5LS5&an)rNW`atISXCcg|_x(~i|e>F&#;JaN zIIwo3;AfmRiWtv~NGX(P`eo08T=`w>4OXVtNK>tid4@Lq9T)AGA2HXeh)&Nnn7emO z%JxWauU1E=HhS#7I62&~o$rx$AaPyS8}-$`vSK{(4p{v6{ptTYS13~-#BV`nxIR84 z`U_XmcT}&_LZN<4=1Ue#^&L4B?iH%KP%141@jiInWy+QdkXUNcvKGiBQ=CYV#dn9l=Goge4T*GTK58R&PsU`^{^50_9v0MK>&arX-f ztNv1f?R~t|p6{z}*pa^;t@*F0c~)F-!pV7qFhJ8l(*_GX`}zyGqR*NB1Z%Ci~w zUZu2K_h1)G5G6}5`wt9L#I8etQwt+Z442or@2@|tXb;b-UMsA!H+GC0_oHIAG&4Ur z7t0CDzqlj3F(b4Dr<)=IM8&Yfo;M>`ul+;?gtk_6g;J$>Gnu^m#>S=gyDHo z27_a`L2P>l0}GX%#D?G6kwEDEBl})<0KRL0DB3Mt)EON}NX7;0|Y)bdi z#H-OkcjI0D7%V>MlChAvG3R)hvs~YiO6*WeDG|TRy~qrxZd&2@?bdcVIXEEV8FI_O95bQ%^91a*XeDp?AY-c>41uQIJV~1 z+=Zi1KUu~6kEQc)r27Bk{W*t&<0Rv75JJ|mx3AD~h{!s}%*gK8vm)Veh$1pFLOAx` zGl`HT!8qlPp$|De>-e-74R?B~GG8|b-Q9HX2*hBIz1lGJeE zZRxbUkT)53cakXu`mlcv`M%Ou!w}E(dtxgRd)!{-5W8jNQja3Bx%S6~hX z_wqf5FC24k6dvlLbo+Paj~szP6|X4Re*l3WGUV7Dky!WaE>(_?9_Sx1&bJ*FCnmFhtC_Ygt;|FS@4$+fYWEO z6UWN#wcW9genM247iMRBbT)xYL?(p)UP(&)Wvfz{(N#6@&hVo=az`=MR|C&E(<6|G z#Q4LG==V~5TS=d5RF$ZYI!js?Yk{D8(~)|I|8LGo5nSZcYnM+ zpb8pX9FGE_B0jAQM;D9=Lxag2dtFHXq4yCiD>@Wv=^A~c9>yc4V9Wy>+Cj^vXc>U4 z@S-F|+~*?MoKm#Va;Bw>2`A_5>h`p_pe$ai>iN-D5PcB&m}HVz)0yx=Xm)-E=_ZS4 z#ur-9(8o~=wQPV*&by?xu`rvilx;ObOx9dUWFge_BygEamg~~t8E&QzK!b%PAQdg9 zr}T9YOlAC~Pfr*9VX43dtz#CWO@1CUejl+%|iMQzOG&CA6 z`IiBmd9zR6NPVm`@V)b`OZ&MF@)7iLgRlI>CYnNB`~DnH%eHWOF4+BXl_4=&kOD~I z>gs=ddG-0^62d0y88kW=#*_ySjvuGwu;d0k?O{5sJhiKB$kTFxg=`syq~GSvEb&Az zqMCy@uI`vIHG}A9nG-yQ?48tfBU@lPP{Zv0)=CJp)UTxf(oXf0V_@gefT(!+CQ9X+<-5O?_m`8;Ql={0a4(>+ppb)utHIOsP~&n z2bH54u=_Z=EgGHJ&$Yfi=BIK;QKgNSW0$fbC#Z#;?Haf@BA6jxhBcG%EE!Rfz%jR) ziNBYRf5lSChy!5SkYJGm(}Uui>VT^zvIG91L)K0S7xgEbzL^|D&jS}y(N3bT)bU98 zMW@LRQ(C&{QkXuWRssjEJ8~RRaWqf-Hk_@{JW9{KhVt%s~zAGmhB%5M8^=_yp& z89HwXn(1j}|G@5dDWLD(XM+VXXYe(Nh4YW^K(|OgZWK-VTyoNo1j%B<2g;q0x>kYt z)x#D`i$gilVjnA^VaQE*YLErQY$jHnq?{lwV*15@_*EOTn8>UQCbGqlYlqi!!OdV*3|-0)3D8lUQQhh|eMF+*F+eyYO@8 zoaup21g}M^yi}0+Hcq>D|Efthv$GVap$h6Z+bN>9``Y-GU2@9_5f$;VDh027wpwYZ zsIX-v+JI%J?R7~n|0BEAlj8mTpHQ26o;Gj>Bk~P3cAkN&X$0hPpd=#np<&*&1UZL$ zNP0Jxg5g_^vE@`k5S_v55JaxZ5H)U#Rxinxr9iEZap=sjwqrjbr4lU6FYd&}E0!Uq z+JH-4+1@mDEiQuttuygi*!kTQ<(dIx7tq!ESEW% zx}xtD)|A?BMu|6?yzXG=;;(5X8)D=Z6dG~;9Cz^ZNHuedatc#p%l5aPGaQ4(jKxuT zquIIeByexp|0cp$p6Ah>5|&5bCHFxKSs{-rZ_IGv&yGHJad&?Aad<)&E@XKCQTCU} z){k}MHw>u)LLN?ClM}bKj%+l{$G&$gEWP>e(BHeyww_4*$V`y|YaR5w*PsuVoG;|L zN>M4>Ze9KulCRbs6Wpy&ro`V&wfecSvDOuICV$;LQ4(Z@9vq!f`n7(BrBvK-&e@Z# zmF-swtn&9b+Rr@m`X#T^!c~}fU&9_x3ba4tN(w?lG096>+0Smz_V3rso}6}w@X_(6 z2ZpoWS(a`GeNtX7cPKyCH1qxT!M=-Cx1u_jDz|Q`v*j3e2b9Fucci*>%i#;X0g)LL zjdjb~%I(qN&ZA;Y3-2=-fM8tG%ityuB*=U#5+LfUF0eU0t}b-z>iYdjIV?|Ic--zw zEVyK^0F|09MkYZ)D`dJ07dlZ|2WYZD0oI&B9b|elMJ6f-U*%Bj+bNH?#h5^tS7Ew? z$_twUS_YNWER8oB8NiGP3l$$)#G-bCZRM|w2i)f|8(b^OK$`TL;ND6ixSo3zV$(QN zW`&Rx$jhEb5^!q#D!{UZI_0DR;3zn^?` z|L-Lk(J8aMlz{6uGVtb2`8T;%6+?vnAgbSb>u_ZK@AYisPjiPY$&i>+U^H4n^ z%Ig6a?~a*O8QpvJB-PdQE^=#wkq#J3L^$AS1`VcM1eRi}UgONw^SFXEpeFiPuP&$G z2;-tBW?7+@%e^K`_rT_a$u_ix2gI!VGlc(q3YimGs2c-(Hc)6G39t%~ZUZ_01NVVM zXi}7jlY}!E#ZM12`uJ9s`zqJ~b_T z5}0RCE0HwU&jQ(OM-254aR4Jpu=8Esc%fcX1v}B)WTH-VGBGt5kP>V zX+mY@blOn{#eJ+-B0_?Q?A^2^5Wv4&Z*d;m;~&VB{pimu+lYpqgKoJ1@Js97`fGd@ zF}m1rcK4g`MoyYX9y$2e5J74&R9Y{o0WHJ?(@Y=HGQ>6bC=Dt}uqaT&h2n>m233C> zWH@s7^;9qS9x+&4R)GgfECgDFulx$|ns}D8GG}CU`Wg#0s=UlyAG2l`Rn&QhA}2-Q ztXu$>%y+Vb)n`X_4||YP=^gPak$3!<^Kdr}khyJ2TWJx4J($I z!Jl-uT+$NI)O=P-G%%bS#JrioHc6?=%_XPKXLSOoNHf0ZqM%u?IZsxNU8CUNF9^n4f+LlyNfp&^7~- z&N?0y0DLccRdG<|`HxiBgl8>t2hz@JOnnz@<_h;{HJz%lB%JxhE6L;zYe+#<;nqb- zDj3yZNKx5;cqI?$lFEQpA&eGoCaRZ`Wv>$kyz;hum{Vv*chAXK= zSps4?-(VJx*kD|x*Bf}03*cpPOwN zpaz?!EYKJa4Hj?9<+8l81hMU{uoG(3LaV?iBjov&8jA7(Pu7)S)FO*Aa3SP$R(+<+ z^d!MgNYMN`FnyNMT2RZZ4KsLz&sUO+xdvo-8Q0&-x;K7p4N49M&{;y{b7ujmmeYNMLR1Cq*AH#$PA*OaKXlOGoNn z6un}%^Rc4B#a47}aB^+ypMdGxJHQX^qN)jGG^%O66kSV*swSLAf) z*g7j_RUVWVL<9L>Ema`j9g;e(Ku9lLJvG1aqdkhEI(>L&(zPx(fIw5K{`zkyWxw&A zE6Ey^vh$ERNf6Z+EC>9>CN;JE0ULEv0X^6c0`y)#5D%kr2Nl5l@bsvwOXVOBe73Up z*m16~j4`smgb`-6Mns&0(?^ws68zysHI|(;f{oZM#!#?KrIf*AVwB$#wrrqk_3!d+ z!Ys9V5*)Mjm#5|9Etqj}*JUf=svYVem{|^IPw4cz7`*oXy2OlF5-E50OJeGsnmm|7WjyT`QEHR4^UrFj6df3k9`NeOdh zXMB~&xUgPUy6JQk#pkKXbK=O1Zp1xEMzfRqec~P?fA`{eXQXhS0)z!Ezt^^%-93;O zhTmUyPq~H7C)+WT?Wh|M0})!qJnRcY*7L z9ox;VXComw0ZwEU=g{tfvB))i`p2;kEn=@~&*YTQE3u+X&na_zmq3L_cWllPdE{>* z7?}PIykogmV8vu-WHB*uM@v1AcBmbT!TEkOT>+-=Nn5}-5k!jI6K7rTBCEy-5rN_#OD*~-x%>e@jqU`dm_nirB!79jwZHBqg0-r=zZlGcu5~NrKxnVw->C zljC2I3{tkQTlp&g=t!}<^q<@KwgOW}WW3qjk!-)Q=1ankw-VgBpEV|Fsc6{9YbJ4r zOLbv0P6&agsc1Rq`%|aI+s~JqF^WFiUw+{D&PN*lW~uNh?Dk1?K1?_Ab3DmAG6TJ& zBQxK+veoI#30HPxJN!55dZ}t>_(6D&$!WS|hIP+>jfNF1Ykgm8ZqTcbS-9_(7}u>?;Vv-F=_uB)U3Y5>fQD70=2Q&KaxG7d@3~=_dQlD;1VZlK3bT6P=Zyx zYD0rXSJ%XA-7`inG>xkWP*0UuYPHw(w&MMo9f`4(p!}9Vozc@SB z*JaM&BD6ar%+{rh3G;JW4NzNQtx_S_>Zc;-?`F)#Q?>sz5tBgyLh3c`p_+(m@V=f- zU?1)?lJqO&-I&I+tJsZ>T60C<&Z>84Es!l<&PbC z#(vu)RPD2=|GX(i;4tRh_rWdHTU{bMr-&%9%pnIY^Ae8_<7b z_wH&yb^XV^&2U!doy>=%i|b=+48KpTSWo=ynbT$8eUH!2SyLfV?R=>}hNpulU zI;eQUN{HfU(-H04NfljO+jD#cQTXQ-9e zJ3j+F+OHD!FJ#UH1t0tNu)u@!VH^C2o-f9c6U=#_j0zE&Brvg#LB;BK4F|HF!GXxn zS)D-joch|}Rc)Wwc#TgD-cs@Al1WyUjZ1cLSH%c-a`8FT{I0ZjZxiE3{`B3QMq;VK z*UQ+(ocmMt@RvlMja0(o?M3E1`UH!1k!`C*r&t>~1oV<9(cPsiN_4?n{!hl^c|Nf( zwTyIfuYZDB0H(TWqcHy4{3}V_0`-6&71G|1kJg9={ma3pUIXbvur71^z4kf+mPn$D zVaZjSzH7{$9reF9_EwlqS2uYA`?PHSPFw31^TaC9vV0==;~BncK3(VfwV@x%snznr zc~LpEx9AM-Wdd{r@nvMm)aV1Iq$}}8`hF@9vyOjF{bh@hV)m|;QNqpUV15SQ4<)r0N-i|f~2y1j+Q|apeMY9sk3PQbo_g~wbvgSD>pGy*YK^i{G z@?22rHtobCm^CIfDQXz?`7&n2AeFePga+$jAV1$S@Y(pKy_HQ(%S0tgZkwK@tB)%< zl1pr^q=K$F!a(Gd!!MCjk1#O2SS?#H1fGp?XUCA9Qtx})qPm-Zh@m!FGpniKipKxBPibEG9EE3W4?Ct0^ zUVDm*!RF_I=8|y8f&`qyx^}8%L*j^wK3FZ^p(o{7SPRBq(Qm(>7azRA>Gydnazd%q zl)Toj*c^!%*UCBNd{&(yi=JLnCe?cLygGy3-SqzcNd1`W&L#@Gika8%N{sf$>grPrQqO}~>1ncP# z8%Uhu{j zJ>uMM=3b}{>7?rGu_gZK1cI{@ z%J;xZP?^{OBWv4>MD491W%F8xeD-%l(+|vX<0n=pQiu5ntMOaClTL4ty`IVX@25)2 z8q*lze6Ty__DETD0Q)DYR4YL$!%}knKozycd$`|_bYyveVQy0C(6t9^IQ|B*8+oT4+pXq7@M5@czP5t%@C5&}}lmS0K zoP-f%<&ifzNmz{(&UN=n6Ug-^v<7_-eHtniiVU@=OxPOB?{lTWown^>pK-mLY1oO4 z=icivTVvusdMlO)Q5bdEVAqY)ClsbE{d(} zH&(rM%ehuY(+4Yt;dRY1KO|E7_I0p>{{+OUQUsL3*9xQ zO={}(bI=lH64GTe+YK>}WiF_5$vUbIEo00>;oi0_K4K}d&hf6eWQtFuWbD&aKNapr zrUvTHJGw_sgt=+)(dL!Qs)!deCb86j_`#nxO}mZfxia1Y_MhyJ$}p_Yf;ev-E6gx^ z5U4XNyx0n+s*4ht|72jB86DX1k5y3%Z2qkiZ0clo$|5dP{=jRbFkAaR6-K%yx|Al; z?x4MHk>8~?U6txfoDchkn@f>p=vW}3xeVLJCpPnXr)$>w{G0l|P|f*+BzdcoGy+vnmY(s=`yH2%dU)u*>J>p`bwQM3=-RJ#!vrnR!;r(&hXvG=l zxa;eU=PR5iciS1aBuQ8eMCT+_k8*bR_Y70>aXBTXc9ybx_t*HACZb}^phM0eCql&< zL{C>Bg<9Soo{)0*=*6<5)k3F^?<&jli1^ZCD2*qt>c1bA0pAL7ac^n7;hWp=Ec{6s zd7@5`j`>-Ek1bnmfOA!P*Q?r4i5f((%@Z=qnw|9?x=kvJ=QDr@>MX<1^QP@!=@mg+vfu zsa#Gk9y?s-`~pBwIRDGP2^09omZ9*5gEpJaEQAy$?Xexst*<(e?fsk*nz;Vkwf(BI z>74=Pc}`Lg*rNv#_bB3%ig)CsRYg1k?m<4#-@H4iq%3RUnpAd&WWMM~CwuF7y-L&7 zKdRtw{a2_+CCNJ-Dl#AqSn7r~RaSVsUyuSNmzr!_k)K1jEI12`d3CHF2<|3^Qzqnp zJpS{__q|~s^QtD|@7Ck1PQzEgXj8<~CY_O>{2`Ss#8Zhv_!kSS%2W}YvC_0kcnzws zLtSaHP3^4ELx1rl=BKK$4sgXjp!^-?C zO%%~bPs<~8V_1?T*p>amV`=k-t&<=3gf|6TS%jdfGD{!(^+uIVyYsdrC?tZiAB*vB zYi^MzPV032AO-QFZ>)(>juC^jr08GW2nL+br-fEv;HT%XN2GJ4Z>z4I+IjemA)YFm z!F~{vlB9KE{R1gsNECA@xZqnP?B$5a;fTrGsyUD%30-JuW<-M_*vKW_!^VF8Mp|uy zsf3qkZH6~LDcW0d)`~+%la*nI5&A?b9X+n5R(6w2laK?Rtv|v+IEs5CGHJIxoR*W28oQtLY`xWo_s7A4%h{&@+t3O(YaOJ4V(Q4X`vi3ug0J)L1kXZ-qg9ywdr=4o=a9J zqnVzKxzA`k=gMIJQ@4q;OYVw}Bk{U9FfX9I1Z8Y@RNA$4z zgI;c{*)lC&RxcgW-lXGewPww9qt_{^kxF>u%;!;f+OpuxN#W>AfTOPIhxn5r@iokmS6(C+5eu zlFaA=FIx~KPs}v6p1y#X6!R#r?#P_dGCV;nfngtr^EymgRd&R4z~Ks0Zxro57`f)i zF%lDwbTKTUO^8S)oO8}5qUC#z^@@zt^l%DBI~&bk(Yki1gkB66^Rq_F>9^NBS0|b~ z(_5A{gUuv3Q4dee@38WTqAiBgoo%&19*PCIcgXkSex(U@eBOi z;ydyBe(r-B&C$?lsCAR%@7?S3I;0s*$d~x-M@4%Vk|+<1$=SA=qTuI0Evn~g?|}}o zd*#h*5Y3hp{55CjumKVBum-DIV7Oe$n`C+j)ocOZ$%&rtewINay7@f;8`Pt8PKRSK z=oybHWXSvDMgkQFRQY(u6pTou`KLudLP7b3!qg)i5w|l~>R7$42lCW+KFdsD1gUv6 zVDDGmzcrLrj0Rk5{bl%=uQ%0Ch?Pf!ek4BC-+BmYEJ~$Krqh{tMqRUBde<*S$?@hm z69z<@6Q(otbKe0+%1PHW&L^&3Pgu2Lf4BoPeQ;?5fDkSPwy54A_wRHfc7CSI{_?Vd z=~*t{CVrXDXO_q|b!CR*k^?l;{GF0tD-C+BiQD&;-jKVg;HbCb@f+lK{{@-0thoxV zcdsN$#Q92* zxSniGY3&6W^@fVdsvXk|houi>NQbXhLNW3of-*2uNP2-`TuiAtO9?f1x6XR2+Lo1! z7FQM?kMw*VHgQBywC4o`yIG*3WL-TpQ`SK7!oIBZOXbr5n^`pMMjTD|GKkY4XJ zoQBr~nRF2`4~_G-FxgL-M;sg2B%Bx$)(KzW32TwgB&z6&PVU z5b*1Hm`jPU8d$gU>}LqpCBNkn=?7^Gg1En7C;2M^0V4MKBj0pQq(|#*-d$>BVB63n zsl**KysW_9yo?5u`|v-wvhRMx#%MOvm2&gKeI-_=1JXGv*^k#zF3FQ&XP3E%katV`j$mb}5 zfcSdpZ4DR}b4vp$`#B0R=#$de35Kmm0=K>TNp7m^om(xOuDl!ncN+6URCTnTar^rE z{t_MbyJweUXS{YerFm>GsuEIa{^-mOpHooN>Jc%dsT^lRhN4ljnnvC;mHt<9=_^EdKt0MoC=dj(J+nm_=6TCuW0ZLk-(?mQ6B|`Gm-mjDD z@LYlYX})w0S>sVCxWTk*J4?2gI=m>U?&&Yf8*8CQr|&?8ZRWmDif09I>no}O!^+;{ zy=#qTB~F*J$<1Dpk=*_SHr72J7xQ3xJ*!_b5MMsr06tTdy z9+&k}m(AC_l0!R|1J;QRiBvuz3_qxJ5G>3`Cj%jZ%0?vukk3C{RoQR)032Yn-dUBw zZuh@2Pc#L6(h3MYJC?mtK`a%`tLUb$i}lq=qt&6q0paQcecntVvW}Z(050kfQcQ!| zRBUTu>f@NXXXG=3$Wy6_fXT>hP%{A_E)j;UsS5Iq)i_c4`&Z~Yr*8ZD_*WZrhEfy}OXFObYiidm5)(VQ3<8p-Uem?W03 z_n0JI@j$))?juTIc>ic~GRSO96#r{Qel{0czj1nU=}KOpj5wY3E*ER@Xa)o6EQ6k| z!QfIrH;{G)_vB`ZK)KoYgmRA()~n1kO!#PZ3wXUj$R({%u*Lii)oox8K^;p{@R?m@ zgN5`x}VbOw$@yXgFrda1=W zKxT<)*K3p<*60jPHB+`UQ&uGf0PZq!?9mJ1D83cy^v3z-#`xyM&djL>DbUCp0anK} z|CYHmiOP>^U}K3{5jD|Jmz!l{%3f4Ip2yZYJ68^KGzDaKLd>Yly);Z+lj`-+L@S`rrEzW#3^Z^_B1c za#MVZ!oEq?N`X|aa>(ZEE;rh$4)shyCu6avbpJt>;JHmcr-c$;BY?y8Vf>92@$Ucs z93E`sdYi8`j;`@37{V-CuzAIs$HOWl^~Kk5wGR41B(5;@O7Y}e!&*xRV4^{jm*^zA zs4rE^1@-_Up1@A2fmZTgyHujH1itD}OsCm<8)P7jXLCLX!GT|r7k7$wJ|_@`mkPrD zTET1PZPS35NJ$r?5{U&P-}9vHx?Zw55LRBEP;cEc4`28pzd|hoc0d$?M1DzWnG09s zq2d-X3FAKNqGj7z@>%$!>e$J9G=`HQPhWaoTD6 z!EAt^KQ`lO5k|8g8tMkj@gClFEs7F}ss)k)iOHph6jt=2KO{G*98xk1SSP?RWwK;= z$Bo*SEvVag02mp{1e+(z zY%HEbcPnO`Zp8g`p8iw~SV7_6pO!VUpGbWbN4!K=IJjCh3eOYj7xQ`p(L>YF^0u;C zuiF%QllaoRUqfCzji-T9u$3GsUUcwa4M%$3tr$wYb5#~rVk~C2X-YlN4jVMSE#Eu+ zpvwPBQIsG_@h^Y|gdCvL#)=k#?a+6s#!{|>ByJ>rdnECIm$2Rbd*H!`g2&tDShevd z*b&QI{+$mOOs+QFW)bG_vL2oIBx*kJ%_gc_AQtagp4=-5z$^jiQoJbe)iCLzeV+&P z(GpbldqWHv^m`a(L58mBZ##x~Zra@Zk{j_wT`kR@lOWRlbH-L>K_w-#fI$%uTI zCeQ2LR|!@q>{^I1QtW~{UqA+EiP%~eBsBXT=KF?fPDb$n^XnYHJ$sE8&X%oSwxrea zxwYSjo|3Vf;$^D5t-CN_R1F=k^BZ_+#qzR*^cKBx05$}CH`6y-$%?x8Wowz6_J3Rd zK4%DYIf{KNYl&>Riv14Kwr`-aEsgi}j8oiy=y)oBtN*_z)YSDdB~sjmT`Z|p0uDn# z(PP@m52_wDWr)nse&u);`0G>9w5Nf@%pWhrSOd7xd`y1KbAPw0Y~U>(OQ!mGf{78Z@_-^4o&?u z@3nOEOw6Ws6M=lAtgGH4XXKW)(bNgO70JTM8Zj6@+4-Wj+Z|#W!9wiG!07d}q3gOP zqS#v&av)c{%!qy28QWfW%1J9)ooqII&GS*EbI*7uni>9uvOljfIRn+SbWK>Sao+oW z)$_8TzjTLoZKAAic<2v&9!M;gP;_(L#P}0~`2K$u!Wh6|u*DPI> zDe6kil?tXLt#-ait1_t3F1v1V^|E`;TlSCL_DoO?Z3bOctDyNO z0pdklyVvK##QNSs*CasURBYka<}|4#6=467Nz}}a_aamL?jMMUQoKKq5gw?Joa>kQ z6jsuRKM&dbv)TJ<89ft-ZiRqJd_BUniOs=~l zp_#4QD$9?O?fi$mPalUdq#cYw)Gc@eTKD+*-Ca^qV-l08ou}y3L(V7E>>9V$?|>NV zqH>rNBVv?8@0I-u>Q%Ywf7JZV3n_90)&-VS6+(*5k#!zJc2zqM!DE?YDlA#UN-&e( ztD(1=OzlZ8mZBuX9m>$*`J(C7Aua{8HUD+HFZ2&gzv}`q;eWxVj#{CtWuaZrzm|-t zpr>942NabORDK9RtUtUt>@*bwZfC$Y70~1`dTSNAB1(wy+`DWJMiA(8i8*L$rzhpT zFF%7LQv)OjQG6To`ZaDrCXmm=n(meV1~DUEsVjlpvJ6-kk_%GL4_LC~JpM{D_#zi5 zPm;UX#%koTIT3R3K7N*glv5E8#pAzJtg)jMHVZ9U8A?N%sXNv$b|51D0ehZUG zq~;#Ucv>@R0aj2x?@u&Z<-sAw5-0@)y_*RcGk7;gn$qqG>_p@89UI8{# z=1%D~e3en^Ea}uDUat8N<=6+G6RN9&cLfGdta{lmNm@d(?ix@rRv_2JzoRuT!_R>N zLEHrlB6Vc@bsK&*tQxoXHcTs2{O?!Ql{&XYihoD-@QnZ~j;xjYBf0itbAb{`4&U0Q zl=Y{<(6irbS=N-jOKD?o0m+l;*dwd?odut^U&xKdh1|I}3F+5|Pk&5=TYNkF#d(MH zu|B@=Pmr1?1;?J@)jEna?kZ#a@*7=7e139rC0pe+wHjc`0_){u0vG1@o-{vM)u1K9 z81sIyB*BOLpxRwD6l3}7W5ecAUW`d z%l}a|N2IJq=Ee8TepZv{QCg@6W~0u?+o+!TnTDhyd?uL zPIdqd!tvPH1)NJdlsQK{F&|SdU3#Yd5LpLo!1_{`tSuV%vum0;k4g61`+@w+TIR^- zP=5*>17QwhOem`k0+wpRbdJ>16EWtUhg_Oxn%Um=sgIF4-^xPrvG{V3_&jGN_S^n- zdL#5ALs5FpjsVBHYNc90x_t)NsSfe5t|w{9`5oRV>F}{-ly{3WRHXj_cdd|wH?DW> zwX5>h&_|1sO{GprrLl*aDJ&IA_Gm`%pg}6hh7g#B_lUW_@SVm;Kh3@8eb?=zwL}6m394>-W2nEwGU8swA5!1jaq76_^ z2~i^5w|VjWw{Z<&NF0F3Sh45E6o);&xM~KhJygt(y)*@Yvwe5Mf5^N1x~w%KVb;OO zrms4EHUYtM3-W9ElXGRD3YpOWH!8M44U&9J$z?KcY0&f9c81&Mp|%eHn9hT9GoyjJ zY0@Nda!KpbUQQWJVM4JjOgHrrkz6%l%wTdawJe3rBWaJPRK+q<#i50$%TZv*#0tZG zJSJ5k!o56Wo+ru?oWY`l_j1X^SR&)J!34F4q{II}Rvo}XhpbW+RJ0s9&fQ5N06qlz zyau}5ZB;Oi!MMYLJ>BIrRl4FPr{z1Ho|kwDIWF_9b#XQG#Ym#v36`$zZonqDJYjuJ zdD^C9=S~l%a-hMe4f#*)wNReU&U)M7Y}2~D&qgC(glr~h^~>+I<__M$UL)m#c!`be z>Qq}~-Z(cr3?N-sh$BxfGm3bGsu-KlLGrE3K%ro$5q;74P6Ibc z1pZ1!jwU*X#mC&v9KWT4uZ89~noPIz*r3r*PV95n;y{8JAU}y<86%vcX4WtScUl`v zTt?{Vy;l~$*0lk5j62{!tV*$#Y0{Y3%a0V5GvA$3#kM8vP+u|=etuu;l7oOk&fY+v zFfc~gngc2kt()tJEC845yOYEkLbj$-Aku@~B9r%NoKV=9YZK0DV|izrD#NRwuIh$lEuHH1k6u0gi<};huv;ZSQmhGFi1Y6&4 zH|4pSbNXM^57IoHeNKyk8Cx#LUSdt>;2W$CWiZVtW=SBTz_D*EJ|JYY-Z3d+*X3{G zRVy}4`&vGt4!2d3wSQQP%PZ#TasVw!U6mD9aevOUQ4g%@}OB z#Fu9vz%$}T2YCv*irhNmXQ9BKd(~#}cuBxb5qUet(jeXUouqX5S%X?)lY3jbvp|H0 zOKwwHO?&^rUmg;=e@32jMrZmzl@CyO--?Y0>f5ZhtaSma&-N5_r62Ts7_-hEq~urdj<0e> zwSV(v!FQdE2VRe7B2XIi<}`Xt4WZP0q0cE_`*k*DeJEt6r;n`yTpQNwb^)APcX znJ==!h;A-vfgF&az%ET<)@~2>EHKYwhfJXs+UTXT)BQ&coQ(Vnt{yf5D3lzPwpAUA z0X=$$x$zwGaWZ~N$7*rYwaS?+@F%FcoKtm3^Gm!c1thrAsxo6mKH|x;d?U~u3-lS= z^6OgvfYIsDd=q5AnGM%Uhnl4<6l5!3Akk*D52$zQeUv=Rork|$d!qL z27|H%4(Rkvdp*WpuJ8~_DJyGNCg+~_f0Zk>XoXn{{Sh7eu=aw!;?~@nG-wO=xl5sS z7py(-W?i*E3;dQin;M-ByE!ci*Pg)IqU1&c2XHQJB}c<|D8J;tb&2m17}sB|2`V!` z2|E6COsWH!%&9rItlLs6uT-vm-IBlAxBnm26p7vY^c_SIQ50308LI-%`}i^`LK8#X zmB*G#Oi}rv26U|yF)*Y!T>HjF$y@ugpG{h^atOhY*bGSpL zenJqb&?sxf#RT%hPz{V^FSGZwLTctuMJ?2A_Cs6C0iRAVipqrHCWE#MDeBrXO#P4{ z)#7gK-xChs@~~r3J_YmlU??{<`=g328&d;%xx951pPbdFDBG-^7))`{m(a5Uuwzi= z|J8Lde{fQYv*Y83Z;fJ%|6~NKdq^(X_O=Hks1fs@>rVr}hK5U1G<;wFSu#p1xU% zNGObLHuuh$EBX;h@xgSK|F!R9y`D}y6aF2So#FCjwasIuQHS|*<)9D^wHYHy*Ojwj)!>?2!Yzp2vL0`i7QVAmNl=d*{ ztWl-wm(d#QZan%SNZbeqK0ZCH?3eD1-FsQTpM7iDlB~zEN7m^$%p-R`7=@qK#WUNx z-nGn=dv+D@k79QA;-tRkmA0G}V`r?YOlaSE`Nk!5MdbixZM$qm7QbPn;o{_hsj$UT zgJJkUy$sFp$A{JN>|0HJ4a(cl;6-+pnkX^kKc8jsy1OiSlsWvLT`(*3MpLcIoZz5K z+5y*pLtPV_(t`XEv^G1M!woH>8o!IrLF3frjX$WRe;mq}4rUa8yDk?F2z?Ag6HTOc zToYSK9V-q~`|s}-F*a4?qe)G5Nb-)LvLTVBU^em>5Lyx-xpf2;`zI+2 z$92GdKH}S|rTms%#|b;mD_ss&m^C^xs9NgKjNDmKwRccNRM@}rflN-3Aw()is~6=z z8Sw2?1Q$$Ye*F$4oh3KEeN&Hbt>W$2oD?g7YEtpm^(3!4E77Y8CACFk!KN-HZ~l|V z>Ud|CLX81c=JR2#wino071G;G)ckd`f|kSLOS;L)70#pVpn70IhsQ?`OvUB|ghtaH{|JkDqfmw(LXMBda4TBjY$$lszMR%LpF{S%(l2 ziiB{CWRDO@I3Z-q3UQ3=agK3}{KCEsbYq zA<9sTaxx@}(HD~rf`)_DA*OEmFeU1RNW3|UUe^dBuhTo-5ret3Gi z$KsVX`{NfPBf2bJinu#^2QYpyC#V4Xj2k~ylF_E7d&$}{qW6!>=dfpwfn4;&km8Wy ztns_+k~ug8zau5G{x;HpDhDUK*&w<4SYpnDw|Ss5t&W`TO=A6%*0ho%@S}`4#%fBH z4NVCBsB=p+*~U!NIrX;swJ_VY&%{mibOT~Vg7$u|w0p$1UWYEKD6d}Uy*E?@F4avc zHR|~7Ft=x!n_YT#Y34WW?XLmApzJv+E`jY&&u;G-s;sH?rzv_yB>Gp@!MoRf*3mkr zOyNhovL-$HjyW<Z zp-9d|xPAgUYwV+HIiDdwfwl0L{Fd&9bc(zy_fRmJaX$uDpXwq=blg@Nc(|XqdH&dO zw%$6K z9dJk})$>*dK2b)n=Cq(WP);L(7h$}APBIz|{TPNz$ z?~X;Cxhq@d^_%(^4Z@aKyrX-t-C%iRX<}! zWa%-$&ankqxXGA-SotQcONLc;0U*>Z+M9SP?Tomxrqbp^i>tmW*8OQ)9nS2+WHNL5 z#ow0aC=pqci6PUL`C34CVAl2Ko6_Q)Z6q_&%?|b7oIRNdagjlh+TedRq=z`U5<^>$ zy!wzf`I8h$Uw1TM^oqT?m`EmA<&b^(?y)l+upGbXs3bYUHg8XSAuX7_8(+@~nl+pq zP(*=~yd$7&0P{)2%2!I8x2Bh?e)P8SD?oPZ2{HG@xp39?%9%c^>R0^Shb6WB@hDt4 z8BZG{G_e$H^nM*Lbr`Z*@gchwE4mKXm8xNkLvPOws~lSq_p5F^;`HRG9k7zaZ7O~u z@H7BDnyZXTL;ac`r0eguzZjC0BDJsAm9IAt3sZ24=P=i?d>Kncflo5VpF78ZFjgYt z+y6B~+12>|ZH6`S%jg4l*CD9XmpDnhAdRhl)hQ&V+9NE&p3?n zj&4d5BZRd+xb-mS-Y7cWjmRjydH64c8w<&Wvm*_plwuelDWGDph{o}b=GmZmY4H~g zTl9}ID5wO{dOaY+f-QU=`?={pNAuHbYA4 zJ?ae9bpzcZBfJuj2bZ_*hA6_rS61?Ey9Eo&iS%G~mYfuEMNDRW$ZHUz>_e#L8%!+Q z+X~<9IbW!R#izVWJBt5UgXVl2p6E-)8%?h(rl@EBs+TV7b*IZWB1&0yL+0V;ShW$^ zl@h;Z1*$>#1c`1d^!55R5=aL%mVua!W>^TVznwLx#3-xo4!H*LL~+V$HQ4nrCv&~5 zuXBR~J)6jLgS)-eQQhIRw?m()G^>cLOParv92u()>w}xQeT*kBt8gjaJ>+j_BuBOh zIJ)*ccF#AQ{H1U4j3xn6^DT8oXt7+@VqymI?FGveob_`z;7WWgKvsf|i}al%dj=D7 ziWUJNSC8n8lKJnj>4Mqz%_uV5d#LA(KWnBV$#*7x1y%ZLjAtxPjK*$sXuezV^-XSG z)J1xMym&2jl{#5`b?Odow9(hyMEW|ip{+%6*9*k61Q4jF2!Cf-#gKxzBH#0zL$Vz-tzAdu$K8Ha3r81Y?Db>A< zUk?CKbyZV!FjMx;1;X;YC~?N2Odx*uxhGi>irTt_T91lX8fsb|OtIM*TiTBVYg>zQ zDi>C0-TlT~_MnYVd_V79KO|dQ4p?mqnqM|*nlh|&YZdths?wAGt2dldP{X{{R-pC! zx5Nlxf$1W9Kx|W=-3#m7(I8%ot|ugG;;4Z`vg}pVKxQ|MROcU7mmU153l(VCJ0*^W zMj+g()+9S~@?PF?vEl1?-dq+dCOo^tzd{Wh<`2J7y5{;GMjn}cO3jJzom)1$T~-r1 z)}iL@)F<7RX-NUjWz3$^-b;*t_4pSH$3oC3AR z%|#Dz${caymXJl*kC8v^z49H6a*TQLg5)3l>6`k&I*ru#FoVEE`L_i}SGou$$AL`KcI zYg#(Go%xVYH)YLOGRSkv1vjWPSz<(uLVmxT^ot-0+j9TV%?|i&ly~rVHkjtSfVy^? z04+3@N}!X*O-|N`X0(oh+25y`o_BR`T)NkLWBTRI{Q8xQpJ*AGajh!6YnU~x1OADY z$k7~;X*bH*Ac1E}a#${gd|U-&*l;Stgvid+Iw)86>x!Mhw*kH197}3bZjBUKgP7gn zMpwz>0-(pUGYlp@B39PT^kH6e{DFq&?Qy`%Vq!Dw`Z?G2o6G-6gwry{3jI%-=vK~d zMXnVx)qPuyKyC79DUKt2)ggzkB=sOxXvgQFj#YhR#?LY+wt7DAISH#E+ zXru&cnvb+MX{7?TcnVCi%Q1biWq`iJDPfQWBPiv>`Eg@>Mr385O$sV{L=A{x4SY>r ze>kO9?+bpP#^~0DbUQL38g`kUOC0(L)0wd6D+Nv{0U4{TqfKlLH68SAIB$PFfj&!M z&mp8@H#AX|7Zjk(>*n}skmY(A#ZAL?vSh#;RZ^Qa=|8zBq#_63wK*n+93t8nqQK+o zd2w5G=`*6yR5sF+?OoHcK%A^W*UYt)ynNUYtO*!%-WuPODjx^t7Dcmta}MsbQ9sD6 zb-z{_&Yd&{zYV=vm?+Pe_zlzOQOY5B34b0f)bM~M_xL0q7%=)|Dz9k~u^d>LpPfo= z`raWZsGU|azNE#tc}QCUm;@>ljCOG^iY)=;7cs((q@dSFC1}j=nNsc|(Lf{D;#?Nm z=j(F7%ecshVB;cywUcq5icXo)@r|H`E!zO6&0P`g3l8O#>M#Z!taW7nxE~i5Tu{=G zwtZJ--7R=@)BA&gbM9=)ORp;K14qBs6&c0OC6s(q4{Jv2;&^uG5s+v zP9_gB23u}H@0)Z@UNbqZj35;HYCL>QU@Ib*0GI!`Z#=7Q_f-H!ZS)|j7w-6gu0EVL zfVLpEh@uwI!~!F<2@k4t@?4-2K6#zNFs{um$o*Fw7rKfNc$#m|l5CGes0a9Mkoto@ zrDMPVcOz(sy8yu3DQRS^0zMV#LxqA^p>xrQ&T--J&$=9@F>ilIRk8ax?T_(@))aKsOdgCMoJ#hKNkC5!u{7bzMHPx=c6@#fPF@GIBO<;P1zXWD~4@`;Um9y zT<|2W5+4s7vgH4dQrPbsuCiU4*Yq!;I*f8R1iXs-nM)865RmDEbwxC##wnP+`|+ zUYs7~HD6vgcq==`G!eK^B3o1;;$RJM#u;MbZx28bD|xO{0f4n<`Mul=jVA>cDNz+> zXAni#61*U)H;WsEs*10bIAIdef#>*q zVY#}V!#kIVt8!m5GqN!s?|mENY4@?jwI!y$$dZXk3X{!oOkCw;rKXdD5xUOJ7CBb&{1TIM!&))R(R`p z5Og4~r6&BFx_~Uv4EF=BNsy3?7m$#N-@jkz%c-fw}{;tZi3qd#bGj9n8secM@lteqqI+ZO7`O@=q1E0N>99Y*Ob=-~AXoQX& zXfTk{z>Ha6FO3oI(Qlh2Q!!)7PfH?N?+u#hc`_#`hK}rdaca@q=mbB!ON+fhmSBx! z>KGN$8mnQL>2P`0_hWcB=yW(nkRNz<`*z>(%U$7h`CnhreZ~A!VwjO~L`&}}v@GUl zcaEEwCx|iRwhH?B?Y1weGB^!tMk|zVNKQdC6alBb1)^zZ_Gk8h*JH z=azNAagY+Q9-I^>ITtI^TORxo_0}YxIXU(waTq=+Tw}4D_*xaJDn@J6V^SN^W51se zJh=1Xn?ntESWSvFHuii$_ys{YU52zZ)X??oH>2 zI^#5jDY;OzSLfT`B3y4QI{&L9N5I=FLGp`YE0*r!)Bfk^(Wiqd7TlcJcZt&nHpWlp zfd37>HrtEeQ72#4e8y+88J z+LT|5&)Y9kE8crS(YYkOIzc)KR{CCFVcdU`BW{9`lj_>{KVev6uJ)4uc2BXvP+WQHe3{-4)B!EYBXS4J9x4bvZ zUt`NUz?rdJ(Nw%RL2E>llL*(0`~|U2qQ84*rbKM+@dr>)M)oHFSOQcSEGi(rh@)_K-j2eBesTxRx{ueywY7N90%#5{T^hD$3q zLc(ZB@!U{R*(>Hx{*2@2dA><}Y@c(Ts7Q^)Ns8a&{GQ&x-sP1*(W@A0r%fvM247-a zW<8T78YAnb?Ax^cAt$oGn?}EBQz7Nq($;CphN#R=-2cG zFnwwbs4)~^_EYG3C3qoa4p|u!fRqKhr@)H&J~%GEn1cL#E0D9`B2G~D5s+RFdfjcA zDH6orAEp778hDu2(Et5J>wHZxMLK(0oK|}myR=y)4~zismKM_U6*27EVNrlDV?&f= z;+6#wbww*mK}5yNl**cpe@?X;M+@-1(g((rRk- zxcB!^l$KQkNmvCcP`im=Mko;1$3KfO{%?h<0WGH=aGvR9BE7yU$eCHyzVuFsJ>U z)uEuKawbvhJ{b$-u-Kj2{5HXu|D@KIC;l6<-_xb#TuUHs(j^QUSNEoVq&% z=c^cAqzFtA7%k)tO0NE|N9oBNO9mbtUzyU&Oh!koHWgQ4J?-JpblNh+fVP$ZmDTI$ zO+f`OGU7hDqE}aCYuw0bvMGT9jf4x3ekd{M_Vub z8TVI>C$j*X3bj$j`GR4uZ+5ZU%(q^RjQ_Y@hGXQJi$J`56~v5PX;fLf&|az2CY;*H zHHchl3q-#tun3aWNUi&b6D5vXKDbz(@R;LDRf0Kio3$@DT?!5Z9^ixZ7Ak!Z5WViW zng|+jFBsI=&%ZYE6+7*e4D;u=GNurpU{Z1a3q30N9_x@$2oTRAC#0tWj(F$rfW<~O z{@G5|L*8XG^vP-j=t1q^p(fNc)Kaol5!;|*!|?XBZ^bB=bV%DVpoVDv=tsnd?$e!d zo$4Q4XS3Sp1}CFF)}N(7pATxViAsb(zTO^&v>~Q3zrs)M`)_?6MovC!yNRr5CfHdf z5taH?Kql8qq5LuF*&_U9jUcMULinGjFtNonj-^c?eoOinhrQVQw>I}==<9j~dhQ_q za_gZX&m~?^&XCM(wvwx?j{taLYK#grWK-%h&!vD*e|MGQ#?pN@t$+*Y9gR_I=KQ|f zE${rM{33RDMX-^_GwH3^|3;>!ru!nyvF$w>)}oHo2{|~;P$dVCOo(QAdNgy9I44vH z8p#^eM3Cc>(>hZ&d9qntjS*d}cPlgvp0no`{=ASRvzKM3k(W1%&92yerYD)=cPf?u ziTC6bppAoODN4my6>f>9NU6D}#PSdHRxuN1K0(vA+Jv2T=9ANdP``rnK*EcOyu;e` z53H*wmEbO%-|EY5`}b)mPd#(N5Ba2L{%nYZ&2^3geEiqxfcv7DQ;S-wAvq6qXFH)C z-e?4VSVQKRJFKxZ*I+yqE!>|R;I@aBMzQu}g%4;yxp3;_2ev8 zOkx^BBN}M118>0BN^^V&_zIgI{PXATd&`=;<|mwBPC4El-8|puiS32ywxQ1wVMEM; z30dQ@CGmW7pijx1b^G5^=ou|KCOESmorX|A^=V&iOxFRYotFd3+?R>bmCKincZiN9 z4WQUIwsC#|(W03DyHSMtH2etY1@e0({zpEs$X;}#{x~@Q6NrCVDZR0mN{4$Kq@8T6 zrAD$_0H88@w^BGTR8%r4GMInoM%_$-=Xt@Ip6p-YF5a|gd@Nw8(CbVKIMjLeWkHy?o&*vu`7()KsV>PScgBfiqR~fGBP7gGc>Z|Bo3QNS`D%U}|Lohiz%4T2i669!~pu0$EDt9C~>rd#v({tYNuf#IHaOH><_IPq`p;N^a zODdUrygAeLLtjG&L%&G#xH-euFTE@6`~M6pezDIV`IvIsVFZu8B(0}AAg;EbKXK2$ zp&ts9Sf=s$#rG~G^DG>q;dYn}0H3oSTtvS#QsYHzFVw#uQHyvs>gC9sPt*-`wpEC1L7>rs;sGH+R~$&VKH$#ob7CuS~F5gE7>Mwy4gNvXnw-x8>Fd z8%Vm;10DA4Wm)$!K$&vL8dT2_2U**NI%ZUuC@mjRip{iVO_s$~u9m4qo`-f5jmZAbp zd}5zb*LF|iDtRziZ`@@&es7C*JV zE*#zzbcHh3n$ktdoD11n^oZ_)M#yjVK%b^r3o^uk(h{^G=3iG{xFU8-H*SeuT%|uI&MI`+ zO&7MG$>#e{Ajj((yA0pIE^Om_8CreL7+-ZI?~e%@X1+*JZCCpu7UV<)DoTzmq}H2V z*$itc%#LF=b+-zT5X<3w<$>8dw$Au@?$_}0Fas2)#rm#d- z)}YvyPb*Jbnsy2PBwOuSCrdyKP?p~D4YqClK}~J)&f?MNL}zbqUz%I=4PTq%2bFZl zx`H7Ac5YdNDb6bATQ%Ud(+@^EZ>+@?AML`!Lu+iN9wS+U;O%;s46+6gUKg3BeE>!4 zA3NWC_ywmO3HQ~5nyWN4?!zP4X*`LwG6tvF42&P629`e>lre>m$|+zi0W69ImQ8u7 z=fH<0!F?{dkXv~>g+L%&Twyd*j}(uR$Pwn*pH5NT;_IRMsI5V>bKbD!6}bgUvR}|b z73Fq^Gks8L)7fCnqFsG>Fe*QMDlgls&8snJ3U7N+{4*Gh+VpzP*fjtYDu$wJGyk+nWofl_ z(srUMB1yUo76JU$Zz8I0%D6ySrcXfB1A}p)fxLf50R5%uA%YiQ7WRr9pueX`Q6@kn zJlu*ZxCTN-BG+ez?}0U^2~%yurgAFT@0d|E&!;RA3rWmHp6vOIQeS>Plox+Qh$+e_ z?c<|1?6L6!Ykr36B2C^yML$OQ75_yN@^F#Od%+r$gYXNSj6r{OC^9WuxOpd!frAwo zF-nz5T1ZyE?!7a3CoiV#54&3q^UGS;w)NMBjp~zpQ`pnUix1e`@YQVxY0WSrx{&`8TCkyWmAZll^{BLSK5Gj=$JuwBF2^R{Y+}4_mX>FdcQ?NlQ@cwZ(0>lv=)j4J~lT@+cfG=eJ-j5VTpR z(sn!6h%J`y6;ULXB48xStzt>=B8zvWngd+nGV8}F6&DeO(Byk{P6|L~dAz=Oj(G>P zV1gGcKD!rWy@Vw63B3uJm3c5mE)4c=`cN&7`K7^DNiH^!P|s+AQ(Q`#FHDf0v;0&J zyPRJKi1xO8KyjZ{jw&dgI)FDX0CKOc=b23x%c6OEMJZS73;nKPaxM%NwcIICf3k7B zAHw_*CDPB*o@PVw2C)WRlwNDj4{cgYxuP=ed|O{5r#zYc_B6I!<(69U!m~_|oCET* zmY?)$L2HKwYb>Cu)uZIugHrqpt~RXK)Xxx*c@?7t9~)Q;#bU{(|E^<>_|j*F zM@P8AC643fPTH5w`XC&D(s3byVFeV%);Oi1WHU|U6Sf2ZLVTTC$7)tw_#*Tgs<-_3 z6w3NkdfLIQu-E7Jpa6iP1}L<{uT+U_?XyL_Atr7`fX(PLgxgKlY$UR@!3xBR@4hgn zplR)fwLO2r#leJP%0U$m)T+FX3qubE!+??0hf}b&alW_`?$Pq+S}p1oKl&6wiO1Xp zgYrRV6@#J5iUOHtr^nS1`(#?0^BotQy4pN^;5*bN$n{;F^s{@JrJe>c#Z~ue+vS|N$)X2eg)r89_)K0L!&=i7 z)Btm}@xQKfY2rz%9l{f#hSCRM0`n|VYX`>-$)+Q7!079Ke_3NBZp zNU7<#i$zKiwX>NK!^;)5%i?hK<==IPl(Gu70Z_;@0VaJ4Aa{4S6@8)^>sTh6S|RA^ zJm4zCQq+IXH4h|;eZTcW@W#i4#{~~;`sbwApwyp{jQ(2LP)O2d_G6jMgLL$zkHOkP z@VrB$(}s@Pne|!i*L;BK{EMR_vCn-;XC(6EoQ=Vs+R!7hD#Nv_UDA6Su+xDmX#l7XjG* zUM`-z?oZEm-q0PFRmvR0*8qtoPvxCQ{}g*KIA&1Tt%AG*#z)^Wl{caNS=_>Hxd-OXYQ~g`y}57 z6JUYD&3IB=SJ4y)p?oB~3AJXEh`tmfGObu)Nym{6wgZFA0(--)I7E;Gnz*xGp|8fD zcH#l5q^%FTO(}r<|{(AYFp0@pwo@hftUIt zlvFbDO43k=@(+(YO##b51Yw2jiO)KY0?hyndNpXN%n_1%w;swK>lsA_eV{z73aM#c zlMpI=zj}^h%Lj?f?YHf=pLC9*W1zkl;Y4Kv;6sPxoa*=>G!f&k zetFPn71Ex~mx7q2vCrlGZ`1)dLcnR7ilfDHE^nP5!s{kMP_B9ZZ3*tf_v6^fk?_mF zO$JB1{HTN{mAe5c#fT3ad=%Lc8c|n!?I%zCLOK!Yp~IIQ=NCAdl(ZF)eMeF|I_l2r zVjnKPfD=`}8pYX=+vtnV^-4Gr$cfy&T9urPucot5?|&zvfW6FtsE}_ghOO9OO;_G< zkH2(>(eN>+_>}J0zMHQ2bJTWodgU@N)p-xX3ezR_Pq$n8x)*#erT>_a1l0Yo$czp$ zsMLHQPL<$ueWmtle>z<iX{V&t!+Hv$z9mU?G3=mDP7$t1gHz4*znW&Kc6M2)nc+AIx- zHLpSrW|eVO?Wy7a#)gdUZ5%p~oP8^c4SA!f!BS0=xebc4WQ0A2qs;FkB~fmL^^BA` zk(u609!nHLb@ZvM;@i4&Chi9!RiV7?T2l+Nsbh4?vVes7nE@w z9c!A(QP(<-7_N-nz!kE3^d^BxJcz>bfs2(E(uaFjsWo&H$z4|$yqErDwXF-Jwe+Zw z+{+8>75Wv}`ANTG_i1ov$CcWZ5jYd14Sbzp4$)bGk;F;|i8&W+yITQB_)_BL-pW~6 ziLAba`h!tOcU`Zh$f@k&{cxYdxfE&kSAz(rnVR08AewNqMu&h411LrJ5=(;B21$T+ zxnDpV-m~x2kqLccvw?U6mECQ=n*XphUwZMJA#>sI2c?mH;QBnR5A#X90xY?%jHvDS z0?;~e#w{ESpZ6Pao&5VU^GvrDL8La+L47-jx7o@EOYB1m4ir6ipHh-ueCP8sk%`SFSav@&x&Z@`BB+jZ4!H%i&zWD?)oEkOjPjp2Y zM7bsW=g>oC&^Xdgtiw4-^?%tPLbz{$CQjA^@i|7TIZ(|+vS;`=Z2}Y+>GK+N8G5@R2^`xww=TH-}PC_31f2VW3hiso2Qf zp7(V0g$UNpg>mkBnSJs>_^k%k{Yd6^2E?iH4=M!g`>EB_YY3e?{MGOeMcqEWpy`qOJjo~O z6X5W5Y-hn*OAR>eLA$_$GUn_QIsNDnec(&xLH<+|YEnDx6PycvhkM{VNxK8OetNnv zYREkwF{1j#Q)Iilkc#bad%cp5s-Sh@sArf4OpP&Hw#Hu_t*Z@m?u_i?tVND`P$QbD zDz?rl$Y1U5X#D3gvb3)hLC$LDXDA9h3z!lxr>`W!iC`XQnnzPyD24F9w0s&isfR7} zk$Yj-u!s7XTfo!Kmh-Cs1sWqHYMme1&!9&1^quQc5}qlEDFbETPf31}^COanp=-(` z&{;*Fn3Gy1GpLYi#u;pEs{rvOV-Q50mKcL)F&t?xkbkyL2#e!!NmS}O1{mEOpUsA+fByl>~d8> z3#l(MrZMI~=Nj~rs}9MW8PIWBB3UC5HEnqvK%k5v)_Y}!gG5f+FMKU7dmZkC8(;S6 z@G6JGX$PCzcNc6AXMf9CXF-fWW@o?O?}llZgUw-y$qZboIhVGn(oq~`f?eH3oLA^e zf)SK@aPyZ@#KFIp-i7CVItWwzQ5;md8zeJ)w$#`lx=tBzHmr)?rZW2eva2Z9n~V`N z_5l|$_e(G}qVZpddr2%TJZ7B52w`!N7_rtuA><7Da^QCRJGv{kOaTK8pRz(y^2uOd zFc*xf`bFuyjs{V$cLxFRt-8*(P~61!qilyCGzE=(k4Ln?j6NQ7PFsi3tVFO$D&E@F z#E842ja%a)vt@X%ot<{RKYxUxy%Hn6@3^DS z$bg*B{}~XqclAg*+$f(kQ7W$(dgQ`8&=4A?PLFw=x~`uW=@+rCJROnq*em3tPlWeC z+x||L?6gyRCoTGO#9qX7>sI#YHLfwkToB<6NjW)H9+e<-vS|gGc%Q#_6)qD0CHAue z=|GJYxz8JR1V*%T_&Y}sK15xvzhWxLxGoMT;nEg`giI)({CTSr)l^JtgrrBsp?6s7 zG}QhP|7o6`Bwt=Jaui*vU9Mlj`5<*=vNZrkoxF79AC_sWo3!{+4Tz<+39=>isf_iY zu@uGZ9an%(z=+;DFNitUo-^cT6NrXU0|g8vL!XjH)JTQ5`vl&@^*nN(eeRp7gzCBcrjyl$NaTQhL-h1CGx4ukD9`XV7b{n!M6MhVM z3%cxvVd4%G)=*aCjjco>)I=F$}2q4>D%<9V1P#cq0wVGbb zL`Hwa&TXFI?bs;n+5Z%CqbOwdzE*BKJSX0=(DCc2WuSAUMQ4j|g`;l`05%U%Sq=7X zhVP3WJg4t=!+XCTAHCUKRZ|n)4unfY!Y|yF1KD=g2;?Qy2A#|ToZ9odVZl}Fo!>=N z&c25r2>N6yz^}a0eCaVF->&feEWg_D-mBoECstQki-+@~^+w?$crwf09hNx)>2k0- z3?zZ&g%SGnhYf1mebp`ecFD9Jh0$4O=>1-sy1PWln-qpw-3ue)B16LU>itL-1njDL?a^tS+(JyT0#va~?cz(Vy#Bv$C<=t*{XU}L2~S#}eK+J$1TJrg ze?`!0KUMO$P)F^1^xOYFB-+&Eb#_F+iT>m8Oz!wp%Rr&mh;kiNoe1~a8h*c>lBcXaa&H8-nb?NZ0fRqK-VD?l`M{6>8_adH4py81w_sr$d-8{w(yiT`i+8%Q2Kxz<_l=L!i{T z7D=IgjWbxq{njn2q+6V{8P8^KtUkFG3qHsSdcVI3~!0lD=AAeSH$mVqF3? zaL;E9z?gw8ouRjvx4A_@G>!$yCAYOqDC4aLrNnm5IG>1xEW4^Uw?+WnV_&LAc!-cM z=$$q#t@kW}Nf5cDd7M{pCpyuG)!2MR8$-SCS_$M<;s3R}#^TAe`=RHozz8Doc^Fqv z^GYG0vqBrk!N(~)|CAP1G+1`BfEr$F>fiaXo@H`yAsV4$tZ_8<8!;z3A`#yEIg2xm z56)1cOiwhRmi0bC+5U_ytGmx0OX5Vl(k=KnzoX zkV@6o;5+aC56d^|M(C5H_e#^woWzt81)jb0c^v zW2+06{M&b<+P50>Zo&?8|Ma%%^F}y_KU|^I*n57+Nh?FlD;qdWwe$n4yDGHjZGV1! zEri+1>MskeVgRoB`&tvo*bl3jasKc7@V&d11WE+Qt<1Z1qQSOWaBEJ!r9y_2lkr{O zgqCHOJtSpdVPqx;nqxr+axMBg>|G<+1SPyENar*eD?HH68H~XvVXF0d;n)qG>!I}vEJmvD5YueN7lc~)QCzO7Y-~b_ni~l;(#5+e5d@{T z4jHj(YNb}17%?4s39$G;3P5y{H_#Dr{X@V4SDj~> ztsz<(EY$CjC=KR32PAx<39&OG;8%Bzr0VIhL;Gh>SUVNw{^a+51!YLKxD+rZ4-3-^I2L}>zZS7bUql;qBU|dN%D@+Y=Pf_%;<@hg*XGW@C zfW*);cbY}HkBeAb0vUOr86#SFd_ftJ+MG$x`hkSB{d-Lzz*VN!$%NMoO-dZ$Fq|sR zOJ?z9DKG|`6HQ=Vxj3e$u_6~NPlY)`6S}4CQS}TkkjpmDbY*q?t*NZ%h&PNtuA;q7 zohhhZ1NG-zhQelhbZ#LCOJUvp*5trHAv-9?O;%|&H5L1uxuDLT7O7$T61p*mYgLQ5 zJrAPMJ5H1cvkHF_)aw7b>kCSx@x?<}gEdHS%e8=~FX+#*4(BoV$^1ji^3t{1j_th% ziRseL>i0WR!*^UbwT9?27VlJp29 zTv7W{nf7ra;)t?fOGu5>eGifm@wuDEnDmS_2uy>$R?X0_klQgGS6#e5*+O>)kQN>pH!_5!9y8(eq+wF)Fa##SBV_sm_UXa9+NkQL zecuuMFBQ!_xf3bhc^%BBRPpue`{$MyJL0r#ydxf+EN(i7E4-FAatxAg&mZO zklnt>&#*b$GEO8@v|a#-6Dq-I_>=3Dd}LYVqD|`ng#&5iYz3DO0XjW^?fl^*V<8o8 z_5K4^oXb9Z3zk@~kbT^e6n!tica5 z*ToRD?P?%qVs8|&^cDE&M%T9&zNBf7E!&l@$RqfEc^m8ah;{3HD2U_gJxKs{xVV>tgjYAG zAHh<}M(Ez^q?)mZtGLzHKX@#1ZT~w8(SH=+ZSNbU2OouC6t58)3VzA>0)3K~hG(pV z(C65I+)cs5Zi0%IGg);b_&OW~E^PqOV5F1QK`3hvr zcmb1-AQBhHYGCj9L zWr{WK(k`&Eq!r8E#+lwBm2rKgEPyX%n$W8{L+*Gzt_riyI zCBl(En&Kpro-S_qg4wse#HD^d)F(_H8zRu*krQY7(2CHI7mF{TPrOJ-Q+0am%hle? z+QF9{%4LEWPxo~4n=1;659aHGB2ei$_&dHHY2VDMc;WLFA-iUWrT6{HE#v<6NT+s6s3}t<-!Ggt`ZuM1@H0j} ze!XQF0(NEvJHnXx&J_+d60r>W9SEjt z#!(xWq1i5S)ubl<IMvSCx4k`~qAJgTx&geI@ji>yFl%zqdHkRKU38 zj4x_tXS`m@DMOJ?wS#gXJ~--WZ(i_(B8D~M@7BZ5k0sL{jS3k9xPEXF-DE$~jp@O4 zw9To?JKRF^Nt0Z`*47bO@@U|#O8=3z6Br%%zU$lAV!=DqR`0BfB%E)5u}g)jURoh_ zdHtUPBV7Xm9HWJMffRu9%vaBpo%oB0Vh0c($GJ~FtdM=~R{E;hWsK0e*V273M3SA`=f$^{ZV^y-q>-UYs@sC46^RCj9s$&~?4C{x<0AyjUGbJun9&nQVgQ zO{>>xqUK%H%nP19{Vqxd^9wy!_JV^_MrhO)1(0`B_6eb%^1dA|<%xz9Ur*{}fmgM9Iw@t(*O)%v^L&r6=NDb5hK(One?e`N(P@6#FQeL=T1C70CtYJrq;cd(x&Zw z^c@tPG~fnvf3if@$@Bc9?7ZBBXU0F5W+?|jhqrG&B!Uq914v)KX&iF-|zc+U)SsPde(Mi zsZYmMS{y-yP@IJKe1d7pC4B*xQZ68^M98sh;4L`~U*~%2!!nJ|lYP|1k6I7<@=`tEs2l=90Ll-uaSGu9W$m%_K?g8*N+q4KdcyL;9S^yN8JA9 z@!sS&nY32F)q>y~b0N}agZwl)RBC`#JHnv%RX9P3KBD(!j2=j?o`$QXmrn(I;*D5~ z|KMk5LjFFJ{S>m1woV^8>df8O1qAlpfJ4Uv2e%-6(n*w4BXjs3Oy_S53{m%xB!-M_0{&@FT zs%nGpcKY3`WbSB{t{*rTN(oo9-_iR$GT9Mcb3^Z5tX9^QuS#|I&eieN4bx&%(yaj8 z{;9owK{Ru8KnNct>R58Qa>@rmHn)C^>t4DY9wzD$u8|+1l{aXC|GNbIkd3ewo2VqiURbTbq}88R6w4%pJ^)nqe@ z0a`A!V#Qk*4J@Zp?9A7cwHRrT29C|A^Qi)%YH4#I{b2DE8SRq!(FoZLJV{^VUidFQ zOo+F(2STR0A`6^;L_k{OE||C^X>6y(&&ii0f>_M(AymH~UHIOmv)3AE5RUaFZ+Knf z4d48f@a=SktNZJXlh$h>_M!^}dj3a*{*Yf0jLn?dNQS^!b&1f&8{;4eh+i+1#h-em z47o#>xRNXG6fL}{tBE|wh`1qj&Evvvu`XK2k1`Z0;7cu>e(pKM$G1_p6{Ow>iczLv zb}m+H+I)uXg22LTvA=Lv@NB5ro67u22S7rt`xe_*_osX6y?cke*DuOFK*4-i3r;SY zJnAc}vva50B3#&4iDNJPi0}MO zPo-zgzbbHW>{Qz#SOe`dqz z>1_6&|4l+AeG1QqR@?7iHv+MgZkjAH!*TSnkh*09sTjSFll+rwAspO+Ly+6!@X$vE zjtq%Nl)^QWt86-*<+pmCl_(iHj<-Ey53}zuokQQEOO+$UT(=kQ?Oh8wWFbSee=`|W z0uu8xfLqe!HS>atvrOPC6jzhPq?z!<;ajcJrIdprW)wXNe0$e{2b*ctgZ=l6eU0~# zoDLtM+mO{i$OOQ(N2Wtc7Mq(CkuTbQ7$gb(WR_=ou{nJKsLFwqLKnXAN~b?7Iudb2q7f;1?l{kT&b~`B<8;tjk!STWp z;^U*&IPDj3pEjZ~9d>c6KeJfya}DtK4e|Z@j76k6ZW)$DocrctfK2bdTn0Z z`{&<8L-EGM(G`MUN|x0j1NzBrHX;|F<`l+gj7_k{Iq!raUI_)zU~63{UoXebe8z4B z_Mu+d)66$Z*X~e`pF!B_Id`2ab$6`jM-c=7kENAZUUJR>&g)U?fS@N5T6X4JnGeOn zeO*M3FJGw$ME==Ft7~d6!c(u$?cO9g&FxT~HDr4jb;0;$>d9B175OWre}710ajf`r ztOgA2{Hj~317g&*A(4|YR={}*%pEm{JBwJD1tei^Aant;sq3T(h5MIsNeuPkrqQTp z;7Ttm2z`kt^$%A49?B))$jpzsisDGsaW?C|KeKcMx<3l2yQ|3bToC3H9+^}vy)RHW`09?`!$MS?-^O;_*W`6t zS2cN5qSRrmhkm^9hLKCqNnxCeE?e;Pys9xbs@P`Qj9=$Y#Vtm#4k}^okc;WC={mmH zdOxrQuDAKXIBdJz1L$L9Stg z7P}4tf5!J73)=8pL)<(PXN+>s+gBkd#;{w6RV1nBI@qM~zs0}w z=)=oJDm267g;th`s(P?Gc_5F*(QAL}B>&; zFa6kqVX8;i9b5*yFr<#SP5h5}*C0QiSd>VF_G(~gJ$ShUlz#Z#((QRiO9<8#|Ml*f z<;7h4!4Dlzj^Y|qe9431!y1jVO_*w?h~?{6!i@)o$p+!;Z)Pn4=T)7@cg1l#eXUog zz;-S0-awx)82(uC1#Z}$-LGDSxYOj*JC--FQ z2;xGm<-N~dogN`_6rOChgLXAQ6aA#c>ui$E`jE$3H6p%Ozx7tq53J1Je+i_$i|n(< z^fzi0QnG*C!Nn{vq7vgSfBJM$DF{bH>d}^N67e2;lc*Emc$r}yhGr`%nVLEc>JS0H z&G1~E-rl-h!Sn1#-nYtu&eL4q*&}-N>81ICtPYDkOOQP;SD|;-k7hAcq*F7vI9Suo zYUZ0)h-?pnB?eE~Nqp+i-SGPf5`OgA_*W8Jo|q~vdADwYZ!=0~$2NJ}c9j%(QQWCq zh>)6?Ln&+6koFso~4VFNH`hmY&`0|yr-%<3OF=WHB(>1LcdTlqE)PTXW(UEHyp?Hdm)=^x*f>D1d%B?ZJ2#Q?3$G|swID&V2I*j#XlQjUK`X_%2%3#xkj z*Wa4YQF00@L57bGKuj#04XHl-P*l6Q`q)I4#fDPx#B8Xj(dzdiE^g*Qq}qUHsE4Or zgwb=ey@X{tr9A-_*AEA(M!1)#=%}mzY2fALekG|=1T{R+pJY#6KGg( zVIOUcf~=EE>sU?%8B}vebFr-ruY{r@Th7w?|L%+_^Ax=iP$F*6TCvMbWApQ~9tsVW z5}1q|e7Vr{PoifROnQ(R1gHpJM{A){e|d#4>M@!mHa4bZ_NculcxR6tk9kwgI!dnu zDlD$yl4*6KSx)F{X?d2i8*~6-Mnbx_4$q6N?YuP>Je|op7_|O z2_OqVuHg68)%vYVm*tC%t$o-XFwfa?uML9~rat?EH+`Wf zfnNLp@9KhBix>^K=jc_nGOR?P^VkJXyXuxVfH<3{BErq()x~XQ_*965Wg8z(kw)QI zE(Hh}x`6u`b+vLs^Fuftz(~5j!FvjrM*f_|Wb^fNyeI()8U1@rzOg1=MqJ&%MS+0x zJ6++Gmyfsu1nB!KLdp+$Lp-RpJ=9-{d+@t$85-c#;;}vP86CJvYy(`i^JR41LxWx@ z5pL;!LEh5!2*=mBPzb-J%Jnc$Cm2~FNzzfCljZ~63Hl|4F#jjQ16UGPsn>17#LKH{~Pg#^}R zbLJ^|8RLq24}jS@X!y+Fd*gGCsrTQ1%`i#zSxp>7^4e3+F;5>E1oPt~m*{r86PP^|S^L;tSb`RUYNOODz5!#pCfBag-Rol{5{ z{|8C`U1g@q%(5_|u=MmWk4tKYgvitZjpX_$7j+BGa>u{uGHiJA|zAQgj0zN3!`!pm8RxY*}HB^B~>f z6h8hsM0D?0QJWl^<(ez`Qxr4e#P3#fO!H!79SK5FB2t^z{cF3|g69X21>NOx%Dg`FJNop5 z+)Q!8qX*E38BwMC_~-z(K5$h z?glkBMi4=Wzz05292t*>@1{boA_$czOy%5OTXdTB(V_ecwT7*GZfylCvNNxN=vw_U zNYPErgc+$shDuA}YSQ%EN-e8UtuNV+#2+QWXUO?owWHpZpLHRAN12GiIXMECK#cCs z@m$wfIJ*07uQ_obYO^`tf@C=l+S1Q#H)$?0!Xa8Fj9SKw!To!I`xSzj zCrt18Wy>IsUrZ9sq~S(v$(!etF`1Z!qY~LJzFCp3=7KjJ$_SH!Mi9onV-KRxw9lBD z)hv6=_j^I(S*3%RKh49O^ahAF@rtJX9D@k7oOMnfXr9(kqh#&4Ooq$!Vm-#K_s4D; zI!J0tT#MgR79GQx(r^%lGo>m_Vs9#|O||neo+h)Fegyy?Ee&f`ZXngH|;+PBHF9>hq4D?Zt@*_F-YNo7Jtm1|Polqyymz zqrHmeUjJC_fkAI*oj128vkTTd<$?MLPXbijg(F_Bx%*aXT{yICoAU-pDb)M2(I?7Y zGozW=%gclYuA2}s1a|OIh!DO4EyQmXaK9aZ+)T4K^AlGwYh1f039!1aLgjEGc%o0w-J-XgU_L)RWeu$yN29X=CGGmt?6ySb>Tw#rx>d$%r<|Jll`gX;;xjBfbCe%-_*1)m#eyokn9DQ9k_WBDWOl`K4m4FA;jOKplyXe3F@HF!0d66J{NCqgn(&%@!5;Hs4pn-+FYlMosiFxs(QNp;5EflAZbKH_f z`5Jq83XNR95doLf%S;Iy8?`bS=(0YNpyPjF9?L8PWjI~D#QCCs{MygZIb6mXaH$U5 zsc1~L`2yUUl=pmmH%fFtxk$x(O(mSd{loJX#5}IqCE_YfZP@d>(=dQ>Z;&vm*fyKp zk>W4H*M6tcYP7pnBi=&fc7Un>T>~SpE^CY^p=fQatq}*e2N6IVt=&X6hEOjWW8@n7 z)^_Fnd;M)^;od_|tpy!{9Ya-487&bs=%OT@L#4i5xMBN>%Y`_&jH!17M@{-1*tirF z|I~4!3w~Rb{R42q*vIyjR!8jIv3))=(6wMWzn#p}aD}T(dbM-!Gh;*~4PxH~ zH8fqF{6wdBj~|j61!N1EXFqCgpUs3FqrcQO&nA8k>WC@cxT#Ks3|4y$jnA62nsy@j z;dj5Mz%neeKkHP3JpQhE1v8={thwa>kZKN|yeIBX(PC1m!q@J79Au?=49z1-NrUzJ zsK4v9l03>}q3%DQf@s3MsZWzDpeq zJ=y2{FUV$5&#=Po?`w0fn&;tnnE_p3${tb;76pX5PxS;yp@%{{=WYDF4x{*;$9E3v zwg3GW-Q)W(AAx4XjY$}gnfDEdcaQlxho1zs)9AqNF+_gahNAZNH6#sS#xw*(B+^De zpxlX}0Ahu@5EL8ey=KipL^0Lez92>n+zzUOvq*|OHM7Y6^b#s;6+w)@4>q+Rbl=KM zAFV{eftG^+IZlGzdacA8l1kBltGV7vB{{7_B?P{6Wo4&AKhm4j?^(wIoyOI`uW6z4 z`(MOE+b>OZjRH*Kuq)5!W<_~hyrAq`R6jdwjk)&SLa&1QXs%n!BmB!{ITa}lB;`Jv zrJuS5m^VUF0$8f6b*#q>r8&pxU~R5~k?d^p&)?X*puv^EobZSo8+{|;5!Lg_*yxM; zWEvN88%s7w1W=UvVlh^Z0}oF3t>f+=R%$pbN%kIFiIcDTcO0l98{Lid>c-l~_s&wI z>*S_7EgU17oio4151E+1wPcrci1%bI!d{H;F~tihH-%M+s5GQq3qa7Czm{N^)yXFH z2xO5km#MhuQ~`TKd=pt;Go+q|!z<#hXQGCefJYl!%{=l8HK^~z74tfE`~WJ{t~@i> ztYl$pk{oXP^sVWdUV@3`VF#6izB*6#}YX&u} z5va^C5?J%1?zs(ZFS)9ahhH;BBBd8dWstWh#8drj*0Rela3e1)*F!LP<`G^v`n{ln zgFY8)NtqVhR&TlXvWS_<-4!`W62C`sZQI*$I*EoY7x3$2`PRGHMaIWpCn!y!OfA+_ zKspG1$f&;kiy75E)!jsu0gTynVezfl778syk>!?X><| zK&2cOro>{7&YcEEna7#wCq!W|D@>p9hGi8@6S>BpNm2H4R0xX;S$nDkhM~tKv}?6~ zV)yS}0TXw29^M_-7xW5U1YJFZa*>!I1|3{o*`|>Hs5TXd4}PVKJko{bGx1Mvp{HXs zvgX1YPL?c4AeWHucEjS0e=(}|+PuCeFjKIgP748^jhIe#szixje*^hQO!!Dd%QKJ9S_;xA|%AVG>)$P=mLnD@>2u9dT z^gk$K#Z=2ZJLXMbg`t3hXjvo==n;q+c&qK#cGXgA=7%O1XDpRVFrt9PlwV}jO|e_K zow??Q|0DeBYo`p2+04cpt#0O-MiB$u`A7TjQ1`mQkD>~NP7Kd`hXiNbB1aO3I&~+M zqj>lcs`!VjVYp(rp?OZ?`LSw?!SQ3z?Ze+~bYdLNwR*{AC^#CXHwL?lad}`KxUw^? zWc9BO_ahR?p;uGp(#ki`D9z4sqgWcH04?P8t~&Y<;O$Nkea1Ol@k@AUg;l=bong3J9YPLFBpOR~`>z8WH{pWk|D$aO%u|ct=r$I=sVOQ`wG|T4U z1r^GAd|PkAKQra5T86TgMTyOGA3((<(I*2o6~?408@INx{UA||kcLeGf_s~(`cB5p zsU%48d<}uKo+#Kh+J03EWD3)62Etjg$a;?Mn z(As2~U6?T_w7yBBnnO<_94hQ}fY`hn4l$ehIy!#?wU>3bb5M4Ga)L^;kNP8Fk~SU1 z5f#O&p%@Vx7J+tLwsCy&?KOwEKX+EJ43P3RZ;WHja}yF^!1KFc7xQU+K->auAC|Ze zaK*nlbM?QA@(UnIY#CR92K4SbDKNmnj$lKv@<~jsFsN`Oc(*YXsh_gFd_3OO7e82^ z`P!c|8+yf2ce5~Q&q@rYUCT(}X>U;Pa$L1^AGcsDf{L`lf3&D#rtdf0DsL?V!&Vji z@t%`!Ah6C&S3}n`8uF9L_965;*v& zj^LkM&p}+{{-j6(#h4}|O9^C#4F4CM5EAgMiFsJGa#*xO&9XudrssJA6$6z^+2>DQfGAiM^VFz^{lfNO?KTXUoj*fkSa_E4 z&Omw=Upk>zk3Aw&uQ`t+(ow~DQjPNk&ydKM z5TE`;_-$&9YZ6Cx;2`EvZ6*&pRQ>T3+G5I?VDb|OJJ7`N(T!U-^bAcO! z;URImeimlR6XG=v)LR02d|CQ0Au?gs7$R+I6-vS9aSgj>&9H1(x8u#V6}oILIzt5| z1unR5Tl)0d{7tjrGMK)u-XOwI-ki)n?3iogcl}^PQ|;AFhGibbgwX2m2zH_b+Y)6@ z296npL>xv5|L=+s=d}0J`lC3mJ!at53)GrFOw6!<6U7JCJFNA4>)lX$-g*#=F#qQr z^eBFVDYIgiWo=5^tU4ChbK=#e-f1C&)b~q0dRY&&&_&cJ7y(qmNEqbITHG-jUX=f_ zl)_QeuX>c2#@w+4Oe}C6uIXWq!4|DUGC2J}6-Y*==nY8|j8%`;SjT7U!^^RCv7)4Q zK|BxVDTLLpHF?;Ma`RoFg?=4#ie3WzC)&_;QtD6k&hLqt%RVo5Iw#s8pL{h72%K0xl^#d#!$(v>rl@25OI!zHJ4zCHXA?)t>=#@Mi8*tp15?X@_&4w0yd$`$dll--4F1v2P zm9xbLQ@jtBf?-%vZ?7NG<5pJgclESvqrEAsORuw2Y7e6Y9QPt)t7V4O7MyzH)0v01ju9X_vxcB2l$SNNq@cobA=;LbBXwO-jbtJa2a z^gQHVrm((oM}#*~TY6D`>F$A8$0Dz&dP zu6vE|ABJsO$prd+xAhvfu46)hjX`X9$l97ubVL<8l&$3rWaDD=u$BJyvQz9ZG&$*l)tAPQX*Ck)-B_`gQNx61 z?frDv#v2>Ogrf!ds%p^E1+l@p!!C*A&OHI5wt3D~`g|A)WVWzyvUiVJ3#R%eJdbUQ z&SmQ4aPHedwe7Ihpj#VPLobOw7Y=>=?rSOT$+H!S$PHG_O65 zR3-@TSjVxxg_cDU=IswSjc!O?I>~6)3YI0K}Cjt*8RoQGW-+x+GD-ktyQvMhCf093Fp31+{ zP`Sc{(_Z`T$cM6AkqenREVZ-gx!3e5sWlgHgAcwO8tLyUN{Zr>?!V#SMqOqw?v5Xd z5*uq_tT~(GJ6CEtU*4is)EiYM`Q@E0cvt=63OIL2fo1WeT)iehNSFgFK$sc?N?|9{ zPS%rAM7S;}%_-@8lX@?1ADadxo`5bA%({RSmtwFEBx8KPUYFpgK@{iQ`TBM5eEXn< zQy5^6t5+B=RD^wnQLZb}-b*He(4g83M#Pqie0~Jy;NV-y8p}0mmlud_P{q+gWATHJ1pAzxACZ% z^u_m0m4!NX+nGl6F-AahnZg+xyz~WY> zp`B>c-HX#vA-}b0P9GW;Lar^XOz>)k-miVI{GQwg$<{fA;vY0WVhKO}^>;P+Wi1TV z+tRttZ~~+CEbuDSoNZ&7J#0|sld|4-`}{6tpAvpN{;gs})0u^i47#N%HBf-U@HhFD z;E$t5`z)$?y6l2_)90q=3S{i-wuPP7x~R^oe0}$PNj52)Z$Hv%q>ROXT>ruH7Ian8 zIF_`%vtrY*v-f2ojQHX$ZRx6F6`tB$Koqv`Gs!^=-&&+BxF^}fYBeK z{r8lST_-bpt2h?IPqLY8n5B=fnnSeczZ9#VZ{Q}xF6Xo!ElyCpM@Yfi;nY%2u_fp( zgIbWr5(r1`fnJsFkMiQnT5&&)5}oOaH@$5}!|nyL*LpeFwc6uO3F{C7dq9Sw3a&(L z(lvv+rG9ONlYQA}o-V3Em~l66Eswn$7ftcEJImVGoZ9((q<^M9A#pElocidqz3419 z`YO)-d5P3EOaib*y8F26vDz=o^F2+G>-2icXn;}g3F6F?ngZ788m&ZUsjyIb%S=pqF^`*Toh}X55No_v(?n2dJyTU&H?34rxR>)k8iVB?|h;< ze{gFX5+^^%6cN#WXe+@ivFRS`C^Or~!0ap4IP3n-%;DQ#tb+%p5LX6sqZj+y0?r^` zzvbFl)5G&_+Nrp!slI{Z6q4bxrHofrr(86OC#{^QU)8R)oZ~FgAh>tt51r+8WuMnz z{ZAjYrudV3WUZ)L>44-ZZxmW~nN2Q*`39ibubp+iaNOmO&$GG6EZC{h-Na0j{HP#P zB9xwx1Mr4@vDGZVYaD|~&rS&%;v`=t*y6V(!96`gP_aTdj+*i;qTx#RzCPQIaCm!} z8(2-&mPFLQP{V)C!HdCs_z{a5KLXCp$jhi|hVPc%L~yCw-~%-2bS7;vM8(D8aOhP5 zqP@7_O@C-vLG@Dc`KB*lf<}UC{X*K;+29XWYNipdHTvE)tS?Ng2Kz~a23g*^X<|>_ zrhK51TN@OTltJ+`csT(mm~#js=tgp$Z7Z%`v81$wo5;;T2VAAHBnA>}M)I*G58WXd zxJufqYfy2_aM>Ym9!4CG-R}(s`tJ7{H*iH=PZ;lPx64>)9$Eg`GDl`MKOS);Zj8_3N<_mIx3>~6V;O= zt%pn1_|NPxh>mzqb}tQ2GXTM^b%+;!p(LqUdcz@zMIaU2g7oJxs z&yg_g1q??yzeH+lZBGGG16S#I8^TPEI(+kXss(Gs-}a?b<9PiugvOuJ1GdK%ScS6s zxY0{j`X70>zZNXxGyn{Gj_ z*f!0b+Cxmo+-qhL)XaO<4)fdgMOe%2>lcp%Y{ zEJai^wCPc(OhfH%bmlfNT#L9H>tX3J`rH3)4rs!RLpTuk zV(X}851P~@_q@q4kU+CNx8P;xU599adK$x}e%;QboF%T~(K*Y|QK5-{PM80SU48Q< zC46IkGV-}{U$$3+j0&gndkQx3eBo6KUM+aL613daa$*)5ru;)c-N%{Ro;9oA8ppxs zZyhm)icxk-A-$QZ9n##X7pd~JMA4HA856;d%hj6aHYjaFKzZ@+mEpq8|KB91RN7As$*- zVyneM5FgbCKxshHVcN2&Nm9~^4X#fXu`gUxF0T(w)0QUAHGb*1u4sJ_CDyp?9xXy; zYObpP{z_?lcYt}I#mrLK@#J=81~kdAh+IB<#OrL5-0iYDX%|K<2mQ74`ZEN%r*UBR z)ViLA*1xcz_8XXhDC%jXVNYFvgvreQ(Wfm#-^%812TD8Lz1c~fu-g#7!VM*95+kwh zT2&8o4QtCtYh+$@L8cIY#Tl2kV{Ck?mq1U$_+h0sMh!xsDmCf4GnnAm4ju;P&T9Cl z95sjaEEP}r111(tCTyt)`(V}Tn=3)G&APy?2(ukt^0#W(5XW!)Jw}LuRhylQG^@#+ za>?m|5$K;9)QF;q+Ya#am@OIuwwlBZ`;6xL2(d-xjLJK3r_y0wt&RRdx=+VgOmQ>0oo_ z+XvKTd$R+zhV#QUQSRNEfc2H`LM>^2xQW*H$Ky*%CpUV z-PK~2I0x2di${EPJU`qj6&-mpWxKTRw)6UV*qR92hdmjT4?EczhF~DjOKWBHNAcnN z>%X$?ERFe77=nvlq$2wV?Sb>I!rvR(YhC{=E%FgQSvRxe-HhFSr;PaSd4_fR*m{lY zPUe|%oCwo0hu(Km@s3QthUsSyzhyREMl}3ujFR9x?OqFM2NQCib#$-gT_GScUWQl7 zz|kPI1%9H3PAs4Uj;p&4J5-t^{<>(vXb&{Am@xcfTQo+!))=u9hGYccCCyKIOPKL! zJIju8$u_HKOukYiv)tL4>2uTPY1RjuU}H8ycQFJ55@|0Bvwn!20rPrU_^8P6=dAAN zc3!RF_fHFI;I=vBn;jb82gbu9waekTI%9mADnR9zS^6GomPR8cSDIB@ zARp?tEdSz2>0%e*eDm87gbt*CO^~ie&}co=Q?bYRqND0e1&-Et`^m)0c@BFdb7X}5a#sY0>bYwaSZj#5)g=Tz`DAe+9 zWK)Sjai>5n^w)HTQce4>3&_gH(YZT+KKYlDmj;N=c_N))t>(^?*C*48Ul&!NruH?F=b>1b#d!&ZQV||SgKy?z+h&BXQoOx(T z)1>YZ&ySFke@C=;yOc{}<#c~ob&YEt0A;%M!&3fk*}GjPj83Zp)`-8FL1);98)yF8 z!b|oV32DR|(mqs`7R#h9&1Q;SbD0hev#{_0l5og7eS5Fu3ptUZ_Pgcep0|H<=!Wer zHtJ$<_@c3Y*ytVIg;$TI z6sYw%$|oFs=w1vec+l=D7v|*!c3QQS?zZX|WlF%i+8_c2IoGwAm%jeu-&W%Di-zp} zUgBI?>g4GN8qTwFX5d178#&TVIs8J$)YGLPuzi@b6Fyd(qHK;_p5R2qEfpW;J0yQP zo(@As^5xq+w3Y!h!r!x+U8e%LRe_yn>FW{Vnr&(0Pqc8xWU0o;bKJT25J&X2+FmgyKILxU=Uy`(6B!1+q@F=Koh7S{V` z{n2|;X4CeOrY(Aco2&qWI4~FF(t<*GYR)R@p|?MFCM&z8Fx>yr;T_q}63@Ol|FLmf zXohYW2!((dW8@xq-D22e>Fjlfy_CU+HNZiR7rYuayqGyOH|1v#-M>2_cO^?_%DTYn z-O86Uko?l4axt~17uX5)Qb%b`ky)9d{1szI$rjiMGfX-TU-<_ou-3b?7Ghq|?XXJR zoR?ckSuX*O2h-1~mkNjYwL>D4ku9kIdKF``(IpD6c&Lkoa5>ALO&d!LVYMjwL&C(L z7W>J^L44qEV{6Hn21b&`m|9hTqt7k*aQPYKP%Xt2{x!7bcj9#_Ed!(t1ZcXL+k%{5Nhb zsD+$`{`l_M8&N_G1M7eWKw?tN3b*uef>+fFcktm>U5hY80p~PS%`$ZMvJ#)8jbf;u z_W~as&}O=GNcU?0xo%32ZMQ6a!}{sp?*^iFOLR0KferoSXCe%ayQQ+SNS-gpF`9YU z0=pYz(R96tFU~^pU)VFSsWz+s=p08IFD&ze2-|*YlE#mjz;y-H_yq5&sWOcgp4g@UifdMOjNRq4 z+euSP1klAbV3==2z4T0T&XfC!tS?vAyI{OuHO+#Z>|w>uLr`?_rzob;nfKVuL-)N^ z?D}MdlKBdfQH3^(e+zjj$4VS4&oGE_1X5Hgvlqj z7s@pcP$v+vWbkr7ZOuu+@ctL6Csw%Ni&9ar=n63Z^mBd2gslg$npkwgp2cdj=PeR) zefL{MBiW_*!|PBiiin&~1I=4v*%G;y9QoWFO*VF}J>zpOwBdN?&+)Y@sHXc)?=$gp z!qd#eAbC6FB(Cc~*6wG3)j};ogdSot;wLp7cb0#Apcp&YRqM7BWG}nOhb7)0`GstZ zUs7|Uv5Pu@^G+kO}+{IIE!jqscHH|5qIQscx%{@^D7m!Ul?E_E7;^^rR6+#0f=f{-ZsDO&y7G z8YS?HgB$1V0xY7K$x$lOApWX$J5X0;$%yIKODPq1_C~Jb&RyDwCp4Q4-`gSW&i*H diff --git a/internal/website/public/img/logger.png b/internal/website/public/img/logger.png deleted file mode 100644 index 0efc81e2f1b7660d2c6d5b50812921d77c845b58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13072 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�Ul89#6FtXybXQrsiK#6ajyqolN)8 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 diff --git a/internal/website/public/img/logger/devtools_verbose.png b/internal/website/public/img/logger/devtools_verbose.png deleted file mode 100644 index 8a7fcaa252cd9fcf1cba27cf7479b6d9e32b6779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18106 zcmdtK30PA3-!_glW|`VFEta`VQIg^$vlUCNWP`Tv-*f?g2JK_%7qSlyNIi_Vw zWVs<=D!2lcrR9dDfVq(=f}r98q9FP|S~I`jbNzqM^Ip&UKF|BU*L$w3f~&(h-{pKi zpZjy)_xIdBf6iWARZA5F0;!)mdF&zx^o;`eJhXNV@b}`u%Nf8wO2~`$wjg4=_9*b> z8=s?RkAgri($+6rRtCPW3qI+J1c5Xfmj5U<1r`1d0-b=II(F1C5;or7U+(P!otQ$3 z$d%FQns3+Rer&wCXPsHrAI1qIZMF_;ze_MU|KccY?8)ohIjeTPaNK=jm-@ZepdVq+ zR8Jc?L3ItDrZ`bFp-t1^C+&JK&gC+BAERV!FWQ(jyDx@NP1nS_A=^wwwt2OarP|ve zBLW4TSUvJ+3(zp&i1(g*rAaIOLA?6Q_pLWOHhlSXX`3zh%O}svYnM9=9PtSct;Mx7 z?UpWB#h8yvn)PgVPm+xocZF)+7u=wZPeYG+;iWVwwJo$(IuIjm)OU^Z-{Hk~du$mI zC`k#5^%_rGnoG-;n2o=_y$MfWXrX(cM}EfoJ}9u)jr!f%j7n+V(2z7BXEKp#1Qv-9 zx^mmeL>1jgPsxYV#)MpqZ1jqGqdWmVm%xN8m~aAZzAcD2bB__XID_vEqNAbV<775* zKrsQ*c+8M)}S@iHhkAO{wqJCQ$5Jtdj7>yx$L#dlCPw-V96M# zx6;5}+65h=!*Mf*UEuN_wzJ;CCzWijLmkgroKu~CwszI~vDUb>=} z8Yen8n8Ru&r!mkINMUH&h4HCM`guDDL$fcP+S zsRr5}$M_KpYw4IWCT>zCuA`*$!xoylwQs?YBl{>k1NWrISud(?c61a>?pGbFfbYBm zL-umX?Oh#=F6aGcHYGR;NE0oS#iGa@qrB~7<1Yz*$L8d)e_Flqv z&d9r}BmbOiOvH?4Vtge(gJ*sg>Wj5kS%~Gy^togdKSD^TB(i%|72<%iNtneRyr7WS zI4Ptr3Wf1!%>S^nA*5KJQ1*scO}&oBmgTFBHwJgJn(hDGSTy$02MbjQNQ;7K4{|EM z8>g?(jppMd-C;T6CQHBhA8f(qXqi}cqhrHSeBE*I_Zo^ihSDQDi-g@Z_1ix<%65ia zx@w2RN>kP;Qe{G_7Rh#}V%kX~RhFt}ut|FFrGt8H3Eq&(#$?36_xDZ5R3h(|3ZLNM zh&uxK(1*E1VnY_=H@;hPPv~4$FQH~-L7ZV~%I5bMOKu-#qCVx14JE@DK3lAvffJm9 z^GV`j;&l`2wIilwg1w+Fm+MYMNyRJc1WzY*#pcZhN5n^F@y22YaI^u$%TXuA0q!;1 zdCO}QTkEj4xb71#ZjqOb+PX=WV-*#u*n1UUl5Cr*RXBcF+%nlFPs|m!m?hcLiN8QZ zWH=X!nmw&RB^+1%^QT*Wqm~1gom_Shrqyc80$sq-@YQ5zK5s{Sl|MbzK-?+EF`kN$ z2c>xyet44gN-y#S>lJPg*}m4!9_OXU8MXxYA{P!*!9?>hnfiJv~SU?9oIh(?@5NwBN0esv_+J_X@G^dt%2qi>)#UV_J1228vmYmfA z5r8ipNxWXBHm?07MO_gVYhzeA1oXkd74GRGFY)R^BxWRSl=;Hh^d=vT`!&}O<#cw? zM>7YP=LGS1xeIEFuJ-)gtCm;!E=|N4=GitJc9xq31(SL^eBPtb1{p%x^q(s^!81^! zYqRZ-D*kSIm5XQT%jrqj*MNgR@UFO}<4R_V$Xv$9McqQIKsXb8K!7a*O{V*=w6zVKAxOMS+?z9%jV)&;d z=uewvOs}@4s|V0HEQdYxbMTJPC901z!|-OQXG`3tEsBE_dD-TPb&1hVXl3N~ zX$g9(9X78Trns{*Yuy#N4#>wumXw$mFG^eFr_HjOEBiuQWSn7qQ}Qb-Yx4q98>JZ= zEhs|mD9#HeB;Js#D}Yh&jCO~AWV%7er3o0V7JcyiJITDy4!6$AT(Phw^{H1Fb*)0< zwoy3xgXoFaE^mXSo#CAVy+timi@DI?$jx0+%=M<0mAH`M`kvBI zvLW`Vm5ar^wBKWBFxy?jo2Lr;?@t#CE z;^1i2@0PC>ZysiS?eK%1xjvpv<$!ZX!FdScs`a|Uf;eU`P9kL9oXMfn;K zMCsJPJW7mqKayeX5^H9k(qUX>jYd~4Ds5ClpsCVAY?x(h2LxScoFl#PP0E+H-ei%Y z|6sraoazg}*9Vhu3zAQCc`dznKl=t)Z*eloaw%&~>cF`q%*yE?5b*?G<;%wdYF{A- zsPy2?um4^Ds>F_7Nmq>HZDgkn316`qh{7n;S8SG%XTL(bZkvDn;M*@40t8xb_a9&R zKRU5qqZWWM&MS~7&1(8&x%QB?LfnZDLJQqv#5OIE$46esrZeevF2sQG7K`5NU!kRE zk`4fuS|9$Lw6%gM6x18v_$7et8SMVoy~YmO(xZ+HJ7A-i>Q`?lfkh4`Nbtgn*?{$5 z5ox@R*&blka@fxOCs-R*U>fy)Q4|OH+o?hY4;zP(Og3x~k!Jw7n4-~gDAm8$ZwE?^ z5Z{4{4TSnVDR9ZT(f$TSF%SOnE9mXMZ1*yK*5`;bJ-= z68{KvAra0KAsiC{veh9%%fSTzE)iF=*j>E4O}@3P-mQO)tEK;5F0r$xPV$F;hPy6oc z~hM1|V-?`azK`!R793uVfUV6h%?vq$J^?*$sA8-1*t;i!8 zkk8EXr+cB^7qP?XvDXQ@#->@wtOwfD0S4l9ZA4-qTA|Ozv!9@Jgi{}-6q`Yxzgpas zb)BG9W)5;V$cp~$+~rJL;{?xvq;cD?Pi1Ldd#-iNn{;3KbFhD; zrIbplIw*d%myr_a%uB0PpseQYE^XA2W55M3S&e)Ls^8qY3qToxw0_)&11g|1KOf4xnp+h%`azc(#LP~XS&rE# zfrixEcKNhFc7@hOzA#U_I{w7;ChNN>HPENXkVYpY$=vV<@ea2GMgG}#;0vD$mddKdp>^ z&u9n9w7TNzcZHj7Mt+#NS+MT-reysT8Euv)HNWiVE_Zb9oqX113WJ21o2&xm3$sth zVp*|wr6RWiBabr@^4*ybLJV~z-lNL#k)>5;SJXG4U~$dJJ)FE&jbQG#qh_g+wQZhO zj7*ZXN*Ep65-S>?ne`X6ASWF3%p+JcC0>&YMIkjgV+~yMkpog2P`7h?mEVMEL5_yP z?eOB(4Bj&z)cwNr3>fk^Joi!I<`3SrsL)MPl9zms@C9!*s2fYGeqA^B_RWb0%$OLx zej%DpLfR(_Xfgp_82#$AGKkUwfC$kz3ij5#K_ENMowxCYql2Fi_a`n~+NQ@SH}*@3G)4my-1XNgu}+7dGa!VL@oz3OAI&k(A=G@w=0TuYpEG=) z8WpxY5(@NQQ{eGw-m8@gMWM9;dc+?~jQag5<}S_D9tyvN?|;0%%$hm1R8eeIAWnHX zF1=u>1tEHuwK>N`X&42ign(zB|Am1|1HRn2X;DbcEfmuz1?%3XpU20J9UH=kC8ROZ zMN7%j2Vf!fLihzSAIHE%CQ{~>0Gq&tnF**lA}-v%Y_(K zol{?vE~ufUu@M9n&=D;(@B~juXoLW|%Y4V9UA$W~^QO>&N%>fwmR7^JY5N$bc#i`{ zvOK^He6Ej^oc}bGIkXQ9s%=~eT@^Dp>>l-gv2b|s_L=kx&9|?#4j0^RY4W23=>V@+ zS+wq5Q#DNnJor2FAMaHHWp@ILJNL0PxNRTd_)XF1NK8zQN(Di`R;cih%tSJ_7~rLG zZ0~cR`0;}kdy0_9s0BQ0&ddqoMuGM{Z&dC*e@2%N>)pJ6>$b#Ub3wN;di1nQ#Y1E< z%!zJu?Gh>dDz>>X5kqX!Ugya^GE`j6ejIKi-qb(ozKLV>ewan>0EXq~D?k8#vVP_* z)9-HNrN+b?puZ+Hd95OLh{ISa>e+L~19Z@MD*_b1FUy`7?uf(c&V5?$_uDW1zSRNQ z{Mh%y$2a=iLzgG~JlBD0CSWNf8o^e<&?5=jD5LcCy-8-!P=cS z9zfc;4g`YIbvH4}n+^cC{5$cS{a(C3%To#DV3G;6Z#fb8ufoA!ezP8w^~c{W+_YAq zy5|z8-m&$^m9YVVvVY;b9DE7HpWpt(u&UnZ2l4(I zqg%GmwLAk1w0q5JLt(00OdFBBcId{&RrMEy*&aU^3RDTQt^11c$}sk-ks}YaWGV9p zK%e%Wd1x>0!p;^QNV7}@h#2U86?Aof@p@40tqu~u=6lr)@v(=wb2GG98KYPAi3dg| z9z{jwyNDc4a!D$u*C14TVKL)mW?q_2P2g#+rZKF~5*85jLnILFqpAr9%GH<^gcrA3 zX6le}I;58VM4`9*V$`fYJMKCaD(^u zRAL#c>VG<$<00R=k1$z0{X?mQY-FfLE{vL@R1#XmH=hh3dXrBW#&#va`cFXD77<%^ zH$9`ls6!N#PFmg;N5M8dxMm^2q$({Mv#;r11s$&jqO=|5ZR{^V(OJ}Tr$DqcSO;(Z z3fUm4bNuff`fZ+>`(etZeKF?6gXade7@mJRgG+L15miTIaPEevJG(ZqJ z&hR{Q=!%X==t{B^q66UGcI@NmswKB3bYZG=zPyXlgC2dJIZMQ+NqHZbJdDkHP>U&m z+K-=uM{<8TplR9@UO1AFJA0c#HnuYnN##BH0-swhO= z0RN-jJgC!*&pe$PgEIF0Y(uxFLDgY37j#KX>CMMi(n*;|CD*fyzdg-V)J%GMAC> zWaPICtp9F?^}+!ROu``-zJB#yzjwzoq}yCQ6RO(3ZBEHDEV6B%C3GrGA_PF;k+$(vvn3TIQzdDr^F zqh_B^v$O{b*13DVMe=)9Kuzm#@b{>rZc5IH5YwvrS_k$WY@ROOa>Z%F9@XUxkMSzZ zQS18ss&>*AnRoXCulL~(TyyQm^NO)&nKed|y2A=r(4|y!JFsD}z;+*b>&0qNODLI} zkVBz%H!A{nX?j%$d<>jrJHfDGykMK#`Z{MY^vh6t>%ONF2O1Dj9BV5P-PMI;u%kw= zviZl}wndLzv@fO*B75$vN2o3*Zvdrk`V#2YwshF{Za?6?cUZPvn|%G*p*`YF8F&~w z-J3wGE%ZQ@=QfmBvH#?KY#J)@(gv8z9ySKQQ)Wvq-eTV!$qbV*3iM=v!wZ;!%Q2+fCPO<&XjAX z3!ho6p$e$-w`ko6J?3_Y4Is+PKcikt$Le^a1M=mVNlBU*j9O}oDS$b#YV;76qA3X) zq5CfM9W8M}L@+5#vxs0JSH}+}0&%bQdyUS8-(A%+Hh;hG>WqVr>dnn-yi12C_xi#q zA}Q2^w0|2iYQI=01aqrT&N5Z|TL;}K#^w*S-ZJZnFdv6%A*J#0ILpQ$krgRMu6fF8Q^%)TJZx}!pma*sdI zjQBvVZ!s&gYRZ=qlykd~<8I&k#kp(;`DYi++!8eq1A@OO!X>8&Pg%?hD|`FVK*^vvetjljMhnfG5Cq-2ZiS#_P@6BJH2!O zq}|$wX{|8+M7`k+Nse z0jPBg;>RSCzr&}9$3SdTDZkxeOfQS>UXOo%6C)7@0OeJ<@-kilfWaRDxd42qz4ku` z7PcVQE#s$+p!z-E%C?*-1uEgcA&}X%4pN8m{5=Fm9aMkqZ+!B#P+e9O59t2=bH|k; zMIRs?>OcSYoO(9rbRc!GOF$P{RRgdl6Fp22`LpckdU2h#&P&nL?Ns4hD$@V@%c ztmkGj!RKj7F^-ePSOrRb)fF{tPl{m+xV@sDY<)5K7ctnjOv8wwPBZ%g1inIZKsQ=V z528;qV&oNPCsja&0C>U7=3{BU)v`v{D+I5OCD%f7s$vvwLZgS+VLY4k+*mA>f5jNu zbGLcQ{l?&Vnbn|0Qv#9E5i1b>xvT<|BED2WmOErQQG(Mh%CS8xn+$I#sD6r7d8y?| z@%{>d`?Esg)=233tfAli_=iWzLGgJ9fk@>L*HchtHE~2sRS`ze7IRn7m)4hxraci8 zT?~Q9MsI^fEd@(;im~dTu?+C^ls*gh1V)7@;pn;twr?{ywlIKLqR6^^umf_fsW{jI zi8{ob{qxiNacs0%)PcAmi&DH!8kn$4UHFMfL^_c?d4HOhW{@~jXha9XgD5p;RAHT?*xRhqd>?C( zqy;#{YS8JyznB2y8!u`&J00NwC9~hoDhZ+STKm(!*8pxoJz=WOmG#MM<|3IcrG+%p zaB_hHKt7$_pNt!hRN}n)X#+yZe&fZ40h5mfX)cNlxwKe?6)XTx6b|!n0pmN6Iv~$L zWC8{@EKYFIcpZ8nFCfVe#`ncub(jCNc?Lr#1r%cvBT*hiEXwi0dWy`Zi7z!@WBjS^ z$tG#Kyrxj6QW?}c@nq&C6<(><-+*3{^gXGG7>M+P+Itg476db)H8u6L1Xaho<_2rp z-4m{0ZS%uEof2D*s(?<9taQN8AWy%OP@+vg>q1PsBr9vPT&YqPw zuJQ9C+GR8iho`#qYI*69dbbHygETrXBx2kax{jx5IvBKs8s4po{}668SH}tXy&5Lm zR@Og8!h1kgjm$H>1lwXKdN`;vSXP#jr+eFWnfgjFMoEgxSc-0W*Ezfga5{tgF>^$v zZIf#*(hHw{&PfCv0L-FVRhj&%|jbyI94$p?j8`yNrNsmcIq0XYnN;0 zY;W|Y7w75Qif^9a0vfZ6osih0tBgf7U}=F12S%Y z)9RK9`>1!c2=TD#&N@YC-Nb6(R*!Mmtw&I}Ki$?BdBl5H_e{S!*9-IK0&p++MIXig zuv}dViWb_x|{mIG}llz+L)^ zi}*BF-^ZT6$I;iv4yF0rHtza^oVL9uhU1BB+EU~au@FuXy8I6e!?>&CPeEM z72|PmY96Coa?oy=unLM4pA0K&jp= z>!-B2+#IP@f6Q{o!;Rx&A_wAT28vuV$P-OH?J==v&LjIWk1`TY9)nO5`T82T1=I&M;_IVXbid-#=A#+HtJt)|D*oF;t1-z!R07Nhe3D-f9W9zERhueH z?U@YuX^(j3NFSx)!wVdIHr=ZPs{+!_06^f>Zv~kCcU&Na+3rSjZrs{JqdiKV*=KX?N4i!(M$_Lk$mMKoaA&%=Du~=)Y?+j&p`!#+tW{7p z;Pm35%hdW`xes7W#FEa1Xg_@W9xmH;UTZ(dzw+!&%zOs30d~poM=>5Av`f6YbpNse z$iaMty8*;tB~VAg-+1D`h#vWuq|5&s6p0BqPWS1!vyNrV>;bH1yj|zv%p)BRcQbp* z?HkSw&@gR^Q%VmS4v^owXl9aJ)D?}fTS38_^V@eFhQ_oB^x_08YLxBL>SIg0b_+jE z_kBX7ucUl{82f{`{&V~&z`uO#EeN>&EDsR#Jl#`VORQsu)Ls19769`B&AJ*QeSO=V zMIuk!pFc&5R=5F<3EB#30kHiwY$U8hF+IiRtz(-Tg`pEi9N-0gflTFi=rO)a81%05 z)n@_Y4z8>>vj7|o&XVn6s}#_qc*vjJ&bR@ah>1Sf{AgzZ`)E1XS=wQ`@6m2jM8Bmwmld&r{o>IstHTTJ?tyL` zBw8;*j~>#Q5`%g+`w$@aC#p{dRC$PyxglV}G|?ndxATZ8Oa!rGuK_){2^2%?6@I}P z^4eGBY6>6&+~NhdUCUW*rR*4}Z&%}74^RW_0v2gVS9K%cB}kx@pCxDPbPp(pW$vqK zr>CAm$5^>;0F4~{zk|cjN%hXra`sj@W9|G-0&>T;KKtj$_no)4=Q3v;-OWdOk_7w4 z`WRKUT{9acc#~)=Amn^HsN>BqcmsioBTb%{9bm6|w|;K`?>a-?f8v3VoVpVzjcb}E zyFGK^*7>O~c|--YN$i`l9YkS1#&J6SDx(qoX;jE~#XlxNVELUWTZr|QTesLlrFiTy zzhZ3h^PLuqlRe}ne_cv*QMwC^IsaI>cCl6Z>4qMT?aSA0qz z8x_S+v=n#7)_EhpD=to znv$)kwvvBXIFA*dCfK+keGp%XA+~bJ_nGh*0%U0vjrKEcD8U6I&H$;lwB}W%Gsn5X zIK>6hgG#`l&Sh@!_b|^^gBsV1iy8I=5qX<#Acb zu>j8%z_X^&g4%Yu8hvDUD5$1uBo}z?(Se}gzU7BS^R-eI{k~hno&;yr9>;u_gtLS= z_x7gj)nu(wR0x%Lu$4>bU|h?RJ0Hvs*S^a&|2>ChwwrW(|E<$#_V-0P8O)gy>4Cs9k?e&xH+2LOADr^~W^W0@1^9sy*A(jEVXC-A(k3_9~) zqH{p+>Q&G7gFxEb{x@<9|AMhdeY?UMSaPiC(ZfTKLoHZqY09!T;!Mh28mI}xYiLZg zI>6oFoTa)sI2C)XqPf&Pzx~I`fnYxgCnDEFF*(sstRF4#6z_{K@_&kq_ZK4hJVFi`V zTWm*p)mu)CZd)qhg%b|{-u%K&yKvOB(j8ShO!iN4V4t{_BkW=j2lQ%e(rAoJ=wgu~ zRj0Qg$SCAV!S}|Mh#V0%wn=6xE$|7X#u)dV-+@NGhyzFW*E$<>Fl;Am3c&9+BbOdq zZH*gP=2Vzz^wCKf$F#<*=7gyjxwnwr*KScy$+Acb=4`V^7Lm@bAOPaukesaw6bL54 z;t@5^g_%R9;&R+jVlyfg%9WW%xCXML?M4>R@8=ZXK!M*;_*t^r9G+|3R&9`snijId z;#`wYcD@%~+CxXdl5X75>-A~Kce&3SSYhLA?oxDC@Xa`Q)CGU!g zo0c$YS0l89i&aIfnssp+2f ziTC&Kx10m$i?#a)I#3F;m&qe}8j3D#`vqQ)0r*_vR*~6=)X(3&{=&nbfU$~f=nzE@ zbZ(F@YJiZ)m3nd9pP#utR@6zEEo$vmRq+_u^39wu?*7p`wx9$hJ^5Itkm8t&yVm0z zvwiE>;jH4p@i2Pb9zcm2JI^ohYP_?l7a#P(>;&hBs)QCiE9+rX= z$Pa{-*dWpd6_p+us~4iG(o_Oz3&=q;H{N)e8*#CJS#V;Mi!8!Yj*b`C!G^kO%ogV- zr|OL?_*S1e1uW5t&$Ow=BTAlMy*-vXGVf0g(g@|%8X98Q`gygVwY86I?pOtv{M_~S z;7jiIAG%5}pL97gxafx7&1N8Qr1@@>xoFuDDG8%67dQ=d+Q3(*N#B7L*^&^{<9Xy=dAeZlwpOh1*n?_YuyLsD zx}l10bs^w<+-oeZfK(9Bex2jdbPn6hiIWVbl7>PRC3$5YrA(>$2|B|hQi-RWQ-$rT z+-IYYEgz*eS$D-zjXqceNe77f3etdTdmHoR~dZ~Y%cRyzuWjpMb3H~ zQN#{cBHJQyg;Qat$46l#Sr%)swX+dA<);XXyPLR+wKf}au*qmho3gfLqodA zrJa=C0P-Lj9In^_iK#jh+6oK1!oRO5PR(8Wev?)PAThp024@p6X3v?}u8=4--8dGz zYPzq)Mm>G}InhKdgXeQ^oX1E7)FQuKQWSJ(!3x+2001%6RY2gx1;JY$FOQ2k-|7Pj zzRiHaG0rGT73gNl*MJV(`(n{}5%)H43vuu3^VKj3X78o#0WbQkfGGw3x*|rmn`Zf}lw>hF9x0M;1z_hFCjb zc|;(j3xub~y|*zxL@Z$D>f97$n_ZnDvO8|z)lp|hhOrXa!;?bUa8+1IyI~V)oF)2| zz4+{>Bo-mmpZ=c{1+za0Ak!937J7y!t#zp+NUJxa62|`8RN&P z2&$I>JY!wAGQdkr?2yxgK=t2!p|HZu#G6!Bt0p~5+^w<7apadLHiSI1&49Lc6`C&k zY4iCi53jehHJR-E3LS}Gbbwvj> z-Q2#ZKGO^H@a=7)^aL^ADQ9T9Zm$V5oGeQ@z<4o=MqJaEcnDXSkepI|N-P@v^JWcE zu^;K&DCUg+lterwu_#XQ2RGdv7kb2^#l>Z~DOV1PFZ1uu6ibH6v@3}L!iZnc-aDf1 z%tz}C&#a-m>5953Z{(tX8lfqHP7nX3eK1m^kJ{{ct#p4?nRB}k2o7JhYW0hZNGhJ8u2 z#>!Lk%%iz)UmfN9FPq{&9UQ;Alc4y|R)zkJur26R$uz(h8du){BpWHc+vN03|< zLy-Pxrca))=ztbl_s#`%mQl{Ypy^&%4z>`4e`~VwVLh%i}DV_Qr0bkK+LQ+ zk6tDA5m5l8S#$9H=ZV{!Dz*Ow{0A?}cu=8He}^amrSRZWS5JQ_Q&yn&jepirzmTe- zvtu9et84(s+gxS@n4_1yUw8Sc`hfTA=9VCS4JP~3@tF%r7y*P=hz!Wk)3-~G*fA4h zN-_LY2zbG&g6b~wBdkTEN$5D0_y)j>7Y6;-npvQ)5WmJs|1AajZ*|nzzbMcF_AO&r zT~$O~Pp+0#af($MF$51!doere<&isnyXS-HJ7k;w?&p7_dqQYSh!_pn``)aupilKT zKAV8RzM;@q&l7N4O^pX;DX53J-*&|W#Jn#|NRxHodkfd^WTF7iO&1#<(MKT;g;ZSs zRcB~OxQcALMtXr^%srC7ZHH|1aaiC4JvXU0B#N49!>G%(Ng|p!qOl37OrLR+6*e^O zJvK=`my#V=_uFH_Ot`C|%TiziHyX?P7@WMC^gx$>0_-owV*E>|iHNsdnzDV4&B4usj~e!tlUK#-qZm|NV+n>I{C+cHzJN`$df zCglGH7;CUHeJvd)wT=Ekxjq|t^6r{Dr}K(m3(kGHkiQxmrAr8j(bfgFzxkVow-k){ z=@}N|y<%fI=9OJTKi+6usEbXdwPUbNkA%RM3qbh3pZxTJhhr4nD79v5cu#mO!K_ZC zPojsD3^PxqeoSsxgOFs?w#}P1K><>0U^$bKUm;7kFiLwl#E@yZl0XOC0_pK;*$maxz!a7m;+u1K{ zEmTgt@x@uD4oz~_vlw}jEY*&~Yp(zw#l*a{902*)@IDbxkvRg+K7hdO_!Dy7*Ro+Z z70`KovP?Gz&TmukhiV6-5`qBSxL;eSS}(}b{%!u~Q9WGMYiguC2h;!SpQDDL_3yDb&t zZ!#!of4ssu$K!m|y$sxG_A2Avx6|6$1C?7NFEYqR-_E#kBO8moTFv}87n?E_?zt}3 zjID5p9-Nfd^L7@g_L0{9hHVe{1huddXcCdZLZ5GP54KeEYIr&H>&xdv$eLUYgS2Vn>fqQ`9a)>9W-MVE znm6OCoO#vwafA*|@4=^KW7>RV3LTdlS>`4TyE|%f5C>6u=6Pt@-cqy4z}g^Tlo7 zjUtR8jNJ7A#JF;F>wVq%2KwjsS}c3*R*tQS|JX8iJP8BrcZV*!!Wh*^9&vAN@Zc-K zOBKDk&sj#Ky6I*bV0KwK?7e+#>G1gsxGPmk6$LyX@9nCMocb&fk9G>B(aac?xZdw% zMb>2e)be(!(Bh$ep|IR=sJJ2~S3>>tojq3xIcTxGb{ZsyRaSNYd#02Zd_n zeHu%VAHKd0B)bftqOE4Ty>5&@Th2L`<$j-M4q^5f-oa0@V z&eEF$W);~OjlFWg$_Rr%@)r&`Y(;a;-ufArz@I^Xve-y@E(MW*d0J}JTZqzL@XqOh z=&V=z{>%CK-48oNg@APRvK`QV=bk(3e7QWR7vROHit!-$*9Y@b;sv-P gw8;eHl105>Yn}PaHf_Kz77*yv@pH$Bww~AjKZ)Gp`Tzg` diff --git a/internal/website/public/img/production_ready.png b/internal/website/public/img/production_ready.png deleted file mode 100644 index 989af4c7bf2a0afc350b1aee9d529962f5134dae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63566 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�Hz+;450EXu??$%BXqv6 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

=^2ZCXun? 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

d*n-skuIfufvyGs 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 BtRnyb diff --git a/internal/website/public/img/react-key-warning.png b/internal/website/public/img/react-key-warning.png deleted file mode 100644 index adb74c853296fbace9ae423c7c39cf73ccc9170c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3476 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 diff --git a/internal/website/public/img/react.svg b/internal/website/public/img/react.svg deleted file mode 100644 index ea77a618d..000000000 --- a/internal/website/public/img/react.svg +++ /dev/null @@ -1,9 +0,0 @@ - - React Logo - - - - - - - diff --git a/internal/website/public/img/suspense-ssr.png b/internal/website/public/img/suspense-ssr.png deleted file mode 100644 index a8be9560992e8a9d6f7944d8db589fb4059c96ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6747 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 diff --git a/internal/website/public/locales/en/common.json b/internal/website/public/locales/en/common.json deleted file mode 100644 index 1dd64c715..000000000 --- a/internal/website/public/locales/en/common.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "greeting": "Hello!" -} diff --git a/internal/website/public/logo.png b/internal/website/public/logo.png deleted file mode 100644 index 337110c823e7905638ff1a7be430e4787b4d83f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23999 zcmZ6zby!qg^e8-lfJ%dulz>RL5<@E8NOwpKNOyO)G)M`8ba!|6(A_a~O2a+!{=WO& zd;b{bdCs1*_Nu*l6Cy7whW7gHYY+&8CLu1Y00P0Qfk1G4FOh&JGquEdz}G8ladkTo zh*0j|2hNwL=@amf&|XB%UeU_f-bvrq2;}7C#AIq|W@n&pZNy|{3rRWReG3A;14#&f zR&q`~SaM0#GK%LsS#dck-YY0Mx@a+4QN@n=5kN)%;!6j`ul`kzPH*3=^}yfnxQgK| zH@Nl+5x|inTy%k-39zvR-@Vcw{PLI2a0T3)Q@fW_aKv{^Cc)w_3zbq%)70L%J0;7! z;}@VyD^VP^CG}NE>q4oy(G2aNQenV5gCNoGu6&r3fG9}P<}~?dBjin%TeNdL{mQZq zIke_ya6N|fM%dZ~mfjFN*gD1<^5?`U4A57#Dd2Z+4IXX_wS42DR1@D!I`>E;Vviuq z>|?#{k7w*3%8gTybcw)I+iL=AsHHJtM|4z3FJZ0pZ*+R{w=#|s#sm8?L*b=7K+Jk5 zB4%L}tct=lW)3iNbi1Lf`9oGkR+wsRmQ7^dKR7=DIDA?oNVq8|l$Le==8a|nQ}v^U zGZEF@1?)soX}@yuz^BfC0FYY_8hW(W+$n$j3SZw7s=Ol1Nc+L66?(H)Dhy+vQqnp4 z@D25UD3CNj{ormX;2BC!AvM$_~+!wK@SL+mi$^L#e{lCq9rs8qKLW9=}Y6 zR=tNghTK@=Avxji7_ie6C9rIKEk$HYiB%iEYA6nYs|rd`kjzh)Kq>lYQ&9Guky0(4 zrf4LGuL_{y^1X)MrM0qCOL|(G&vM}XXBY$i@Bdcb04ws(D&!wJs{Tn*7`9C36_V>Hoa)ma$A>agDi^ zkik3?dr++&s*Ww=WZ70x0PGwwfgEbt*k?7Y_Yx zj{9BT!Sg?OiMvEKVm3FnjW<6^XGdP*VRMUu8 zy;u4yYj$R5aC8xD?ob!#f4`1L)zG7wOYWe9r=wyl>N0soHY6KSC59#G?U5@zvtEiq zMYt|F3M}#;TV61h#dx2f`{N?6#YF}egRIY-R%)zj+j{{B6!dto&QiN|=P^(Dap^zYcYY(PAfNbJJSP0l zF^0}aH%D!N9pHcy_}|WHf4Vym%{9x01;kP4r?8$uPO4X#m>?%I*QQ|HgdT?Lkw+V3 zpXW_xKBEe!q1PORr$VRmtmZkKjAft`_!{}D8X9bN5yQp=d(tVpXLd`xR{0CSJI!-5G|`JQ=t9) zkEKeZ;~TGw{ZG<*kOS;+W%auH zQ_vvl0RxOdlFIj=tn(*hD-iL#&bl#u5p%vS3@40aDY5-WBMGgl9?9cbN_z($U3qvs zeVPdEt7q;uF&n*R_@4tf)ghU$_)MQm;topDgA)S=>IDQ}tiRt+Bz?3{N#R+JXYWVx z7@G7_T61W$zVW1%2E;4iKcDjfOWHG+9~e;_Go8EME!pRNE1Ks zyi-3mb6K5xeZ+vge$vu60Yb*2xKPSx-m`VRW?+K&g$@T`acX?2F_YMmrz81~nv!gM zwf}wiXyb*ScZs1iMa1)am7y7nA#WPDCN*6rnUC?z`FOQg%w;2QRIub}P4#o)oKlZ6 zal?~eKd<4czM?PtKkaEoo=u#>(z6w$d&E}IJ5A)+6s0IOdO=T#HL5Dv{cMHuuS3iL zAv-s!Y7Wt{ceOk7tJ22vKBLjV%=ABEgZ!!`Z^cuQyu|!(p+plA@BcrC>$u{yTa3>u z;8LmoRvg*1jM>Zq7D(d!w@{)8EHpD!4zDW+Ez*DWiBnj9X7%1WSV`}cuuS$b$z+qRClaL*{RhP|-nuJ+!M zyh?%Y(=$_DTd#2C7Vyl^F`ylQvWh$dlO+eOo^3gvlk1kJVKKb74Y#MsQTqPReB|4U z4QIGiMu`w20)oz2A9h%@_M5V8x=yUD20RX3vHa%pr;QvTnjBY-e|t-Eg3W-xTn3GE zYad9*ucJzFB_LlV^9{>#5NL9sek(hEqZF<7=)iA~7|WCzvx>1A_u5XgtYr*L-!E$6 zSwzHleJkg!>oe{h*6)RFu^GXGW`_-Z9k$(GO}@koUd&@v;R`o?H&{^1s0g|7i1#sn zI@R-BKK14AruMD(37+-JK1*%g_7La|6}{D9LIX+bax5Y>J;Z=@X*&Epdu!4qN z-FIoTIv2H~PaItlqR5Sr3uGb8ZOP_#laPgDg}`RcB*NKP#e~+%(b;xn9NrS_bvpy) zi|cr?+RQ~=oT^?P{}3dCPXBRG4~RzM3o3H>14|X|!4b#=MRR(74h^Fz#lJjW!SoAC zk^Khtp>C~#@Iy#L{`mH^ltJ_?)j>o0Jibt%?Aul=JJGRL+Cm!0l6SvB?Txu=it3-T zhJxE7gOug8MWrQ{4|pNrNE5;!LTLTSSDCi&iKiR{%&OI>x{a9gX*#r1p8#L%(=af9 z&`I=n#H7%wfo>izWq@f%3bOYm%T+hv4a3aWD`@WGk2VJ@p`y|UEYg7jaZfHrwY2(3wSIFF>D{v*zX+7Rc2;4UNW>KCG zy81ErzW>x{wh*DYLT8WDX7y|lnuP=t-n05!vdrD^Xfj-Fv6jGn(BP4C-W83Yhl}-8 zIyf>>*|~)aeLf3_Dst=Chn@!K*|!_jwZfVU+uq}ya^_zr(XUmv6&4ERwV?fOLN0G)BgeE>|3vh}T`> znJ`y6V$D_~5Hcr59y|%RN+BP|j>Mj6WgXH_YcE+B9kH8Mpw22YwS~>9t)wqqugd;| z!wtasG2lV{8r^F4G9Q3bbDa6;Di`DSQ3=t?T+t0Ywho*M11oRX>5{c0!vY4?g7#fCSt%A40hj}Rmo!W$He z^D$Pj+5;kM^M&?O(S@vuoXYI7m)^YygyliZrHnH;rII;VjAgu*GxYnAbY7iv<(V~4 zsJbgW#rK!nMi1YIsuLgP@K5$(rH+%zQ;_Dn`9E%yGQ}vrq{dEdQw3L&uslz$UVH;c z%I}(hAN);sl}5u==h!>*yExh`r}9F$hwTmpDc;j*Ryoo9$H+PrkIo!d<)hlAU&%h6 z6a*IX(z%;!dTBzFY|O()^3qyE&t0WOwb0V~A-O$QY=rb~qNroB z%$`8v6Egidpqh_zS=al=)Ml>9N}&+Q)2XI-8xGvj_I1L zZo5Qrh~jcKVnWa)S!v%~v+Yjjcun6Y;N1|`KWw>HYqes-q)&hB@m@9REZB<-w-+3D zIG|)#X5+w@+H3FNRB8@Xrv;Za5G8DK_Z$r~4G{1W_%8>__Y5_|(II4V5*Y1xlCdAr zx_T~`zGtI923SGq*xKTvF#I?mHtQe-K%yOaX>@ONaUk)8&G52XGDsrOBzt(i!h9)L zbH5`4NiX|6JKy!g?a;v=D}Gv%Y-(_m-q*2}RP}9k6)VTDNLkC$GziWtjk#eozXTfU zW_|>h(x~x19dh-m@cHAZLBB<+Kiw}l?Wd%25-cn$g8w`rAoOA^(Wg;G1NKqJbv5l! zz%gsY1jg_hw2>$>T+STz*+m#ES&*0dLb~Ks2toXZm>_y$@|d5yhmqNnNw-6 z`q6lZN3Qr*R8gjL2JYyqh{0$_v;N{1{g)_rC2&aM*4usTmsci~V|e|i@mE0pW4NHB z!QSes+s&NBy|q#`@tFZTrC~qkvX!sqd=*(1Gbc1*z9u|EuJ!hJ&2~a->_`^)Jwn@4 z5h~xUGVGm>QE;yWL@%vf0UxkJ*cR?b!(K%KI#(~-_+bnM8^paNwt9!@D`aYwd|OBB zg#tR!l{W#L>0>#&aRvnU%m7yRabHVXb4SJt# zf0E|J6Y%oWSubW1M=27v3z>e{sxGaX;#{F35plo|D!3wj>ONA|{2)bLpEUn~d*h~J zaTkwcCn^s4x+K&l@FvLd!Gs>x>2&|O5Z^T2@M{*rk#(kHp%pWi~@nZRna@GU!IE<7Z)WaBl?QJKzBGAOhv^P9S zYRBQJy{dYgQ`WV#ux!=_2ZgeWiY~1UWE?mfb)v#(b_%%dDV(lSc*vYcoPOBj;X=YS zQ`ich>WH_pa(A+mljvL8Ns5RTr@8_8y(3E3zO0|_F;1)B%S>7;<ZlQap-YP^j&;4e@Q z$w5>}wa{re+CJ&;8I{_R4-p>sZ9&u};)ARgLM6Nv6FH8ZO*b$W^C+87RjFRVITa7N zUSPq9Da0L-!h8@A2e&!Jjpg${1DWD{{rB_9KLztanZ*RI3>3m=w|L6}>pw&2b1GBI zZ|ZBwf~!SxC3fT`dYr9|ww;cnBcr98^rFd7$79R0?@E=BO?_~wk!KEx9c{h3TLrIg zk>UmY#Xq;kl!iALcbGxHj?7*xYC6>fEbud=3H9q`=`xJoA4Nd9V{$5TW@td3{ix;_ zFEaNC7|Yh5z4>XH*kc5tI#gZB7jypX7T3$=`ao*sN2F~}jVi|wbZfT?g0(AGYU}|C zxBp>SwkpX<5HL>2F!dR{0F@a}Vs%qBfAra}YtE^B|CSIek-+_J;V-#?W_*u4JwxFz z!Gz(>7(Cn8$OiS2edD?kB6|bbguyqfCRMr&+ZP5wciEetKKs}B`WWfHWi>ch0PyFk z+FJ6t6e}S6JgOV%D9H7)M~9_(aFYY11ZiW`o9GCX^VP>uK9_w6lxbM=aY1Co?OIFOT9UDo4XbyJk* zL%G)@!t+mzu9r`P;P>5djgI?BCU>kYzsf2)r4vRFDpsEhni?GT!>z^2B=&Sf4}L4( zRbydWkLNjhSuElw*}`RhJNpSh*`%NZg=E2gRTmCj0usWG+=c`yWj&``sHoZD6h#mJ z?2^rcp{=8o9$>s8j}UHf!oXte&GMcrZrmr=))&P?D7*NC(v+! z;&e+`P6w@$32Rc$NbCg1 z;(#7e|KJ};-(8wc=~_wm{3?Ax1~VY~*}tj@T72>DN4O16MA86+!|Qwj%8i|K+hf#A z&O=%M$GX3X^vXwrDiBXiTd91<Y+HzY4dPacLJBuCb$LMP-_!=UXUWuW{ZAhomm2M;9GcI}~J zH;xi(EvLjbqN5zi0JA)`y z(yGbkCrP5A=O8k~T8LkK??nAJg@Po9J{a>9f|L*!{`R`D#o(4KVPqoxpZ{+Dw%`yE zPkk)y39)^RkH&b{QC7$__hZq9`JivQ`2nM~@>mXaByI$XYbY%uI`(vY8GpY~f32Yg zmUGj2#mm;lQJ3+`3GSuNN!Y>y#?~wMzKX+BJ_`Yr;bCT-!IHZelb73fuQM{9?8Z^) zjIz(DKe47H6yFHb;isq3T*u z2k&jBK?Z)giozU3>e1zUX9VwoCs^v(Ivd-K3zGMu-g|uA1`m6Gx(Viu^w+iHaP^gU zNX1i2v$r2?0hB%BN^)lx6~6ItXebv+mgw>r(J0^&>H_X&iAuMdvjq)0HC5OcYl~by z5Zm2-_(ntV5f^RW<9Li-)cNRbxCL|3ouTdPp=)xXPu$%uPaL;DUrFg}=5pvXvaTtS zuv6a;2}-%tiQ=}dym4E87ex!pNgp%@>S@mObE$Ih=t&@@!~P0kazyIikJDN z5c0Qu4>fW3BmrUN>>|I`ZkFFoYA(+wqt3kj;y72!#v$_SOt>z$=ki6=3p?K@IC-tB zL(H!R{U$vt}h6rpY5B4>NC1tzmksMtP5z8&|6)5-toGLS#TOf1%T^<7E z2KxrTt$1xmmRw=IO@fdcK1-fPt>b$`Xn|vy{1^s@6U0>I(Q=)7M5(CDQ8CKr$4u7D z$TS+3`-XmxF{8TLe6meWT8m`^xxV{Gf*UIdl|7}kT3?jQm5Ox<;g>8}4jFf$u6}(>T$sFQ0nuE^u!#>Z@D5=56&%3*HlyyQTPrrHt{Rn{E>0^LchPIOD@dp5UHKI zm*|GbPj2fL6Hl4ui{6w_ee4mIsMec-m2EVp#za(yhVB=H1@wedPZQ~>_3;1PF1wcE z&P}0ppS-qbYu4Qd59b~X4>+&y<`sK^ri?3GT{7h`)JGrtgh;(HxrE=mIadqdz#O7* zU+uHSzi?X?zzJ__scsAu>tw8z*r|J$b=%Y;qWh1EjO@;o#W_(~vRc=%t=|IQ?+zkJ z9!S}g7TlCt8-~kI2Z%;U{TQUKB%N&1;5Yvv`N=cS|&pZ*~@kHI@2wd zpm-wEg73tX9qxMgMPhsKAkJ!fz_z5pc^8k^PZ1}v&KL4Vm#Vsl>4E-6y5(psd=@6V8sEqUDS~( z*0bWiWtHRSJbqy9A~I<;dLi6e^p__cLNxQ}8WU@;*%fI2M2`tWa+-2+#a}}#dfX^% zwc&LZUcN43OdM&xKhpc0rwk68DSjH%AH zOisM4Ji=4u=Ts4i(slW$liaksbR$PrS0%W1%h_oi$W&IA$Q=AQB=uSv=w%g}J% z6i?=4pX8^}u#6Z!{o}o~-_2@T(MIT~DIPHVs=B?TkXo5Lb#0NUV_T`Px7n5UT_M`Y z0^8l|bd>C6;*b)svFwK5C&261PqR5Aw1Hr}J1<2HT1MfWKaL|zje3v^yncL*qHBdi zJ>ziI>gRpzz$x5W%#1IbHO@m-ifY@wuqAq&q_q$ZSGlX58hGlv;~DJ+WZNdaRb}BQhp_fL#oizO?0YjpfD@9;e)3N`ac2pe5EGl=388_x^ zkR^AxPeYlVjf0P+ftQqHtT|fC8kgYp0 ztfZ6vx^m8d3K^2BAvy)WPu#e?2%d6STn0`%3myrn%cZ}+mAG=n+elTn@5k{1JSPG$ zcXmNutl+uGC6{H<>@P$K+9%o}t{lv2hHwP2c{{nOTnC!qho6y=LO+?L0v=SA?R04n z6UL)2=j_n|k5Ptss9 zIkv`BUyoDiJhhxNJq;PtZh=0DtaT;6)b>-L01 z$M|YJ2`j53WgP!nRB}ZnQ)Ff#vWX)$fdYUXXrrZc{Kqo~=guR-A%@$qa|SJzx?=;F zqrNlSkco>48ap3T+6Kdoa&n6q_Nm^+?%C=b7dpu!VZ!yRF9-l|>GzLdb(RKU=aQxU z8ttuQMXjDm)HE9ybB;k?7fObCg9f;h@KJvCDNu*Cn*|ty-}mUKmPt1q{-K?E z9=n*8`T<5vSFZ8B!$&QJ(^w`XPk(GPy5VDzVCDY6KEcH&fP3|yJ`ef>y7HMz=XPju zz)~P6Kv%J+y$NDfj59n2$8ZnE(r5P}06_DNi>Kh4ML4fVi~tJXqr+pA4 zd+}TC^7_-vC`fNI;zq_NhF=R@Bg2=*jo4@$h5TTCY`w}3gJTX^>9L-hiBr&XIjL~q zhZhYs*1Kw+0s7q&=*4q(uPPTGWFdnv%?tV@QrmX_hF=NufrB~hpj^vW1ddxTqN=fX zlV5hBt3NTMZJ;7JS@LG6vRj!l|JW&ci7jL^TWf!o0I`MJ!;j+C?%sSr`b~YO6aoL^ zhaVA1H{`*^%*R2)L*@Y&O6aXfT_-9{RI33Fl8hAB?7|UnO0HLb!Wlvn&bG@AD@-BP zdeyTJ<(AE?OV^`H>G^zSp51FrY+UwDwkHSEQzk-cX<016glW*qnmVz%4Xnzr$e|2I z0A0`>U6O&_;z|Fx-)(ToJ+%khrC%w*4L*zj7DO5=YdxPcD72Mx>Y9YVyxG*Hw!~c4 zWGxa&6!a7+OqsB}iavv8WXW^xRn^u3i|84jrGj#Y8=*)35$RQFt&&&u>D1lU@rCwjpQ(#W%Oby#e&peN8h~0=FLDnk+k%-?&?U^X^i4cApvrL6+vu?)SVR3f zAJWLvv~@I>K_}l}#Hi_I#9KZ`{JDGE_(7mu+#qqjFT5Oes-?-iZ@f(q4xF_vV@>!C zvLU6*PQI8YZ52uQUEfAt!cf~&$55bz4Ot~w1*%J#1^iI%CWg3`!rMjltk9*PAUJag zpn-)+@$dn|OXQ;;JnLhde?SN8eX42CFT!K{9rB(v8&}U0D{11_3?pka?LU^S-D#JJmX&B z8LX7f?(X?S*UTuWqhERcMY)gv)jK)1AdzW;Uv7waI6bBwmzSJF@Ht?6qzBQacf>I(tDbc;>~`P%*|kzn4&jEp8Yy?o^w0UKhm6z_l=3bzN3#C5$hw3>CN|62C57FAXBjkjy6D@6_BE)kB zX?nHx2dn=mjp-)tWMxVS*E5sCV^wPTQI=U5IT9aq5Igh(>%y(2R0gab9Dwd! z8({E4=M~@dR>#T|((mKW;7%kbvByuJINVy=DApcSK}o;K81g0_-(+@Hu&eddpi4%U z#+2q4NL)bBLHEgU5B28+NQV?BmobFqj<*P0<2hEw6yCZ=DxfTLmat_MsWyJ3hGzHW z$)xh;1^sYBl(|CFg|mIXMk)mR7g#-#Ez+pOG+G?3Yl~j#e-ZI`ETcECYexAgxLYJ! z609qCM~Oif1H(XN?sGF)bYm?My}iv^hkd<~%y`T`8S=@sNb3oFft7|Uir}dI4&hSI zy~*17`IF+uPC^DxUu&Y`Bodqv>#suiCW{9XFoF9=O_L}MjeD8Py#EoR75iM-N$z@BPA~L zD!`0qGbT`_wPz5G;rN^OIK0!;Bb4&m<~6}S3W5KTrfx4&GC77j(@X%*qV(OpO%oBZ z++sexkz%a~{W6{wuM4&IV7oAQpcVeqeCnkTwZ` z*ZVCim*&;MJkT6BM2dGmki=I5`czIH){d+p$SBF=DthJQ+SqOab2FWqr6P^a?Gz}d z_3QbAyYQuo8u)6FC#ZOxyF}XHZ>lwA)KXqYO;Q(7C-|_mf)Cg$tLO`tJ*d<9TMF1M zrEz>K;dKp+ZZzJ~{ivvnW%Jz!8d-3t)uEB4!YttjqiNl@c00;lWLgx`dnfPzX2y1L z(kp5oL2rT#*;CgCt$V)QJ|y>_-<5_V|IM#20eZA9SR6B0B-#BpSv1vZ#ah}ZEBd`B!iH0`cQEZRj2($PW5xWd34Xhmj%@?$y4sdT`h?mNSUMV7%T!*8%nMj0- z*C68|@a*OXZmjTfzVT`30c`pNJ<{;C&@;+5H#SR z)}UGYy%*NFBMd1Eme_Qnkh)@n*W!$;m*GMH{jz*ixY<%@W3P1C!2$S6o-ZTKAKcfx zx*s=`fe{w^&u|4+FZ0F5c5e4nZpqWbrX?oy2_w}Fcq~cdKU%ETtKV({iIjK>9jOmJh2GYycJrmLHVQW@8F*X}RT_=n1Qq-xV-(jwnj#-!SX9FXEmHQAveLgH zMChw2B6o)P@eJ0Qg#*U?TCOcz`F{J0RUCl+t#LNj|!b1COKdwG{ z!Bhq!7z|d~vmBa&ryn-l-U;>sqt1LnOBnez($1ixN4Su9LCB!m^2>X}^*8eL8e*6) zNH|f7+5R$2RjIhuoyFg+2TRx4kLMR6USCB33In9>Z-*o^qDQFQucf80{S(vB53ZjJ zzGKMXk))4*Y<~2~9^J(W8`b*+bkRCJ*HA&;f?OYwI*>`2>|M%L3B>LpNajqB;2aMh zqlE;()(y4$5&aF18Tu7NpF|Y=gM8emLrqf}g#p8b@A}~pgcK6^?!AZ0$wyepmS&T! zNF@2`gQ_*7m6o#yIjPA$oWO_|@*1HA;Pk|D*!>HMK8Qo)`$ZDCKXCK+W(fhU&FZy0 zu`X%zKlVuQF`nZ#Q^U-cNb+$9HY=k%hylp2gVgHC>x8&EMfz(m+s1XmtO{CY@d4y; zhx+HK)5xKV;IIFbZQ*!BWzO1gBDO>9(W_?Ic%Qp87~Z=_JtBIkpDcknzDYLH2O(f^J4`nj2^3glQ*t6k z!ii{HrZtxH-t8q(LZOsDi7~SKdWIgwT8)|J_XW0WySz=Bx6sC);pP||pgf+hZq4?A z_B}M5s6cxfnIPrmmZd_FR#_j$*ok4J3lqG{c4q(z_DYm7_ww9{7k?K6-#%ggVA1hd z5HQsNdf{qh89xHDHhJnPp2$|r+bqB5Kh0mF0=X=9?%%^S(ysvCAekmDzF{*d{!D)hy8H(kUQ#A8-41O2`0usrqU0 zecER#Inh75_dAi=OtTNSBivAKC|;wJq!^H5oM=?^eiXg$B1YA2B67l(XeC{y7X!xM1<~CqAj}a^hGp(v!h$h=c*=Uhsf(cioyWvR8pczlSWQbjOy-$ zDOd}nLzt92ei~?4TTcSfxbP*;HJ1xVg)H7Qrl_wUD2NWztI4+)eT8ACZnzZ%lPj~Aj- zesx*Ao`F6g5`It$|5AJh1nNw^fZzYu#RA2@2Sn$RpZ|gI6zxd%MY+Yl^l(czw;*O` zJ9T##|6iIct8Uu7b?&mxtd*UANEuYq#3K)+%1yqXjY<(ZWVB@q`7|h3nBJik4S1S! zd5=o$a230{N||d{AYa}Uo%WNSYYi>Wt&W_rv%9%6x8$pHb#}8F3cO%*`o2$WQY$qr=9`5q7^SIM0nNC)Op%Qg2<3TgwKga8exJdp6S)~RYUo23&~jbSUAB(+SD7GG*P%U7 z&SD(BJrVu6d;;g{YNt>`0fObUsbC?H%`OQ|E#eOE@G`DZ_mr*GQm!Ed6{Z(j$ZVaFZ zg;%paViBWf_tfH3d@|~P<={|%jGU5ocu6o|oE2?x_=!(6Fi9|Ksf(X6W`M7l0=*CV6DQoG9!BA7dFIbcRb4H zlolxV=yOaTQz7vahKBo}kbYzyp2ZBgLNKErG3TcNVy0}}+_cVwVXOTiP7@!8$kYm` zE6=KzGPrkcFKW_re|E&r2+FOrj+)ALPX+Jt^d@SrN_j2{4RW#pSUk}os}W0Q!R-D& zLXj6lIk_4i%dTx{mw{3NxPuV<(U5aeY<1<3bWQ)PFUW+wFHP=e=x2))Ttj1#9(E>z0^OAt}C!D>w?R{ik za%~l}H~cu};*AiNhF-P7tg^w(+rhIg+}9AUuTG2G-Bw;Qfa0d!!%=y~jQm;;Y8NKo z=lr2N&o$G2V7-=+g9HiIb%G}7k}Wc(!hx(SHvIvV;gn-GocztgfhaV5oUrJcWhnE$ zNI<-oOI6cuze8rU*&!EDE&@O5s9B4fgHHfQ+>2iFol$!8e@NTVdhyu*eh~+kSl3m; z{J&fZ1hQt30-PZGj5wr@0K>i^XfP5_?UZeAKq@hYeDq;8K#s%Hb0N&k>c>bl-S;ci zO}k0L_i4X>+e)4bbC4EZYY@6#6u!7Eu#a?{Y)Brl%0{xPyWD~Yd1UtpbPEwJ&f#Vx zlMAJDPdf0wUuq}Gqt&vV7$5PB#Z%kS-$9~iKPaNkv8(diqnAxMcD0xQD!ol5KvQq| zh_i-ot-*4D7?Xh8Y@Mj5<_aiuYS*$|^z{5o94E*()^7)$M7U zZhATJ#;1NDZMuQ#wg&Ia3DJiT)G3J_lOS!kUuV6IiB=7g;9%7$VsLch-6f-3T_k(e z67z|0>!TyVwvG|EoOrLib|vq{E;Ye5BPeDB8i_|#o*{+wF5&p*#URgcb_lB|7{P64 z{*U8fa_vV1|FsI*hUrUPlp>Tqx*;@VJ2sJ$m^uPubQQ9KdssqFp;h$A`X^<#DBPCD z@B28!c7bVEVNKV6o#uDdV|A*{%>ZFdaRWnAo)K+NXl>MKIeahfFADygN%o_Xnn-|< zn{>elC(BE&9yxXd+X^sL{1~$oR*|A) zHFv*8&A9Q^keU~n+o|Ly9iu2;tza+lzmypp!ENUHL@KJyzV>NhN0T~DNP89>2Pr{S_xjd0p{jv( zUdvRL4FymA-6>VM!NuekAUAOwcBx^0Psko+ROX)PM9Q$T-DQdv&{$OjbUBd2 zf4beUCs-WDjM$JzTQ3x+WO!|~Mq1A8q&1GjbW_b=AM9UElaxM?&Mw@&0{?clZ#_nc zdrgus0X;kD73ByxsD;y@N!y~RX&kntMjp*G9VP^lkTX|f=WR)XZ*LjW)~cEYh|;e% zCH4(C8Asmhl~{-KJpctoXuQ=Vd?A8+%|0F)!$YQhWSGsjkv^gQt4G$fc`o7=&$8p6 z)Vhxjb{^-sYXPvoTyMENcXhn_j`KAUCu!-0q8|C`kHDbyL45oT-xfBatuv2|S={DT zLQwEKN8d9oX@-U5dxnJalEe{fCY`drv&si*Owq9I-JX0!pto&uqHHj|@c9V^%FPtm zo(yyv$kZE6x}Elc`Dck8iKHZh8V2=;afE$G=1`He!R(Fq1Hbxzd%ntYg%R(?DRZw3 zYGU0U9TVQ`g1$gqm;$|bO3}T}MF6kf=6xMQfVGJ-%$`({P1zJ=lVb00H}w(ngxWR? zktuQ-%%oeEQVY$*Tpn31Gz z-%mdN8Yr$0G4)>>%H`O1=xHS1?54>M%^{9aXP?{4^J%%OfV&6-S%tv}f}{;NF??}| zs;Vnx!tQ~m;RPuPp2+@gId&khU;M`#KS{I7P`f7)u$Wl+pv$H5F2ZBOZ;Dk%>}|hp`52IiB%ZVHj^eo8!^u&LQdwP#1?znI%WbY9(Lprbyotfkc3* zjnJf4aOGBJC*TM4VwlTjr5IoJ39+kz+SPOu(cwT-oJ@C2tbG6K_6t*lMcESFoIKQf zTDISIGFM8~tJdA_rjI1+{~|izDmPC*8BO6kHn(`#Xe#a>g4`-b{-Zia+U%RiZN*L8897{b^LzJ3utSJdBH%Sz=Mox-ghMM zprrozkrV!Kx#{I9^Ph_+(*MvQ^$yBrbH|+8VoF=tsv!kh{q4W{DO+R$Wr4Yr_c&%D zTDs*AtFdP3T94;^R_5pTsPcy`zY+JJjw417fI+;N>7E20MH_CGLY6ySWa+nahlN&> zq8G(|w8Qbo260F_Xr7S0fg-W=Pv$kC>-Qijup*>h7&)8W9n_8@^-ZPpAb}7{4)O+- zdg!q+ZE#XsxqRT9LpTOdmUrt!@dBMh7)E)JzgYhAi)rPKe4gZ!GAdSC{e+U{PMrAG-p&8A?CKNkFSRB{D6YjIyec6`^inHh=Q_>(B z9nTsbZuzZ=fof4ylrr`4buBo8@C$Owj9r*Bg(6w1q63TD(=qGja#u z3r!YRt)0jCcCnK8St_xn$H^)Wmvwlzg|;n;JHlzE!b$CIs2>d|u1;2bhOUPI?P9c~ zdqU0BvK$>XI-WflNO%(%Mc|dERpzd8s#u8_MhxCw(%iABCJHXjZ#JFNz6smu_82|= z*Jp80xZzJa4!^40=(qnZf&hBH1hj$sfkgR$U#Y_DvP7V4Kkbjrsc27X83Xu>=Zb#o ziqkCmEjlugV)uwKI?@#O|0T!X#WgQ43eVf9x&i&lsi;?#va_=+qKd(>FlGE6A$-?h zG2S8@j@(#2`|e_uvqs+YuN+e|Ec8islR#5f%S}#7E^zjRCh6_^$ zQDIhZDX(jbS1ZLup91Jy_Gx9~#qzMQTia~sP~$82xR=E}rvY=@qBvz5+D^HT-hDsZX#@C1u^G zo$mdOTeynf-!0WR5?|>Y7w`I>t}v-b;WF2kEVxNvFsr>mtugk(3P%PxKL}M5g(d0a zFb^M|>C}_neMn@;>AcG@Dfxb%8|oCr??Za)TCtzdr4{#XPYVyN7M>dJ(0z_ycdYgO zI4};U1&qG0U&=LeG*s7L{uPd*$_xK&q&M^eL;)|T2a4PRq1G|x?ju&f4f^=NX{9p# zz8-pda}q@_q+;z-cOUDky+pK{ne)y#9qUrx;1X?+lp(3Z*(rMP|8_gPFmPweWY|{viry#$AvR8&8@eAIbOEOx(pg%uZeoMY3FI%Mz&eD zwi*_nS2zS8qm!uH93K7Rl4Hq!PSK%S;5~K0Oon2P1wqN z=}_;yWWOQkp3vfx%jmL3FACmG;X(zn&oE2p5h{LNq_<7#cjS&dHz1t@CXI~`ng%m8 zo)S4-YdHdse*hO=M+p?UO$JU%fx3BiY7-pj-vALmT2s55Sv&-S6KWz7d;JV5fd~r~I0iYz*3NKuvwrz3k+z+A7t8vof9F;lH72!{h^pMD4Y~- zTS=C_>vwRb=x3BS5wq>xuVCO;eyJnd_Azz7(P_DwcSa=fH3JBA8pR;OSdX&u90Uo*;uenv^6WRLEG>Z!q?qR@zR5t|X0UNTzcu z3=LbEvA-%TnB`4&`(tn#DKpOllS663R3|lt5%JQ(mWe0~@G3p*VWDJ12_t$gGAx{! zgdPvq%$od-3tn6U=id+?LXXH?yMrygps~FMpqyx<_Lw zk%Px6Q5aYn7Gs&_jho?qF-DpyxqsYdXgLyeBFh49O&jj)e2S|3TQRE1Z`KG*-P3Gt zCTt0ObpLzJnG>7Jx*Hm;DH#~&5h*wfOq37Q(XvmT9Hd;&bmlzs|me_N9Ca^{9Zt*-UhN@#9>C!gc|IGK-p zt$1fD8d}C5(j>liUTYI?hm=YMS+MfyT~6%Fi}jrnuf)%MCGim(_8w$- zAg+T)0zs+N^}HkfNPsI!G1`-bMjb&+Prl4ar%m>FQ{09_(JeSg%dFQ0toy)48UQH4ZlSmgyd@Z z23 zqv#Rscs!7VE@hPOzl2W)Ydg+|M8~QBX?pq!z@{a1dtc!C(L*P76yL(tWxkjKAs3U$ zsc`%FKaa>XDYqEcLLt`sr>VVzqsSbpf6y45$um#?Jay zMZV!Id|FAYE7U^Vy0&z{H7sCbosmP zujJOeu~4XLjtkzQ74%r__MvUoz-WfjFZO47v;yUOz}JS4yMDOykNMoOkIfwQ20qj9 zq?{7KZX_NKs%22~q*t8Gew4U7^T6~Nlw+C-Z#@_ORt!Ec;mAMAqi43>)<``qDfAcK zQvA zTSS)yntU;Ql7m`Ai;qh~bPF5B?OO<|TMxf3jCLa#g)FXKiLLKB`5HI&om|e*iMx%p zE3PUTaAn8_+0`Y@d96@@k`GEB;HM$=3hvctTBfO9&DrKog{Jv$tipZS=Q0f7%N2LzKG`-0b zBc5Iy{OYJ;wo@_a&F0nAyE=h$}}mPR4>xja$}Q{3CPM*7X66n8!Of1$Z+5lt(x=TLaS!b1-` z`S<8Ninxbk1O*OMUrZ=U?S1x}2%{}(BpWjsZKz{aO!@ZHFjba*&>43?hvHp?7L3F3 za!wo?UIQ6gXb}PgG=sV}MCMrQy|(`}PDL z$&&hF=C*z8E@F5(gJzW`NhltR~@w;51)l`}P#r zGo|O<(oi|;XxaoW-UdhBG>jz%Qn*POn}=uy?0x@!+L;!3IZ1O$8DuzU8|K^ft8<+8 z4mv2gQoQMtTLPe+R()A7p3_TYEhZu}+PgK2o+rwx@ib+!SW zlaqUeU!0mqN21n#svAc(UsSx$;j8pPaTYsRB9JXN@`-XmOg_ zLHU|u#)O+(i)z(4vh@Ip4}5kI`#%Llb@ehpgDG6h;*z-{)nUbzRNU~Eibs<#NU}s1QKdGe7Wo?nJLraXKiKZJ(%FvXSgUD zCFA$~$)V$l)%YnKz3_$BcPx>g)%Kd_{9xq0^6`0-*^ljeDoHiY6LgSXMk(~GU{O^IgxKpbJ$5sAEc{C4_}{o_j;>hyM|5>NXPpkmB> z2QcHcnP4?+g2XHaY9(75HY1XUUirf+Whi#Q@;h^=t*4>8EtIR zShqX=P0s};`i_MhToUZ z0iuIIj2cEjMJ$GU$4uYt^@V(n6#Re3a4&Idb9ikXwxvz1uxR*g=p6kOS8aGe9nMs* z6+ntlmU&D_Frvbs*6GJLX+d_OVK&NYFkrNtzTRYuqLrqjY41_f(nkae6dbQPt7EsC za9pq<&h4I)PfN{lYINtSY-rDp5M-H$)v>%ojA`uXr5q4*aA}Q(f|KW^ZmuqI#k_bQ zFf!;HkKW)>>THTm9Kd4WDo?Il5nRqjCs$Cgh}%Mg(nYcuRWLT27BBn$Gswe}M=e+D zf9Ksq`VZ?pxU>UX425cUbw!91)^zAo-#pe-qA^kWoC;OnVR#S(fFfUxy;P(k2dvYK zgNiLbTc&}ILi#4om^^)A;+{@UO;oSmIFrVlOMemojI~;R(V_^D299+>@;Y7x17EjK z8-N6g0)GnKHz1H#3$bu$Y2=ObB)4(Tu;V5%KNMuOEE66&3)Dx`f~)%Zh({HAD)$Ty zn=P=!3I7gMIrPV{W{TN-uiV>S?penRRCi2#hj-+nUk}MMe6^ad^5U=|Hf*x3Z*-Lb z;d{GLy3CJbX85LrSn=7mXgB?_8O)QQ3=jCR?;@KuF?#Ofq+8LFwxrk6f<*ZqkCc6{ znvc!YkSJ2bE8O!P@lOC;>_oa-U1}e5Zlw&qbmS@1S~xrDOSFyW1l&JopJ6=ABY-at zbLYhqE_|)F;PKmI0)znm-~q~*OF~FcL^bFEWfIo4{J27$t(m$B(p7C6i$d!!I_dzr zhkGK%c_`QuqqosChxKH!kg6xnPegOK9k1g1q}1V_eR;gR&>JY)wj*xW@v2(M%I6zv z$+A1Z8!*P<8U?5ZtYRnQWO-qCM`3>?ZY>5FXe1;7rwQ6XR1)NZZKH~p^b~Oy!3_Uo zGwib0UiF*|FOSVXTdi1dn|DeHx8#7Rthr7GG28sq1p?sOmv2q|&_jPzvJ$v-oTjW-n_0#Q+Kr3J7Jv7}M2437pt;`b1J^Dl@WT`VEMd@;NeTk!OR zH<1$rjg~doAk~}70LCz{6}t+j532JjN{|#(UBL>M30kC-w4uKe3;NzSt6AihXVU>_SPWEyk#N@-rOaXHQP9h;t;ekK; zNoYRqxQD%2Ds9!#n%HV_ni1YCTA$%sGYYMGgi}y2J@Qwq`=E%0w#7 zXTk<-!OvG5ROrXEt~WmRk^D|j=^5uDWbVTzw&fs?C9&0tC40e$_Zk9JLfId9$@Tf; z7?l?j<(x@txXjM4E+W_sbK>O60itdtCqzlNr+-wQQ_}FU;7q}KVo>4ZEj$YMgF3@t z1qh40MX#3`37ml3iKO)3vwd2i*b?&iSP3074an~rdn?;2ANI>+u1OiKSaVC z?=!!>leD%iIf9@8Bj=g=4B4wSWBoifUfP7%HZeP9gutSR7u2nSjaRpBRm;nZnl3~= zeKx%%Toh3Dp~n&N!dSIqc4T_A4#=7GUyohf%@j&SR8o(tx?q~in{Sy#B{gh(sX22R zN2|S1{8$eGDmOLC93)x?H?{*&ikXAH6``Zmx{V#L&&`37OZ*{#X!Tt!PbZ{740pB-I7qHtFy?G4{EJf>!qb}Gi;KK1 zamcazEO7%eaFG?jBC6=DqV7<{z;Pb4t-ovWcn0D&A?!aUuxde&z9CBZiPZ~7zuqV* zEz@^^klN9eLmb1BS)#_qUReH&QiJaXY>Nxx>VsLX`Ce!Av+C2OdHmyoK1Mew4?&&$ zZ}t{nf|se;kg~Y)FWou!=bRiA{T{fKi%<4iApDWwd-2`oI z>p$A_SJF!<#nH1Jl4A50Z&Qt28Vh&dobnwe3+>_)w=lpd!V)`V1AS_jU&njc8inAF z_<5r=YUO`yDsVF?(zGyDe%S8XYXQkme3DEr+YhPq(y$;`2WYliR&vSL{k_GT+ zBqRW+&3P`;TMee+jMK3x zQFRuQr4#pv0OrDpws{9C+htCf&%gUJ^_^z&IuLm~d{4T6AaF_fPB7+y;Y= z=gN<2``i+l1(|ce#nwghd!jwbfn4l*Ei$7qxI$F;3V1?X3in%|_CtV+ll95Bfc7P#K)KfIUK)&Lt!JA1 zY5wDtQ+Aa-QN@E;-fj=XRm>KpgT@fhCSuO9j7#Jh|KP`hemClzx2l|e_hOXBY_|r+ zAEO}gB0EXDJcP2_?trA)0ksbMFpOt+y1|y%!vY0Y*Do^G#UJ;f#nj8j!oYmfks{$@ z`KlNvB2d{gn=uFaA!u9GP}*UMeZot>Ia`)QyFw{7+UQ(ducJz+?qOsE%8ctsZFnS+ zRJr#|aAIT7&(hgz(_QmBt2b8qmZ)NkT7XZrb$6e?JL9rxScMUmLn;AjVT=>+;FCTH z4V%Z--YRk1U%Rd*S>+&c-!P?MlTB`}6H%uUQ!US&`YA8+b7Nc%x0Xq*U&x_m)~0tX z+rhgATb+1!#t<0)+IoNSQx7ahN!3Q!lkBrsjdk{wTaT7hkAXHss6Car`|3Y8(K$cz z^lNzD)3#t8K?I?S)AzVHTx{2YO*V*mFMz5f^K@xESj0glRc zC||$?MuDwx{7|dp@v22xlr)R+G!=pmqlG$Cjf>oJ*R(&)t{raF%zY(mTkdk45_O6J zgBTJ^^&w-QYu9n)g&#_r#d?~C5ILW1ThUDW8en%M#7*a(@dfrr^}B1S{dpol`14-V z(gLTWO{3{wFaf&I`sOM4Ct56CL8wed)gkYl5D(ZD^Zudy;ATdqW{*C=7+JZ@>pKOz z@-&0aN}?1B0)boH$Ei5^y^jP3AuRFy*x8sB9RF zAIgHR$XZ=z^NRsO@*TH2vQU{HThCHD0tJ;YI&>%qcqjX6B!F0v-1!*q9%wkvwRHMG z{*#CBy>LB?-f~viV?~X3=u3UPUR-Jf{@)8mHEB^n@oABzf$)0SJJ98Sm9&G8?tkq^ zJmd!G(_ic5Xxo!rndp$--)7tN%JY)EARK(Wd#`N!VLRPKUb)HC)5vV zAaJ851X00}7ptc*K4F|Qu1|q;qB*Uj*w^2R+G4%G$&}Om3{1e%Yk~Txm!RYRVJu!a z6{v2c+`2mjj<1i?X^5rs+J){?c0UvQ4|M$q!4eMS{EV^RLd@5a1@*J`d}}+19jSFJ zt2%D801|;7xU5$d138h8lZTBCJ(*&lC%_N11g8 zpQ;$(o2p{l5hVc)hq@yD90OEum5usWR3yOm^S=xMWl+R69naP++Df0PsKO5Ot% zYHiz`<(#Q-)KoQU>kByH^ho+07LRhiR=RopU+CFAV|pEUhn|p>EKDTM_8wNg{Zv^p zEJfY(sydl7kmD~pT6msQ{N7(G(8j0n_a!kTt<4%o;;#KF(I|v^7#m|xy9f1il z`tSERd3o_sbSoE(NeBnr9J4~rI$w5PGm7D=(fJ`taJgFchNJxN&z!+}YwVg_S|pCw zQS=kSII3Cigt${Dgbm0+swd?}A{}V4x(_&FlxVqW)Bl7!n5CCdn{&jLM@4sm+Y7o; zcWr;^77Rv1o;Q^lt%M2}w3A}0Mi_MA+e=^n=W045JRa#YYodf8&^u)=EzjUB4;EhA ze#_g}|KtD6IUA8cPGzU-fio*3Xv|kvqo3#a0pITw0l`p2ZFwlY1#XP(TdqZj@orLM z>J;Xjt2W_n>}*3n$*^S`myqY$wD`(<-V5XZ?X3Cb!}S9)5Xdn`G@x9m7oQNFO=jYj zhnjWClk44)fC&;MN*3lEpRPcStmD2}vtFwTKlyQ;OiY--2<{VV25@eo#R7`<6mm=l zRMMXFoa%QoF*DQgQX`nN4d)DFj+>@)v|0o-5qG;G>imCCQ`s<2b5Rl^oPx3Gtnkp< z0e;m&S30=Gg#rF)4Y!tIrYoj&gjrT-m4&G=A?NXJhiC}zY>rLM$;{00kxNS!K{m0c zHBSWjrB>p6IRe6D6BvyD3($tHryDKy-`4q;5MgYiT4e<>K3Xj%ch>2fF@I$uY<+j4wfuv2jpc%zpt4}mO`V_rB}#B8+$%e6GWwHNP2 z%e_&YUcqcJD%@~EAl2p%Z8-?U{BUalGt)+EFy_{(T38AURzO9~<(2UdO~uu1o}Ht` z94L#AD6s$8!zvUQK3DKBF{<_pkkg*3fBe6-_f$XT!|{7sW$Qu5^{f{8YPr?eyk704 zceKo2^q7U^yLDUQ)NG#qFIXm>W28SMCZvuG7ZRd7MijouR~v5*_EPk|9qKifgi`8=B?$7BQQ&_7j0sV5 diff --git a/internal/website/public/logo/logo-light.svg b/internal/website/public/logo/logo-light.svg deleted file mode 100644 index f4546e139..000000000 --- a/internal/website/public/logo/logo-light.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - logo-light - - - - - - - - - - \ No newline at end of file diff --git a/internal/website/public/logo/logo-sm.svg b/internal/website/public/logo/logo-sm.svg deleted file mode 100644 index 54fe953dd..000000000 --- a/internal/website/public/logo/logo-sm.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - logo-sm - - - - - - - - - - \ No newline at end of file diff --git a/internal/website/public/logo/logo.svg b/internal/website/public/logo/logo.svg deleted file mode 100644 index 759028744..000000000 --- a/internal/website/public/logo/logo.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - logo - - - - - - - - - - - - - \ No newline at end of file diff --git a/internal/website/public/mstile-150x150.png b/internal/website/public/mstile-150x150.png deleted file mode 100644 index f4982775310d49baa1d41bdfccc57cf9bb187cfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6736 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 diff --git a/internal/website/public/powered-by-vercel.svg b/internal/website/public/powered-by-vercel.svg deleted file mode 100644 index 877828684..000000000 --- a/internal/website/public/powered-by-vercel.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/internal/website/public/safari-pinned-tab.svg b/internal/website/public/safari-pinned-tab.svg deleted file mode 100644 index ccb3b06cf..000000000 --- a/internal/website/public/safari-pinned-tab.svg +++ /dev/null @@ -1,7830 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/internal/website/public/site.webmanifest b/internal/website/public/site.webmanifest deleted file mode 100644 index fa99de77d..000000000 --- a/internal/website/public/site.webmanifest +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "", - "short_name": "", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/internal/website/public/style.css b/internal/website/public/style.css deleted file mode 100644 index 3b8f06a59..000000000 --- a/internal/website/public/style.css +++ /dev/null @@ -1,26 +0,0 @@ -code[class*='language-'], -pre[class*='language-'] { - white-space: pre-wrap !important; - word-break: break-word !important; -} - -code, -code * { - font-family: 'SF Mono', 'Source Code Pro', Menlo, monospace !important; - - margin-top: 0.2em; - margin-bottom: 0.2em; -} - -article { - width: 100%; - overflow-x: auto; -} - -.admonition-heading h1, -.admonition-heading h2, -.admonition-heading h3, -.admonition-heading h4, -.admonition-heading h5 { - padding-top: 20px !important; -} diff --git a/internal/website/public/video/invisible-data-fetching.mp4 b/internal/website/public/video/invisible-data-fetching.mp4 deleted file mode 100644 index 6002e26a11f8eb9c0d156dd1d0a733f28d1cd84b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38007 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 { - const { isOpen, onClose, onOpen } = useMobileMenuState(); - return ( - - } - /> - - - - - - - - - ); -}; - -let globalIsClientSide = false; - -export function WithExamplePage(Cmp: FC) { - return function WithExamplePage(props: T) { - const [isClientSide, setIsClientSide] = useState(globalIsClientSide); - - useEffect(() => { - if (isClientSide) return; - - setIsClientSide((globalIsClientSide = true)); - }, [isClientSide, setIsClientSide]); - - if (!isClientSide) return ; - return ( - - - - - - } - /> - - - ); - }; -} - -const useMobileMenuState = () => { - const { isOpen, onClose, onOpen } = useDisclosure(); - const isMobile = useBreakpointValue({ base: true, lg: false }); - useEffect(() => { - if (isMobile == false) { - onClose(); - } - }, [isMobile, onClose]); - return { isOpen, onClose, onOpen }; -}; diff --git a/internal/website/src/components/Examples/Embed.tsx b/internal/website/src/components/Examples/Embed.tsx deleted file mode 100644 index 1656a0bbd..000000000 --- a/internal/website/src/components/Examples/Embed.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { useEffect, useState } from 'react'; -import { useWindowSize } from 'react-use'; - -import { Box, Spinner, Stack } from '@chakra-ui/react'; - -const EmbedSpinner = ({ frameHeight }: { frameHeight: number }) => { - const [hideSpinner, setHideSpinner] = useState(false); - - useEffect(() => { - let isMounted = true; - const timeout = setTimeout(() => { - if (isMounted) setHideSpinner(true); - }, 5000); - return () => { - isMounted = false; - clearTimeout(timeout); - }; - }, []); - - if (hideSpinner) return null; - - return ( - - - - ); -}; - -export interface EmbedProps { - file: string; - initialPath: string; -} - -export function CodeSandboxEmbed({ file, initialPath }: EmbedProps) { - const { height } = useWindowSize(0, 400); - - if (!file.startsWith('/')) file = '/' + file; - - const src = `https://codesandbox.io/embed/gqty-sandbox-forked-o9int?fontsize=14&hidenavigation=1&module=${encodeURIComponent( - file - )}&theme=dark&initialpath=${encodeURIComponent(initialPath)}`; - - const frameHeight = height - 250; - - return ( - - - - { - document.body.style.overflowY = 'hidden'; - document.body.style.overflowX = 'hidden'; - }} - onMouseOut={() => { - document.body.style.overflowY = 'auto'; - document.body.style.overflowX = 'auto'; - }} - /> - - ); -} diff --git a/internal/website/src/components/Examples/NavLink.tsx b/internal/website/src/components/Examples/NavLink.tsx deleted file mode 100644 index 0aae6c54e..000000000 --- a/internal/website/src/components/Examples/NavLink.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { - HStack, - Icon, - Link, - LinkProps, - Text, - useColorModeValue as mode, -} from '@chakra-ui/react'; -import NextLink from 'next/link'; -import { useRouter } from 'next/router'; - -interface NavLinkProps extends LinkProps { - label: string; - icon?: any; -} - -export const NavLink = (props: NavLinkProps) => { - const { icon, label, href, ...rest } = props; - const { pathname } = useRouter(); - - const isActive = pathname === href; - - return ( - - - - - - {label} - - - - - ); -}; diff --git a/internal/website/src/components/Examples/Sidebar.tsx b/internal/website/src/components/Examples/Sidebar.tsx deleted file mode 100644 index 058f0d594..000000000 --- a/internal/website/src/components/Examples/Sidebar.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { FaAngleRight, FaReact } from 'react-icons/fa'; - -import { Flex, FlexProps, Spacer, Stack } from '@chakra-ui/react'; - -import { NavLink } from './NavLink'; - -export const Sidebar = (props: FlexProps) => { - return ( - - - - - - - - - - - - - ); -}; diff --git a/internal/website/src/components/ThemeSwitch.tsx b/internal/website/src/components/ThemeSwitch.tsx deleted file mode 100644 index 19c777b47..000000000 --- a/internal/website/src/components/ThemeSwitch.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { IconButton } from '@chakra-ui/react'; -import { useThemeContext } from '@theguild/components'; -import { BsMoonFill, BsSun } from 'react-icons/bs'; - -export function ThemeSwitch() { - const { setDarkTheme, isDarkTheme } = useThemeContext(); - - if (!setDarkTheme) return null; - - return ( - : } - onClick={() => setDarkTheme((state) => !state)} - /> - ); -} diff --git a/internal/website/src/pages/_app.tsx b/internal/website/src/pages/_app.tsx deleted file mode 100644 index 3315d1f8f..000000000 --- a/internal/website/src/pages/_app.tsx +++ /dev/null @@ -1,288 +0,0 @@ -import { - Box, - BoxProps, - chakra, - extendTheme, - theme as chakraTheme, - useColorModeValue, -} from '@chakra-ui/react'; -import { mode } from '@chakra-ui/theme-tools'; -import { ClassNames } from '@emotion/react'; -import { - AppSeoProps, - CombinedThemeProvider, - DocsPage, - ExtendComponents, - handlePushRoute, -} from '@guild-docs/client'; -import { Subheader } from '@theguild/components'; -import { appWithTranslation } from 'next-i18next'; -import type { AppProps } from 'next/app'; -import Router from 'next/router'; -import '../../public/style.css'; -import { ThemeSwitch } from '../components/ThemeSwitch'; - -const BaseAnchor = chakra('a', { - baseStyle: { - color: '#2f77c9', - _hover: { - textDecoration: 'underline', - }, - }, -}); - -const a: typeof BaseAnchor = (props) => { - const localHref = - typeof props.href === 'string' && !props.href.startsWith('http') - ? props.href - : undefined; - - return ( - { - ev.preventDefault(); - Router.push(localHref); - }) - } - onMouseOver={ - localHref && - (() => { - Router.prefetch(localHref); - }) - } - /> - ); -}; - -const blockquote = (props: BoxProps) => { - const bgColor = useColorModeValue('pink.500', 'pink.700'); - - return ( - *:first-of-type': { - marginTop: 0, - }, - }} - {...props} - /> - ); -}; -export const table = (props: BoxProps) => ( - -); - -export const th = (props: BoxProps) => { - const bg = useColorModeValue('gray.50', 'whiteAlpha.100'); - - return ( - - ); -}; - -export const td = (props: BoxProps) => ( - -); - -ExtendComponents({ - HelloWorld() { - return

Hello World!

; - }, - Box, - a, - blockquote, - table, - th, - td, -}); - -const styles: typeof chakraTheme['styles'] = { - global: (props) => ({ - body: { - bg: mode('white', 'gray.850')(props), - }, - }), -}; - -const theme = extendTheme({ - colors: { - gray: { - 50: '#fafafa', - 100: '#f5f5f5', - 200: '#e5e5e5', - 300: '#d4d4d4', - 400: '#a3a3a3', - 500: '#737373', - 600: '#525252', - 700: '#404040', - 800: '#262626', - 850: '#1b1b1b', - 900: '#171717', - }, - }, - fonts: { - heading: 'TGCFont, sans-serif', - body: 'TGCFont, sans-serif', - }, - config: { - initialColorMode: 'light', - useSystemColorMode: false, - }, - styles, -}); - -const accentColor = '#C00B84'; - -const serializedMdx = process.env.SERIALIZED_MDX_ROUTES; -const mdxRoutes = { data: serializedMdx && JSON.parse(serializedMdx) }; - -function AppContent(appProps: AppProps) { - const { Component, pageProps, router } = appProps; - const isDocs = router.asPath.startsWith('/docs'); - - return ( - <> - - {({ css }) => { - return ( - <> - handlePushRoute('/', e), - }} - links={[ - { - children: 'Home', - title: 'Read about Guild Docs', - href: '/', - onClick: (e) => handlePushRoute('/', e), - }, - { - children: 'Examples', - title: 'Check Examples', - href: '/examples', - onClick: (e) => handlePushRoute('/examples', e), - }, - { - children: 'GitHub', - href: 'https://github.com/gqty-dev/gqty', - target: '_blank', - rel: 'noopener norefereer', - title: "Head to the project's GitHub", - }, - { - children: 'Docs', - title: 'Check Documentation', - href: '/docs', - onClick: (e) => handlePushRoute('/docs/getting-started', e), - }, - { - children: , - href: null as any, - title: '', - }, - ]} - cta={{ - children: 'Get Started', - title: 'Start using GQty', - href: '/docs/getting-started', - onClick: (e) => handlePushRoute('/docs/getting-started', e), - target: '_blank', - rel: 'noopener noreferrer', - }} - /> - - ); - }} - - {isDocs ? ( - - ) : ( - - )} - - ); -} - -const defaultSeo: AppSeoProps = { - title: 'GQty', - description: 'a GraphQL client built for rapid iteration.', - logo: { - url: 'https://gqty.dev/logo.png', - width: 50, - height: 54, - }, -}; - -export default appWithTranslation(function App(appProps) { - return ( - - - - ); -}); diff --git a/internal/website/src/pages/_document.tsx b/internal/website/src/pages/_document.tsx deleted file mode 100644 index ae8c80840..000000000 --- a/internal/website/src/pages/_document.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import Document, { Head, Html, Main, NextScript } from 'next/document'; - -import { ColorModeScript } from '@chakra-ui/react'; - -export default class MyDocument extends Document { - render() { - return ( - - - - - - - - - - - - - -
- - - - ); - } -} diff --git a/internal/website/src/pages/docs/[[...slug]].tsx b/internal/website/src/pages/docs/[[...slug]].tsx deleted file mode 100644 index 37731b21d..000000000 --- a/internal/website/src/pages/docs/[[...slug]].tsx +++ /dev/null @@ -1,51 +0,0 @@ -import Head from 'next/head'; - -import { DocsContent, DocsTOC, MDXPage } from '@guild-docs/client'; -import { MDXPaths, MDXProps } from '@guild-docs/server'; - -import { getRoutes } from '../../../routes'; - -import type { GetStaticPaths, GetStaticProps } from 'next'; - -export default MDXPage( - function PostPage({ content, TOC, MetaHead, BottomNavigation }) { - return ( - <> - {MetaHead} - {content} - - - - - - ); - }, - { - renderTitle(title) { - if (!title) return 'GQty'; - return `${title} - GQty`; - }, - giscus: { - repo: 'gqty-dev/gqty', - repoId: 'MDEwOlJlcG9zaXRvcnkzNzU4MjIxOTM=', - category: 'Q&A', - categoryId: 'DIC_kwDOFmaXcc4B-nRb', - }, - } -); - -export const getStaticProps: GetStaticProps = (ctx) => { - return MDXProps( - ({ readMarkdownFile, getArrayParam }) => { - return readMarkdownFile('docs/', getArrayParam('slug')); - }, - ctx, - { - getRoutes, - } - ); -}; - -export const getStaticPaths: GetStaticPaths = (ctx) => { - return MDXPaths('docs', { ctx }); -}; diff --git a/internal/website/src/pages/examples/index.tsx b/internal/website/src/pages/examples/index.tsx deleted file mode 100644 index 91fa621f3..000000000 --- a/internal/website/src/pages/examples/index.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import { FaCircle, FaReact } from 'react-icons/fa'; - -import { Heading, Stack, Text, Link as ChakraLink } from '@chakra-ui/react'; -import Link from 'next/link'; - -import { WithExamplePage } from '../../components/Examples/App'; -import { NavLink } from '../../components/Examples/NavLink'; - -export default WithExamplePage(function Page() { - return ( - - API - - All the examples made here are around a playground API specially made to - showcase usual usage of GraphQL APIs in gqty. - - - You can also check it{' '} - - http://examples-api.gqty.dev - {' '} - and play with it, since it also offers a playground using{' '} - - Altair GraphQL Client - {' '} - and an interactive visualization of the schema using{' '} - - GraphQL Voyager - - . - - Feel free to suggest new specific features to offer in it. - Online Editor and Visualization - - These examples are made using{' '} - - - CodeSandbox - - - , which allows you to modify the examples and play with gqty{' '} - without installing anything. - - Examples - - We are planning to add more examples about all the different expected - usages of gqty. - - - And we encourage you to open a new{' '} - - GitHub issue - {' '} - to request some examples about specific issues you might have, and you - will also be helping everyone. - -
- For now, you can check some examples about: - - - {' '} - - gqty in React Suspense - - - - - - - -
- ); -}); diff --git a/internal/website/src/pages/examples/suspense/auth.tsx b/internal/website/src/pages/examples/suspense/auth.tsx deleted file mode 100644 index b435f9b6d..000000000 --- a/internal/website/src/pages/examples/suspense/auth.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { useMemo } from 'react'; - -import { - Heading, - ListItem, - Stack, - Text, - UnorderedList, - Link as ChakraLink, -} from '@chakra-ui/react'; -import Link from 'next/link'; -import { useRouter } from 'next/router'; - -import { WithExamplePage } from '../../../components/Examples/App'; -import { - CodeSandboxEmbed, - EmbedProps, -} from '../../../components/Examples/Embed'; - -export default WithExamplePage(function Page() { - const { query = {} } = useRouter(); - - const { file, initialPath } = useMemo(() => { - switch (query.hash) { - case '#headers': { - return { - file: 'src/gqty/index.ts', - initialPath: '/login', - }; - } - case '#currentUser': - return { - file: 'src/hooks/currentUser.ts', - initialPath: '/login', - }; - - case '#register': - return { - file: 'src/components/Register.tsx', - initialPath: '/register', - }; - - case '#login': - default: - return { - file: 'src/components/Login.tsx', - initialPath: '/login', - }; - } - }, [query.hash]); - return ( - <> - GraphQL Authentication in React Suspense - - - In this example you can check some examples of{' '} - useMutation inside a authentication - inside GraphQL Flow. - - - - Relevant files: - - - - Handling of authorization headers in fetch:{' '} - - src/gqty/index.ts - - - - Login:{' '} - - src/Components/Login.tsx - - - - Register:{' '} - - - src/Components/Register.tsx - - - - - Checking if user is authenticated:{' '} - - src/hooks/currentUser.ts - - - - - - - ); -}); diff --git a/internal/website/src/pages/examples/suspense/query.tsx b/internal/website/src/pages/examples/suspense/query.tsx deleted file mode 100644 index f50828fe8..000000000 --- a/internal/website/src/pages/examples/suspense/query.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; - -import { Heading, Text, Link as ChakraLink } from '@chakra-ui/react'; -import Link from 'next/link'; - -import { WithExamplePage } from '../../../components/Examples/App'; -import { CodeSandboxEmbed } from '../../../components/Examples/Embed'; - -export default WithExamplePage(function Page() { - return ( - <> - GraphQL Queries in React Suspense - - In this example you can see some usage examples of{' '} - - useQuery - {' '} - and{' '} - - graphql HOC - - . - - - - ); -}); diff --git a/internal/website/src/pages/index.tsx b/internal/website/src/pages/index.tsx deleted file mode 100644 index 0f0fc3443..000000000 --- a/internal/website/src/pages/index.tsx +++ /dev/null @@ -1,117 +0,0 @@ -import { HeroGradient, InfoList } from '@theguild/components'; - -import { handlePushRoute } from '@guild-docs/client'; -import { ClassNames } from '@emotion/react'; -import { Heading, HStack } from '@chakra-ui/react'; -import Image from 'next/image'; -import GraphQLLogo from '../../public/img/graphql.svg'; -import TypeScriptLogo from '../../public/img/typescript.png'; -import ReactLogo from '../../public/img/react.svg'; -import ProductionReady from '../../public/img/production_ready.png'; - -export default function Index() { - return ( - <> - handlePushRoute('/docs/getting-started', e), - }} - colors={['#EC4CB7', '#C00B84']} - /> - - - {({ css }) => { - return ( - div { - align-items: center; - justify-content: center; - } - `, - }} - items={[ - { - title: ( - - - Invisible data fetching - - ), - description: - 'Queries, Mutations and Subscriptions are generated at runtime using ES6 Proxies.', - link: { - href: '/docs/intro/features#invisible-data-fetching', - onClick: (e) => - handlePushRoute( - '/docs/intro/features#invisible-data-fetching', - e - ), - title: 'Read more', - children: 'Read more', - }, - }, - { - title: ( - - - Strongly typed - - ), - description: - 'Built from the ground up to work with Typescript — no more code generation', - link: { - href: '/docs/intro/features#typescript', - onClick: (e) => - handlePushRoute('/docs/intro/features#typescript', e), - title: 'Read more', - children: 'Read more', - }, - }, - { - title: ( - - - React.js - - ), - description: - 'React Suspense support, hooks, automatic component updates and more.', - link: { - href: '/docs/react/fetching-data', - onClick: (e) => - handlePushRoute('/docs/react/fetching-data', e), - title: 'Read more', - children: 'Read more', - }, - }, - { - title: ( - - - Production ready - - ), - description: - 'Fully-featured with inbuilt normalized cache, server side rendering, subscriptions and more.', - link: { - href: '/docs/intro/features', - onClick: (e) => handlePushRoute('/docs/intro/features', e), - title: 'Read more', - children: 'Read more', - }, - }, - ]} - /> - ); - }} - - - ); -} diff --git a/internal/website/tsconfig.json b/internal/website/tsconfig.json deleted file mode 100644 index 597117bfa..000000000 --- a/internal/website/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "es2019", - "module": "commonjs", - "strict": true, - "esModuleInterop": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, - "lib": ["dom", "dom.iterable", "esnext"], - "allowJs": true, - "noEmit": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"] -} From 53a4178e7b4dd4fe33cdc04e17b523f87caa6c95 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 28 Apr 2023 20:23:37 +0800 Subject: [PATCH 053/122] feat(core): passthru return types of selectors --- examples/gnt/app/api/hello/route.ts | 3 - examples/gnt/gqty/index.ts | 6 +- packages/gqty/src/Client/resolvers.ts | 20 +- packages/react/package.json | 12 +- packages/react/src/useThrottledAsync.ts | 6 +- pnpm-lock.yaml | 4458 +++-------------------- 6 files changed, 623 insertions(+), 3882 deletions(-) delete mode 100644 examples/gnt/app/api/hello/route.ts diff --git a/examples/gnt/app/api/hello/route.ts b/examples/gnt/app/api/hello/route.ts deleted file mode 100644 index 363792161..000000000 --- a/examples/gnt/app/api/hello/route.ts +++ /dev/null @@ -1,3 +0,0 @@ -export async function GET(request: Request) { - return new Response('Hello, Next.js!'); -} diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts index fe63dec33..844a41a88 100644 --- a/examples/gnt/gqty/index.ts +++ b/examples/gnt/gqty/index.ts @@ -84,12 +84,8 @@ export const { prepareQuery, } = createReactClient(client, { defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis + // Enable Suspense, you can override this option at hooks. suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, }, }); diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index f1ab2fd48..602a9876d 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -81,24 +81,30 @@ export type CreateResolverFn = ( ) => ResolverParts; export type ResolveFn = < - TData extends Record = Record + TData extends unknown = unknown >( - fn: DataFn, + fn: DataFn, options?: ResolveOptions -) => Promise; +) => Promise>; const asyncItDoneMessage = { done: true } as IteratorResult; export type SubscribeFn = < - TData extends Record = Record + TData extends unknown = unknown >( - fn: DataFn, + fn: DataFn, options?: SubscribeOptions -) => AsyncGenerator & { +) => AsyncGenerator, void, unknown> & { unsubscribe: Unsubscribe; }; -export type DataFn = (schema: TSchema) => void; +export type DataFn = (schema: TSchema) => TResult; + +export type DataResult = TData extends undefined + ? TData + : TData extends void + ? unknown + : TData; export type ResolveOptions = { /** diff --git a/packages/react/package.json b/packages/react/package.json index 65f07a953..d4c87be65 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -77,7 +77,7 @@ } ], "dependencies": { - "@react-hookz/web": "^22.0.0", + "@react-hookz/web": "^23.0.0", "multidict": "^1.0.6", "p-debounce": "^4.0.0", "p-defer": "^3.0.0", @@ -92,8 +92,8 @@ "@types/jest": "^29.5.0", "@types/lodash-es": "^4.17.6", "@types/node": "^18.15.5", - "@types/react": "^17.0.53", - "@types/react-dom": "^18.0.11", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.1", "@types/use-sync-external-store": "^0.0.3", "@typescript-eslint/eslint-plugin": "^5.54.1", "@typescript-eslint/parser": "^5.54.1", @@ -108,9 +108,9 @@ "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "lodash-es": "^4.17.21", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-test-renderer": "^17.0.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-test-renderer": "^18.2.0", "regenerator-runtime": "^0.13.11", "size-limit": "^8.2.4", "test-utils": "workspace:^", diff --git a/packages/react/src/useThrottledAsync.ts b/packages/react/src/useThrottledAsync.ts index b293e1521..e6c207df8 100644 --- a/packages/react/src/useThrottledAsync.ts +++ b/packages/react/src/useThrottledAsync.ts @@ -1,5 +1,5 @@ -import { useSafeState, useSyncedRef } from '@react-hookz/web'; -import { useMemo, useRef } from 'react'; +import { useSyncedRef } from '@react-hookz/web'; +import { useMemo, useRef, useState } from 'react'; export type AsyncStatus = 'loading' | 'success' | 'error' | 'not-executed'; @@ -83,7 +83,7 @@ export function useThrottledAsync( UseAsyncActions, UseAsyncMeta ] { - const [state, setState] = useSafeState>({ + const [state, setState] = useState>({ status: 'not-executed', error: undefined, result: initialValue, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18c6f9262..85df91b65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -341,7 +341,7 @@ importers: specifier: ^7.0.1 version: 7.0.1 - examples/vite-example: + examples/vite: dependencies: '@gqty/cli': specifier: workspace:^ @@ -353,18 +353,18 @@ importers: specifier: workspace:^ version: link:../../packages/gqty/dist react: - specifier: ^17.0.2 - version: 17.0.2 + specifier: ^18.2.0 + version: 18.2.0 react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) devDependencies: '@types/node': - specifier: ^18.15.5 + specifier: ^18.15.11 version: 18.15.11 '@types/react': - specifier: ^17.0.53 - version: 17.0.53 + specifier: ^18.2.0 + version: 18.2.0 '@types/react-dom': specifier: ^18.0.11 version: 18.0.11 @@ -375,8 +375,8 @@ importers: specifier: ^0.17.12 version: 0.17.12 typescript: - specifier: ^4.9.5 - version: 4.9.5 + specifier: ^5.0.4 + version: 5.0.4 vite: specifier: ^4.2.1 version: 4.2.1(@types/node@18.15.11) @@ -463,112 +463,6 @@ importers: specifier: ^4.9.5 version: 4.9.5 - internal/website: - dependencies: - '@chakra-ui/icons': - specifier: ^1.1.7 - version: 1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2) - '@chakra-ui/react': - specifier: ^1.8.9 - version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@chakra-ui/theme-tools': - specifier: ^1.3.6 - version: 1.3.6(@chakra-ui/system@2.5.5) - '@chakra-ui/utils': - specifier: ^1.10.4 - version: 1.10.4 - '@emotion/react': - specifier: ^11.10.6 - version: 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': - specifier: ^11.10.6 - version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - '@guild-docs/client': - specifier: 2.1.1 - version: 2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3) - '@guild-docs/server': - specifier: 4.0.0 - version: 4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.10.1) - '@mdx-js/react': - specifier: ^2.3.0 - version: 2.3.0(react@17.0.2) - '@theguild/components': - specifier: ^1.12.0 - version: 1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) - csstype: - specifier: ^3.1.1 - version: 3.1.1 - framer-motion: - specifier: ^6.5.1 - version: 6.5.1(react-dom@17.0.2)(react@17.0.2) - i18next: - specifier: ^22.4.13 - version: 22.4.13 - next: - specifier: ^12.3.4 - version: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - next-i18next: - specifier: ^13.2.2 - version: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) - next-seo: - specifier: ^5.15.0 - version: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - react-i18next: - specifier: ^12.2.0 - version: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) - react-icons: - specifier: ^4.8.0 - version: 4.8.0(react@17.0.2) - react-use: - specifier: ^17.4.0 - version: 17.4.0(react-dom@17.0.2)(react@17.0.2) - shiki: - specifier: ^0.10.1 - version: 0.10.1 - devDependencies: - '@next/bundle-analyzer': - specifier: ^12.3.4 - version: 12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) - '@types/node': - specifier: ^18.15.5 - version: 18.15.11 - '@types/react': - specifier: ^17.0.53 - version: 17.0.53 - '@types/react-dom': - specifier: ^18.0.11 - version: 18.0.11 - bob-tsm: - specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@4.9.5) - concurrently: - specifier: ^7.6.0 - version: 7.6.0 - cross-env: - specifier: ^7.0.3 - version: 7.0.3 - esbuild: - specifier: ^0.17.12 - version: 0.17.12 - next-remote-watch: - specifier: ^2.0.0 - version: 2.0.0(next@12.3.4) - open-cli: - specifier: ^7.2.0 - version: 7.2.0 - typescript: - specifier: ^4.9.5 - version: 4.9.5 - wait-on: - specifier: ^7.0.1 - version: 7.0.1 - packages/cli: dependencies: '@graphql-codegen/core': @@ -851,8 +745,8 @@ importers: packages/react: dependencies: '@react-hookz/web': - specifier: ^22.0.0 - version: 22.0.0(react-dom@17.0.2)(react@17.0.2) + specifier: ^23.0.0 + version: 23.0.0(react-dom@18.2.0)(react@18.2.0) multidict: specifier: ^1.0.6 version: 1.0.6 @@ -864,10 +758,10 @@ importers: version: 3.0.0 react-ssr-prepass: specifier: ^1.5.0 - version: 1.5.0(react@17.0.2) + version: 1.5.0(react@18.2.0) use-sync-external-store: specifier: ^1.2.0 - version: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) + version: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@18.2.0) devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -877,10 +771,10 @@ importers: version: 5.16.5 '@testing-library/react': specifier: ^12.1.5 - version: 12.1.5(react-dom@17.0.2)(react@17.0.2) + version: 12.1.5(react-dom@18.2.0)(react@18.2.0) '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2) + version: 8.0.1(@types/react@18.2.0)(react-dom@18.2.0)(react-test-renderer@18.2.0)(react@18.2.0) '@types/jest': specifier: ^29.5.0 version: 29.5.0 @@ -891,11 +785,11 @@ importers: specifier: ^18.15.5 version: 18.15.11 '@types/react': - specifier: ^17.0.53 - version: 17.0.53 + specifier: ^18.2.0 + version: 18.2.0 '@types/react-dom': - specifier: ^18.0.11 - version: 18.0.11 + specifier: ^18.2.1 + version: 18.2.1 '@types/use-sync-external-store': specifier: ^0.0.3 version: 0.0.3 @@ -939,14 +833,14 @@ importers: specifier: ^4.17.21 version: 4.17.21 react: - specifier: ^17.0.2 - version: 17.0.2 + specifier: ^18.2.0 + version: 18.2.0 react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) react-test-renderer: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) regenerator-runtime: specifier: ^0.13.11 version: 0.13.11 @@ -1011,167 +905,6 @@ packages: resolution: {integrity: sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==} dev: true - /@algolia/autocomplete-core@1.8.3: - resolution: {integrity: sha512-DpNL4PZTes+6pg2ysJQzZZBQUvHSYP1q8IkiJA7UoNqFMf0pdq2bSIehuiMTxNegpMjSszaB7G+o5UgxavKhWA==} - dependencies: - '@algolia/autocomplete-shared': 1.8.3 - dev: false - - /@algolia/autocomplete-js@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): - resolution: {integrity: sha512-h5v/qp8CwmCUOCaNkUa+vaybnIpIoJGEfwE2Ks/84KAqIHYCBgcylwn92PkIL3gbQCok2sc6JoSIlUo0eAgPsQ==} - peerDependencies: - '@algolia/client-search': '>= 4.5.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-core': 1.8.3 - '@algolia/autocomplete-preset-algolia': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-shared': 1.8.3 - '@algolia/client-search': 4.17.0 - algoliasearch: 4.17.0 - htm: 3.1.1 - preact: 10.13.2 - dev: false - - /@algolia/autocomplete-plugin-algolia-insights@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0)(search-insights@2.4.0): - resolution: {integrity: sha512-JmPfWXBHMfdBp0cNB3hBIlDgy3pKGWtQz6dhd+01x9UKqmrXJQlA33zTQ/JRlAhyx2CMFbfm4zT3CPNJxfo2pg==} - peerDependencies: - search-insights: '>= 1 < 3' - dependencies: - '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-shared': 1.8.3 - search-insights: 2.4.0 - transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - dev: false - - /@algolia/autocomplete-plugin-query-suggestions@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): - resolution: {integrity: sha512-a309PAFgSRkip2McMEL0qOx9vuYB2TI4axbWqrHOSm96le10oAeLeRt9WrgSLtuMz9dbWBKS/yAAPUioLLwq/Q==} - peerDependencies: - '@algolia/client-search': '>= 4.5.1 < 6' - algoliasearch: '>= 4.5.1 < 6' - dependencies: - '@algolia/autocomplete-core': 1.8.3 - '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-preset-algolia': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-shared': 1.8.3 - '@algolia/client-search': 4.17.0 - algoliasearch: 4.17.0 - dev: false - - /@algolia/autocomplete-preset-algolia@1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0): - resolution: {integrity: sha512-M5B9VZtMtBFS8KSIzv8m0gtwVYtFBBjCvr8boBi+orbQUqzdoj5f70CqhQxUtnNcFGizHUaShUDV571F33/m7g==} - peerDependencies: - '@algolia/client-search': '>= 4.9.1 < 6' - algoliasearch: '>= 4.9.1 < 6' - dependencies: - '@algolia/autocomplete-shared': 1.8.3 - '@algolia/client-search': 4.17.0 - algoliasearch: 4.17.0 - dev: false - - /@algolia/autocomplete-shared@1.8.3: - resolution: {integrity: sha512-llwPEemKzVhOjL9AsoZPejkaTTAsCB/2HHBQapC8LgQ2E/ipD5M1kTT6oSJskSVO5zI0YbBOCxAigZhgpPJ3eA==} - dev: false - - /@algolia/autocomplete-theme-classic@1.8.3: - resolution: {integrity: sha512-sZt8uyBp5bwPTbqM+2cn/T7/OX8y8neEEtX10wWBgD7gakacn3//VEIdD1/+Yu1TJ2frWoP+SwuEbloe/zsMDg==} - dev: false - - /@algolia/cache-browser-local-storage@4.17.0: - resolution: {integrity: sha512-myRSRZDIMYB8uCkO+lb40YKiYHi0fjpWRtJpR/dgkaiBlSD0plRyB6lLOh1XIfmMcSeBOqDE7y9m8xZMrXYfyQ==} - dependencies: - '@algolia/cache-common': 4.17.0 - dev: false - - /@algolia/cache-common@4.17.0: - resolution: {integrity: sha512-g8mXzkrcUBIPZaulAuqE7xyHhLAYAcF2xSch7d9dABheybaU3U91LjBX6eJTEB7XVhEsgK4Smi27vWtAJRhIKQ==} - dev: false - - /@algolia/cache-in-memory@4.17.0: - resolution: {integrity: sha512-PT32ciC/xI8z919d0oknWVu3kMfTlhQn3MKxDln3pkn+yA7F7xrxSALysxquv+MhFfNAcrtQ/oVvQVBAQSHtdw==} - dependencies: - '@algolia/cache-common': 4.17.0 - dev: false - - /@algolia/client-account@4.17.0: - resolution: {integrity: sha512-sSEHx9GA6m7wrlsSMNBGfyzlIfDT2fkz2u7jqfCCd6JEEwmxt8emGmxAU/0qBfbhRSuGvzojoLJlr83BSZAKjA==} - dependencies: - '@algolia/client-common': 4.17.0 - '@algolia/client-search': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - - /@algolia/client-analytics@4.17.0: - resolution: {integrity: sha512-84ooP8QA3mQ958hQ9wozk7hFUbAO+81CX1CjAuerxBqjKIInh1fOhXKTaku05O/GHBvcfExpPLIQuSuLYziBXQ==} - dependencies: - '@algolia/client-common': 4.17.0 - '@algolia/client-search': 4.17.0 - '@algolia/requester-common': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - - /@algolia/client-common@4.17.0: - resolution: {integrity: sha512-jHMks0ZFicf8nRDn6ma8DNNsdwGgP/NKiAAL9z6rS7CymJ7L0+QqTJl3rYxRW7TmBhsUH40wqzmrG6aMIN/DrQ==} - dependencies: - '@algolia/requester-common': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - - /@algolia/client-personalization@4.17.0: - resolution: {integrity: sha512-RMzN4dZLIta1YuwT7QC9o+OeGz2cU6eTOlGNE/6RcUBLOU3l9tkCOdln5dPE2jp8GZXPl2yk54b2nSs1+pAjqw==} - dependencies: - '@algolia/client-common': 4.17.0 - '@algolia/requester-common': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - - /@algolia/client-search@4.17.0: - resolution: {integrity: sha512-x4P2wKrrRIXszT8gb7eWsMHNNHAJs0wE7/uqbufm4tZenAp+hwU/hq5KVsY50v+PfwM0LcDwwn/1DroujsTFoA==} - dependencies: - '@algolia/client-common': 4.17.0 - '@algolia/requester-common': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - - /@algolia/events@4.0.1: - resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - dev: false - - /@algolia/logger-common@4.17.0: - resolution: {integrity: sha512-DGuoZqpTmIKJFDeyAJ7M8E/LOenIjWiOsg1XJ1OqAU/eofp49JfqXxbfgctlVZVmDABIyOz8LqEoJ6ZP4DTyvw==} - dev: false - - /@algolia/logger-console@4.17.0: - resolution: {integrity: sha512-zMPvugQV/gbXUvWBCzihw6m7oxIKp48w37QBIUu/XqQQfxhjoOE9xyfJr1KldUt5FrYOKZJVsJaEjTsu+bIgQg==} - dependencies: - '@algolia/logger-common': 4.17.0 - dev: false - - /@algolia/requester-browser-xhr@4.17.0: - resolution: {integrity: sha512-aSOX/smauyTkP21Pf52pJ1O2LmNFJ5iHRIzEeTh0mwBeADO4GdG94cAWDILFA9rNblq/nK3EDh3+UyHHjplZ1A==} - dependencies: - '@algolia/requester-common': 4.17.0 - dev: false - - /@algolia/requester-common@4.17.0: - resolution: {integrity: sha512-XJjmWFEUlHu0ijvcHBoixuXfEoiRUdyzQM6YwTuB8usJNIgShua8ouFlRWF8iCeag0vZZiUm4S2WCVBPkdxFgg==} - dev: false - - /@algolia/requester-node-http@4.17.0: - resolution: {integrity: sha512-bpb/wDA1aC6WxxM8v7TsFspB7yBN3nqCGs2H1OADolQR/hiAIjAxusbuMxVbRFOdaUvAIqioIIkWvZdpYNIn8w==} - dependencies: - '@algolia/requester-common': 4.17.0 - dev: false - - /@algolia/transporter@4.17.0: - resolution: {integrity: sha512-6xL6H6fe+Fi0AEP3ziSgC+G04RK37iRb4uUUqVAH9WPYFI8g+LYFq6iv5HS8Cbuc5TTut+Bwj6G+dh/asdb9uA==} - dependencies: - '@algolia/cache-common': 4.17.0 - '@algolia/logger-common': 4.17.0 - '@algolia/requester-common': 4.17.0 - dev: false - /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -1192,13 +925,13 @@ packages: peerDependencies: graphql: '*' dependencies: - '@babel/core': 7.21.0 - '@babel/generator': 7.21.1 - '@babel/parser': 7.21.2 + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/parser': 7.21.4 '@babel/runtime': 7.21.0 - '@babel/traverse': 7.21.2 + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 - babel-preset-fbjs: 3.4.0(@babel/core@7.21.0) + babel-preset-fbjs: 3.4.0(@babel/core@7.21.4) chalk: 4.1.2 fb-watchman: 2.0.2 fbjs: 3.0.4 @@ -1215,13 +948,6 @@ packages: - supports-color dev: false - /@babel/code-frame@7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: false - /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} @@ -1357,6 +1083,26 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-create-regexp-features-plugin@7.21.4(@babel/core@7.21.0): resolution: {integrity: sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==} @@ -1431,7 +1177,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color @@ -1510,7 +1256,7 @@ packages: dependencies: '@babel/helper-function-name': 7.21.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 + '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 transitivePeerDependencies: - supports-color @@ -1596,6 +1342,20 @@ packages: '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} @@ -1689,6 +1449,21 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) + dev: true + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.21.4 + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + dev: false /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} @@ -1759,13 +1534,22 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.0): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): @@ -1775,6 +1559,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.0): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1804,13 +1597,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.0): + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -1824,12 +1617,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.0): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.0): @@ -1839,14 +1632,23 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.0): + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.0): @@ -1856,6 +1658,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} @@ -1864,6 +1675,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.0): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1872,6 +1692,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -1880,6 +1709,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -1888,6 +1726,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} @@ -1896,6 +1743,15 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.0): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1915,14 +1771,24 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.0): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): @@ -1933,6 +1799,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} @@ -1956,6 +1833,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} @@ -1965,6 +1853,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} @@ -1984,6 +1883,27 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} @@ -1994,6 +1914,18 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 + dev: true + + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + dev: false /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} @@ -2003,6 +1935,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.4): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} @@ -2036,15 +1979,15 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.0): + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.4): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.4) dev: false /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): @@ -2055,6 +1998,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -2066,6 +2020,19 @@ packages: '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-function-name': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.4): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} @@ -2075,6 +2042,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.4): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} @@ -2084,6 +2062,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.21.0): resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} @@ -2110,6 +2099,21 @@ packages: '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.0): resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} @@ -2171,6 +2175,20 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.0): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} @@ -2180,6 +2198,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.4): + resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} @@ -2189,48 +2218,59 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.0): + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.4): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.21.0): - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} + /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.0): + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.0): + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.4): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.21.4 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) '@babel/types': 7.21.4 dev: false @@ -2263,6 +2303,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.4): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.0): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} @@ -2273,6 +2324,18 @@ packages: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: true + + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.4): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: false /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} @@ -2292,6 +2355,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.4): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.4 + '@babel/helper-plugin-utils': 7.20.2 + dev: false /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.21.0): resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} @@ -2437,21 +2511,21 @@ packages: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.21.2 + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 /@babel/traverse@7.21.2: resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.21.4 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 debug: 4.3.4 globals: 11.12.0 @@ -2486,10 +2560,6 @@ packages: /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@braintree/sanitize-url@6.0.2: - resolution: {integrity: sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==} - dev: false - /@chakra-ui/accordion@1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-Hq5Ie1SI4mmtgBmeuir+f7QKgopZEyQOojgufo/A20keMSy5Yk9WZjkXNQgvoIRl1AsoziIPUlubQOtkBZjjbA==} peerDependencies: @@ -2530,10 +2600,6 @@ packages: '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false - /@chakra-ui/anatomy@2.1.2: - resolution: {integrity: sha512-pKfOS/mztc4sUXHNc8ypJ1gPWSolWT770jrgVRfolVbYlki8y5Y+As996zMF6k5lewTu6j9DQequ7Cc9a69IVQ==} - dev: false - /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: @@ -2623,15 +2689,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/color-mode@2.1.12(react@17.0.2): - resolution: {integrity: sha512-sYyfJGDoJSLYO+V2hxV9r033qhte5Nw/wAn5yRGGZnEEN1dKPEdWQ3XZvglWSDTNd0w9zkoH2w6vP4FBBYb/iw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.5(react@17.0.2) - react: 17.0.2 - dev: false - /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: @@ -2734,29 +2791,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/icon@2.0.5(@chakra-ui/system@2.5.5)(react@17.0.2): - resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - dependencies: - '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) - '@chakra-ui/utils': 1.10.4 - react: 17.0.2 - dev: false - - /@chakra-ui/icons@1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2): - resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - dependencies: - '@chakra-ui/icon': 2.0.5(@chakra-ui/system@2.5.5)(react@17.0.2) - '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) - '@types/react': 17.0.53 - react: 17.0.2 - dev: false - /@chakra-ui/image@1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-PJZmhQ/R1PgdMyCRjALfoyq1FNh/WzMAw70sliHLtLcb9hBXniwQZuckYfUshCkUoFBj/ow9d4byn9Culdpk7Q==} peerDependencies: @@ -2878,10 +2912,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/object-utils@2.0.8: - resolution: {integrity: sha512-2upjT2JgRuiupdrtBWklKBS6tqeGMA77Nh6Q0JaoQuH/8yq+15CGckqn3IUWkWoGI0Fg3bK9LDlbbD+9DLw95Q==} - dev: false - /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: @@ -2983,20 +3013,12 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-env@1.1.6(react@17.0.2): - resolution: {integrity: sha512-L90LNvCfe04FTkN9OPok/o2e60zLJNBH8Im/5dUHvqy7dXLXok8ZDad5vEL46XmGbhe7O8fbxhG6FmAYdcCHrQ==} - peerDependencies: - react: '>=16.8.6' - dependencies: - '@chakra-ui/utils': 1.10.4 - react: 17.0.2 - dev: false - - /@chakra-ui/react-use-safe-layout-effect@2.0.5(react@17.0.2): - resolution: {integrity: sha512-MwAQBz3VxoeFLaesaSEN87reVNVbjcQBDex2WGexAg6hUB6n4gc1OWYH/iXp4tzp4kuggBNhEHkk9BMYXWfhJQ==} + /@chakra-ui/react-env@1.1.6(react@17.0.2): + resolution: {integrity: sha512-L90LNvCfe04FTkN9OPok/o2e60zLJNBH8Im/5dUHvqy7dXLXok8ZDad5vEL46XmGbhe7O8fbxhG6FmAYdcCHrQ==} peerDependencies: - react: '>=18' + react: '>=16.8.6' dependencies: + '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false @@ -3009,15 +3031,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-utils@2.0.12(react@17.0.2): - resolution: {integrity: sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/utils': 2.0.15 - react: 17.0.2 - dev: false - /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: @@ -3095,10 +3108,6 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/shared-utils@2.0.5: - resolution: {integrity: sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==} - dev: false - /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: @@ -3162,14 +3171,6 @@ packages: csstype: 3.0.9 dev: false - /@chakra-ui/styled-system@2.8.0: - resolution: {integrity: sha512-bmRv/8ACJGGKGx84U1npiUddwdNifJ+/ETklGwooS5APM0ymwUtBYZpFxjYNJrqvVYpg3mVY6HhMyBVptLS7iA==} - dependencies: - '@chakra-ui/shared-utils': 2.0.5 - csstype: 3.1.1 - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: @@ -3201,25 +3202,6 @@ packages: react-fast-compare: 3.2.0 dev: false - /@chakra-ui/system@2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): - resolution: {integrity: sha512-52BIp/Zyvefgxn5RTByfkTeG4J+y81LWEjWm8jCaRFsLVm8IFgqIrngtcq4I7gD5n/UKbneHlb4eLHo4uc5yDQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - dependencies: - '@chakra-ui/color-mode': 2.1.12(react@17.0.2) - '@chakra-ui/object-utils': 2.0.8 - '@chakra-ui/react-utils': 2.0.12(react@17.0.2) - '@chakra-ui/styled-system': 2.8.0 - '@chakra-ui/theme-utils': 2.0.15 - '@chakra-ui/utils': 2.0.15 - '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - react: 17.0.2 - react-fast-compare: 3.2.1 - dev: false - /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: @@ -3280,36 +3262,6 @@ packages: '@ctrl/tinycolor': 3.4.1 dev: false - /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@2.5.5): - resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - dependencies: - '@chakra-ui/system': 2.5.5(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) - '@chakra-ui/utils': 1.10.4 - '@ctrl/tinycolor': 3.4.1 - dev: false - - /@chakra-ui/theme-tools@2.0.17(@chakra-ui/styled-system@2.8.0): - resolution: {integrity: sha512-Auu38hnihlJZQcPok6itRDBbwof3TpXGYtDPnOvrq4Xp7jnab36HLt7KEXSDPXbtOk3ZqU99pvI1en5LbDrdjg==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.2 - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.8.0 - color2k: 2.0.2 - dev: false - - /@chakra-ui/theme-utils@2.0.15: - resolution: {integrity: sha512-UuxtEgE7gwMTGDXtUpTOI7F5X0iHB9ekEOG5PWPn2wWBL7rlk2JtPI7UP5Um5Yg6vvBfXYGK1ySahxqsgf+87g==} - dependencies: - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.8.0 - '@chakra-ui/theme': 3.0.1(@chakra-ui/styled-system@2.8.0) - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: @@ -3321,17 +3273,6 @@ packages: '@chakra-ui/utils': 1.10.4 dev: false - /@chakra-ui/theme@3.0.1(@chakra-ui/styled-system@2.8.0): - resolution: {integrity: sha512-92kDm/Ux/51uJqhRKevQo/O/rdwucDYcpHg2QuwzdAxISCeYvgtl2TtgOOl5EnqEP0j3IEAvZHZUlv8TTbawaw==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.2 - '@chakra-ui/shared-utils': 2.0.5 - '@chakra-ui/styled-system': 2.8.0 - '@chakra-ui/theme-tools': 2.0.17(@chakra-ui/styled-system@2.8.0) - dev: false - /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: @@ -3393,15 +3334,6 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/utils@2.0.15: - resolution: {integrity: sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==} - dependencies: - '@types/lodash.mergewith': 4.6.7 - css-box-model: 1.2.1 - framesync: 6.1.2 - lodash.mergewith: 4.6.2 - dev: false - /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: @@ -4649,150 +4581,6 @@ packages: graphql: 16.6.0 dev: false - /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.10.1)(unist-util-visit@2.0.3): - resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} - peerDependencies: - '@chakra-ui/icons': '*' - '@chakra-ui/react': '*' - '@chakra-ui/utils': '*' - '@emotion/react': '*' - '@mdx-js/react': ^2.1.1 - '@theguild/components': ^1.10.3 - framer-motion: '*' - next: '>=12.1.4' - next-i18next: '*' - next-seo: ^5.4.0 - react: '*' - react-dom: '*' - react-icons: ^4.3.1 - react-use: ^17.3.2 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - dependencies: - '@chakra-ui/icons': 1.1.7(@chakra-ui/system@2.5.5)(react@17.0.2) - '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) - '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) - '@mdx-js/react': 2.3.0(react@17.0.2) - '@theguild/components': 1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) - framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) - immer: 9.0.12 - mdx-mermaid: 1.3.2(mermaid@10.1.0)(react@17.0.2)(unist-util-visit@2.0.3) - mermaid: 10.1.0(react-dom@17.0.2)(react@17.0.2) - next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) - next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) - nprogress: 0.2.0 - react: 17.0.2 - react-children-utilities: 2.7.0(react@17.0.2) - react-dom: 17.0.2(react@17.0.2) - react-icons: 4.8.0(react@17.0.2) - react-intersection-observer: 8.33.1(react@17.0.2) - react-sticky-box: 1.0.2(react@17.0.2) - react-use: 17.4.0(react-dom@17.0.2)(react@17.0.2) - remove-markdown: 0.3.0 - use-immer: 0.6.0(immer@9.0.12)(react@17.0.2) - zustand: 3.7.2(react@17.0.2) - transitivePeerDependencies: - - '@types/react' - - shiki - - supports-color - - unist-util-visit - dev: false - - /@guild-docs/mdx-remote@2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1): - resolution: {integrity: sha512-g35B/Lo7s4l3HLcB9Z7jvTYrhMjCLMbfeS4i3rEhzhP54S0lvQ6gFTbVY25nDGZjZGMgMpkykY4Rk/p73UF2qQ==} - peerDependencies: - '@mdx-js/react': ^2.1.1 - react: '*' - dependencies: - '@babel/code-frame': 7.16.7 - '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) - '@mdx-js/mdx': 2.1.1 - '@mdx-js/react': 2.3.0(react@17.0.2) - '@stefanprobst/rehype-shiki': 2.2.0(shiki@0.10.1) - react: 17.0.2 - remark-gfm: 3.0.1 - unified: 10.1.2 - unist-util-remove: 3.1.0 - vfile: 5.3.2 - vfile-matter: 3.0.1 - transitivePeerDependencies: - - '@chakra-ui/react' - - '@types/react' - - next-i18next - - shiki - - supports-color - dev: false - - /@guild-docs/server@4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.10.1): - resolution: {integrity: sha512-LlDr4U8LMwoE3LEmbMgUXlmFBUdHVKzGIOofKG1SR6VNwZEQ8/qAR5eEIdl3xA5VyOCs4PJ0lDJg5pzoECxq8w==} - peerDependencies: - next: '>=12.1.5' - next-i18next: '*' - react: '*' - react-dom: '*' - shiki: '*' - dependencies: - '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.10.1) - '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) - '@stefanprobst/remark-shiki': 2.1.0(shiki@0.10.1) - github-slugger: 1.4.0 - globby: 13.1.1 - gray-matter: 4.0.3 - next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - rehype-slug: 5.0.1 - remark-emoji: 3.0.2 - shiki: 0.10.1 - tiny-lru: 8.0.2 - undici: 5.7.0 - transitivePeerDependencies: - - '@chakra-ui/react' - - '@mdx-js/react' - - '@types/react' - - supports-color - dev: false - - /@guild-docs/types@2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): - resolution: {integrity: sha512-BeObMB7WokzcFO5quSWOOouJL96zneEzE0VS6rkZmg/bG/ukX0S6ODy4/UhxsWphxPYqQ68VAdM57WqTkdlamg==} - peerDependencies: - '@chakra-ui/react': '*' - '@types/react': '*' - next-i18next: '*' - dependencies: - '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@mdx-js/mdx': 2.3.0 - '@types/react': 17.0.53 - next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@guild-docs/types@3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): - resolution: {integrity: sha512-Vd8lgw+p7boag31I2hqpiCgp3aKsLgPNs2WNWx3MZA2bWJ7+qKKDvPP3KiioMGK5nadEq9SsCbG72ogBZbwpag==} - peerDependencies: - '@chakra-ui/react': '*' - '@types/react': '*' - next-i18next: '*' - dependencies: - '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) - '@mdx-js/mdx': 2.3.0 - '@types/react': 17.0.53 - next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: false - /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true @@ -4978,7 +4766,7 @@ packages: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 callsites: 3.1.0 graceful-fs: 4.2.10 @@ -5004,7 +4792,7 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 @@ -5086,18 +4874,7 @@ packages: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - - /@khanacademy/simple-markdown@0.8.6(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-mAUlR9lchzfqunR89pFvNI51jQKsMpJeWYsYWw0DQcUXczn/T/V6510utgvm7X0N3zN87j1SvuKk8cMbl9IAFw==} - peerDependencies: - react: 16.14.0 - react-dom: 16.14.0 - dependencies: - '@types/react': 17.0.53 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - dev: false + '@jridgewell/sourcemap-codec': 1.4.15 /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -5119,64 +4896,6 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdx-js/mdx@2.1.1: - resolution: {integrity: sha512-SXC18cChut3F2zkVXwsb2no0fzTQ1z6swjK13XwFbF5QU/SFQM0orAItPypSdL3GvqYyzVJtz8UofzJhPEQtMw==} - dependencies: - '@types/estree-jsx': 0.0.1 - '@types/mdx': 2.0.4 - astring: 1.8.4 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-walker: 3.0.3 - hast-util-to-estree: 2.3.2 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.1 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@mdx-js/mdx@2.3.0: - resolution: {integrity: sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/mdx': 2.0.4 - estree-util-build-jsx: 2.2.2 - estree-util-is-identifier-name: 2.1.0 - estree-util-to-js: 1.2.0 - estree-walker: 3.0.3 - hast-util-to-estree: 2.3.2 - markdown-extensions: 1.1.1 - periscopic: 3.1.0 - remark-mdx: 2.3.0 - remark-parse: 10.0.1 - remark-rehype: 10.1.0 - unified: 10.1.2 - unist-util-position-from-estree: 1.1.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - vfile: 5.3.7 - transitivePeerDependencies: - - supports-color - dev: false - - /@mdx-js/react@2.3.0(react@17.0.2): - resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} - peerDependencies: - react: '>=16' - dependencies: - '@types/mdx': 2.0.4 - '@types/react': 17.0.53 - react: 17.0.2 - dev: false - /@motionone/animation@10.14.0: resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: @@ -5224,15 +4943,6 @@ packages: tslib: 2.5.0 dev: false - /@next/bundle-analyzer@12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-eKjgRICzbLTmod0UnJcArFVs5uEAiuZwB6NCf84m+btW7jdylUVoOYf1wi5tA14xk5L9Lho7Prm6/XJ8gxYzfQ==} - dependencies: - webpack-bundle-analyzer: 4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} @@ -5473,208 +5183,10 @@ packages: engines: {node: '>=14.6'} dev: true - /@polka/url@1.0.0-next.21: - resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} - dev: true - /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@radix-ui/primitive@0.1.0: - resolution: {integrity: sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - - /@radix-ui/react-collection@0.1.4(react@17.0.2): - resolution: {integrity: sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) - '@radix-ui/react-context': 0.1.1(react@17.0.2) - '@radix-ui/react-primitive': 0.1.4(react@17.0.2) - '@radix-ui/react-slot': 0.1.2(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-compose-refs@0.1.0(react@17.0.2): - resolution: {integrity: sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-context@0.1.1(react@17.0.2): - resolution: {integrity: sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-dismissable-layer@0.1.5(react@17.0.2): - resolution: {integrity: sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) - '@radix-ui/react-primitive': 0.1.4(react@17.0.2) - '@radix-ui/react-use-body-pointer-events': 0.1.1(react@17.0.2) - '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) - '@radix-ui/react-use-escape-keydown': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-id@0.1.5(react@17.0.2): - resolution: {integrity: sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-navigation-menu@0.1.2(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-b9+2ambunxMNw4pgOt9xqzVN/A5NPajpiKvR45zI/BS/uOWfV1A3N5Kn+OIbRMln9GyBnuoxXV0tUBLC2rAzpw==} - peerDependencies: - react: ^16.8 || ^17.0 - react-dom: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-collection': 0.1.4(react@17.0.2) - '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) - '@radix-ui/react-context': 0.1.1(react@17.0.2) - '@radix-ui/react-dismissable-layer': 0.1.5(react@17.0.2) - '@radix-ui/react-id': 0.1.5(react@17.0.2) - '@radix-ui/react-presence': 0.1.2(react@17.0.2) - '@radix-ui/react-primitive': 0.1.4(react@17.0.2) - '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) - '@radix-ui/react-use-controllable-state': 0.1.0(react@17.0.2) - '@radix-ui/react-use-direction': 0.1.0(react@17.0.2) - '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) - '@radix-ui/react-use-previous': 0.1.1(react@17.0.2) - '@radix-ui/react-visually-hidden': 0.1.4(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - dev: false - - /@radix-ui/react-presence@0.1.2(react@17.0.2): - resolution: {integrity: sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==} - peerDependencies: - react: '>=16.8' - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) - '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-primitive@0.1.4(react@17.0.2): - resolution: {integrity: sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-slot': 0.1.2(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-slot@0.1.2(react@17.0.2): - resolution: {integrity: sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-use-body-pointer-events@0.1.1(react@17.0.2): - resolution: {integrity: sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-use-callback-ref@0.1.0(react@17.0.2): - resolution: {integrity: sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-use-controllable-state@0.1.0(react@17.0.2): - resolution: {integrity: sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-use-direction@0.1.0(react@17.0.2): - resolution: {integrity: sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-use-escape-keydown@0.1.0(react@17.0.2): - resolution: {integrity: sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) - react: 17.0.2 - dev: false - - /@radix-ui/react-use-layout-effect@0.1.0(react@17.0.2): - resolution: {integrity: sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-use-previous@0.1.1(react@17.0.2): - resolution: {integrity: sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - react: 17.0.2 - dev: false - - /@radix-ui/react-visually-hidden@0.1.4(react@17.0.2): - resolution: {integrity: sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==} - peerDependencies: - react: ^16.8 || ^17.0 - dependencies: - '@babel/runtime': 7.21.0 - '@radix-ui/react-primitive': 0.1.4(react@17.0.2) - react: 17.0.2 - dev: false - /@reach/alert@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg==} peerDependencies: @@ -5733,8 +5245,23 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false - /@react-hookz/web@22.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jl4JgUXaiSvvDVQD2z/rq2/RaykjjLrAZxHOEQj2H38j4UFWIVhv5oKUH8yrKF4wX6tMX9gdrj62f9yGq/nSaQ==} + /@react-hookz/web@22.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jl4JgUXaiSvvDVQD2z/rq2/RaykjjLrAZxHOEQj2H38j4UFWIVhv5oKUH8yrKF4wX6tMX9gdrj62f9yGq/nSaQ==} + peerDependencies: + js-cookie: ^3.0.1 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + dependencies: + '@react-hookz/deep-equal': 1.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-hookz/web@23.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-diBtlo17CJtZJ/Yb8veri7hZL7QPnqNZ+IAMHWWSb//nq+Z3XDHaXcozH7cyvMZj4gYwQeY/L/H4298etHxu1Q==} peerDependencies: js-cookie: ^3.0.1 react: ^16.8 || ^17 || ^18 @@ -5854,38 +5381,6 @@ packages: size-limit: 8.2.4 dev: true - /@stefanprobst/rehype-shiki@2.2.0(shiki@0.10.1): - resolution: {integrity: sha512-X/m9hUMifZYJk77pc9dTl8Q5DLWdXegzmHhPZ5yraFpQXG9n/m2jKMLvIR7F6gI8l5plj6aNx/qcMCMnfBwBOA==} - engines: {node: '>=14.17', yarn: 1.x} - peerDependencies: - shiki: ^0.10.0 - dependencies: - hast-util-to-string: 2.0.0 - json5: 2.2.3 - parse-numeric-range: 1.3.0 - remark-parse: 10.0.1 - remark-rehype: 10.1.0 - shiki: 0.10.1 - shiki-renderer-hast: 1.1.5(shiki@0.10.1) - unified: 10.1.2 - unist-util-visit: 4.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@stefanprobst/remark-shiki@2.1.0(shiki@0.10.1): - resolution: {integrity: sha512-cIQBMke/gP2W8sqxW2QW0qWQFbPnE8WQU4k32lKwEAOm/hZRuXxULRDdhNgJzMRoZBtVedyuW0RsedKKD94CCQ==} - engines: {node: '>=14.17', yarn: 1.x} - peerDependencies: - shiki: ^0.10.0 - dependencies: - json5: 2.2.3 - parse-numeric-range: 1.3.0 - shiki: 0.10.1 - unified: 10.1.2 - unist-util-visit: 4.1.2 - dev: false - /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: @@ -5926,7 +5421,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks@8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2): + /@testing-library/react-hooks@8.0.1(@types/react@18.2.0)(react-dom@18.2.0)(react-test-renderer@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -5943,14 +5438,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.21.0 - '@types/react': 17.0.53 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-error-boundary: 3.1.4(react@17.0.2) - react-test-renderer: 17.0.2(react@17.0.2) + '@types/react': 18.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-error-boundary: 3.1.4(react@18.2.0) + react-test-renderer: 18.2.0(react@18.2.0) dev: true - /@testing-library/react@12.1.5(react-dom@17.0.2)(react@17.0.2): + /@testing-library/react@12.1.5(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} engines: {node: '>=12'} peerDependencies: @@ -5960,42 +5455,10 @@ packages: '@babel/runtime': 7.21.0 '@testing-library/dom': 8.19.0 '@types/react-dom': 17.0.18 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) dev: true - /@theguild/components@1.12.0(@algolia/client-search@4.17.0)(@types/react@17.0.53)(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): - resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} - peerDependencies: - react: ^17.0.2 - react-dom: ^17.0.2 - dependencies: - '@algolia/autocomplete-js': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-plugin-algolia-insights': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0)(search-insights@2.4.0) - '@algolia/autocomplete-plugin-query-suggestions': 1.8.3(@algolia/client-search@4.17.0)(algoliasearch@4.17.0) - '@algolia/autocomplete-theme-classic': 1.8.3 - '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) - '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) - '@radix-ui/react-navigation-menu': 0.1.2(react-dom@17.0.2)(react@17.0.2) - algoliasearch: 4.17.0 - focus-trap-react: 9.0.2(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2) - polished: 4.2.2 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-instantsearch-dom: 6.17.0(algoliasearch@4.17.0)(react-dom@17.0.2)(react@17.0.2) - react-paginate: 7.1.5(react@17.0.2) - react-player: 2.12.0(react@17.0.2) - search-insights: 2.4.0 - tinykeys: 1.4.0 - twin.macro: 2.8.2(ts-node@10.9.1) - use-debounce: 8.0.4(react@17.0.2) - transitivePeerDependencies: - - '@algolia/client-search' - - '@types/react' - - prop-types - - ts-node - dev: false - /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: true @@ -6022,12 +5485,6 @@ packages: dependencies: '@types/node': 18.15.11 - /@types/acorn@4.0.6: - resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} - dependencies: - '@types/estree': 1.0.0 - dev: false - /@types/aria-query@4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true @@ -6035,7 +5492,7 @@ packages: /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 @@ -6049,7 +5506,7 @@ packages: /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.2 + '@babel/parser': 7.21.4 '@babel/types': 7.21.4 /@types/babel__traverse@7.18.2: @@ -6087,24 +5544,6 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.15.11 - /@types/debug@4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} - dependencies: - '@types/ms': 0.7.31 - dev: false - - /@types/estree-jsx@0.0.1: - resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} - dependencies: - '@types/estree': 1.0.0 - dev: false - - /@types/estree-jsx@1.0.0: - resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} - dependencies: - '@types/estree': 1.0.0 - dev: false - /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false @@ -6141,19 +5580,6 @@ packages: fs-capacitor: 8.0.0 graphql: 16.6.0 - /@types/hast@2.3.4: - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /@types/hoist-non-react-statics@3.3.1: - resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} - dependencies: - '@types/react': 17.0.53 - hoist-non-react-statics: 3.3.2 - dev: false - /@types/http-assert@1.5.3: resolution: {integrity: sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==} @@ -6192,14 +5618,6 @@ packages: expect: 29.5.0 pretty-format: 29.5.0 - /@types/js-cookie@2.2.7: - resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} - dev: false - - /@types/js-yaml@4.0.5: - resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} - dev: false - /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: @@ -6248,29 +5666,9 @@ packages: '@types/lodash': 4.14.191 dev: false - /@types/lodash.mergewith@4.6.7: - resolution: {integrity: sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==} - dependencies: - '@types/lodash': 4.14.192 - dev: false - /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - /@types/lodash@4.14.192: - resolution: {integrity: sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==} - dev: false - - /@types/mdast@3.0.11: - resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /@types/mdx@2.0.4: - resolution: {integrity: sha512-qCYrNdpKwN6YO6FVnx+ulfqifKlE3lQGsNhvDaW9Oxzyob/cRLBJWow8GHBBD4NxQ7BVvtsATgLsX0vZAWmtrg==} - dev: false - /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: @@ -6296,6 +5694,7 @@ packages: /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + dev: true /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} @@ -6341,7 +5740,13 @@ packages: /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 17.0.53 + '@types/react': 18.2.0 + + /@types/react-dom@18.2.1: + resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} + dependencies: + '@types/react': 18.2.0 + dev: true /@types/react@17.0.53: resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} @@ -6350,6 +5755,13 @@ packages: '@types/scheduler': 0.16.2 csstype: 3.1.1 + /@types/react@18.2.0: + resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} @@ -6386,10 +5798,6 @@ packages: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/unist@2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} - dev: false - /@types/use-sync-external-store@0.0.3: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true @@ -6547,19 +5955,15 @@ packages: engines: {node: '>=12.0.0'} deprecated: This package has been deprecated in favor of @vitejs/plugin-react dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.0) + '@babel/core': 7.21.4 + '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) '@rollup/pluginutils': 4.2.1 react-refresh: 0.10.0 transitivePeerDependencies: - supports-color dev: true - /@xobotyi/scrollbar-width@1.9.5: - resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} - dev: false - /@zeit/schemas@2.29.0: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true @@ -6601,29 +6005,10 @@ packages: dependencies: acorn: 8.8.1 - /acorn-node@1.8.2: - resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - xtend: 4.0.2 - dev: false - - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: false - /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} @@ -6665,34 +6050,6 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper@3.12.0(algoliasearch@4.17.0): - resolution: {integrity: sha512-/j1U3PEwdan0n6P/QqSnSpNSLC5+cEMvyljd5CnmNmUjDlGrys+vFEOwjVEnqELIiAGMHEA/Nl3CiKVFBUYqyQ==} - peerDependencies: - algoliasearch: '>= 3.1 < 6' - dependencies: - '@algolia/events': 4.0.1 - algoliasearch: 4.17.0 - dev: false - - /algoliasearch@4.17.0: - resolution: {integrity: sha512-JMRh2Mw6sEnVMiz6+APsi7lx9a2jiDFF+WUtANaUVCv6uSU9UOLdo5h9K3pdP6frRRybaM2fX8b1u0nqICS9aA==} - dependencies: - '@algolia/cache-browser-local-storage': 4.17.0 - '@algolia/cache-common': 4.17.0 - '@algolia/cache-in-memory': 4.17.0 - '@algolia/client-account': 4.17.0 - '@algolia/client-analytics': 4.17.0 - '@algolia/client-common': 4.17.0 - '@algolia/client-personalization': 4.17.0 - '@algolia/client-search': 4.17.0 - '@algolia/logger-common': 4.17.0 - '@algolia/logger-console': 4.17.0 - '@algolia/requester-browser-xhr': 4.17.0 - '@algolia/requester-common': 4.17.0 - '@algolia/requester-node-http': 4.17.0 - '@algolia/transporter': 4.17.0 - dev: false - /altair-static-slim@5.0.9: resolution: {integrity: sha512-PlG7yCBfV+dvBWRJBFb/v9m8N7lZcBTFdYNV1WIQfHW7w/sU8yat35uxGoAQ9K7XkOHNpRF0wdyRqmGwtro0bg==} dev: false @@ -6808,10 +6165,6 @@ packages: engines: {node: '>=8'} dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: true - /array-includes@3.1.6: resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} engines: {node: '>= 0.4'} @@ -6879,11 +6232,6 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: false - /astring@1.8.4: - resolution: {integrity: sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==} - hasBin: true - dev: false - /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true @@ -6948,17 +6296,17 @@ packages: deep-equal: 2.0.5 dev: false - /babel-jest@29.5.0(@babel/core@7.21.0): + /babel-jest@29.5.0(@babel/core@7.21.4): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.21.0) + babel-preset-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -6986,14 +6334,6 @@ packages: '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 - /babel-plugin-macros@2.8.0: - resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} - dependencies: - '@babel/runtime': 7.21.0 - cosmiconfig: 6.0.0 - resolve: 1.22.1 - dev: false - /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} @@ -7043,79 +6383,75 @@ packages: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.0): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.0) - - /babel-preset-fbjs@3.4.0(@babel/core@7.21.0): + '@babel/core': 7.21.4 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) + + /babel-preset-fbjs@3.4.0(@babel/core@7.21.4): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.0) - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.0) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.0) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.0) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.0) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.0) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.0) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.0) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.0) + '@babel/core': 7.21.4 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.4) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.4) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.4) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.4) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.4) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.4) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color dev: false - /babel-preset-jest@29.5.0(@babel/core@7.21.0): + /babel-preset-jest@29.5.0(@babel/core@7.21.4): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.0) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) /backo2@1.0.2: resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -7237,26 +6573,6 @@ packages: fsevents: 2.3.2 dev: true - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} @@ -7378,10 +6694,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -7447,10 +6759,6 @@ packages: upper-case-first: 2.0.2 dev: false - /ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - dev: false - /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} @@ -7536,22 +6844,6 @@ packages: engines: {node: '>=12.20'} dev: false - /character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - dev: false - - /character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - dev: false - - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false - - /character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - dev: false - /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -7576,14 +6868,6 @@ packages: /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false - - /clean-set@1.1.2: - resolution: {integrity: sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==} - dev: false - /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -7662,32 +6946,6 @@ packages: /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - dev: false - - /color2k@2.0.2: - resolution: {integrity: sha512-kJhwH5nAwb34tmyuqq/lgjEKzlFXn1U99NlnB6Ws4qVaERcRUYeYP1cBw6BJ4vxaWStAUEef4WMr7WjOCnBt8w==} - dev: false - - /color@3.2.1: - resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} - dependencies: - color-convert: 1.9.3 - color-string: 1.9.1 - dev: false - - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - dev: false - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -7695,10 +6953,6 @@ packages: delayed-stream: 1.0.0 dev: true - /comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - dev: false - /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} @@ -7709,26 +6963,6 @@ packages: engines: {node: '>= 6'} dev: false - /commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - dev: true - - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - - /commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - dev: false - /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} @@ -7797,31 +7031,16 @@ packages: engines: {node: '>= 0.6'} dev: true - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - dev: true - /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: true - /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + dev: false /copy-to-clipboard@3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} @@ -7835,34 +7054,6 @@ packages: browserslist: 4.21.5 dev: true - /core-js@3.30.0: - resolution: {integrity: sha512-hQotSSARoNh1mYPi9O2YaWeiq/cEB95kOrFb4NCrO4RIFt1qqNpKsaE+vy/L3oiqvND5cThqXzUU3r9F7Efztg==} - requiresBuild: true - dev: false - - /cose-base@1.0.3: - resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} - dependencies: - layout-base: 1.0.2 - dev: false - - /cose-base@2.2.0: - resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - dependencies: - layout-base: 2.0.1 - dev: false - - /cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - dependencies: - '@types/parse-json': 4.0.0 - import-fresh: 3.3.0 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - dev: false - /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -7944,35 +7135,13 @@ packages: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} dependencies: - type-fest: 1.4.0 - dev: true - - /css-box-model@1.2.1: - resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} - dependencies: - tiny-invariant: 1.3.1 - dev: false - - /css-color-names@0.0.4: - resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} - dev: false - - /css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} - dependencies: - hyphenate-style-name: 1.0.4 - dev: false - - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - dev: false + type-fest: 1.4.0 + dev: true - /css-unit-converter@1.1.2: - resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} + /css-box-model@1.2.1: + resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} + dependencies: + tiny-invariant: 1.3.1 dev: false /css.escape@1.5.1: @@ -8029,287 +7198,6 @@ packages: stream-transform: 2.1.3 dev: true - /cytoscape-cose-bilkent@4.1.0(cytoscape@3.23.0): - resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} - peerDependencies: - cytoscape: ^3.2.0 - dependencies: - cose-base: 1.0.3 - cytoscape: 3.23.0 - dev: false - - /cytoscape-fcose@2.2.0(cytoscape@3.23.0): - resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} - peerDependencies: - cytoscape: ^3.2.0 - dependencies: - cose-base: 2.2.0 - cytoscape: 3.23.0 - dev: false - - /cytoscape@3.23.0: - resolution: {integrity: sha512-gRZqJj/1kiAVPkrVFvz/GccxsXhF3Qwpptl32gKKypO4IlqnKBjTOu+HbXtEggSGzC5KCaHp3/F7GgENrtsFkA==} - engines: {node: '>=0.10'} - dependencies: - heap: 0.2.7 - lodash: 4.17.21 - dev: false - - /d3-array@3.2.3: - resolution: {integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==} - engines: {node: '>=12'} - dependencies: - internmap: 2.0.3 - dev: false - - /d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - dev: false - - /d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - - /d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} - dependencies: - d3-path: 3.1.0 - dev: false - - /d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - dev: false - - /d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.3 - dev: false - - /d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} - dependencies: - delaunator: 5.0.0 - dev: false - - /d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - dev: false - - /d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - dev: false - - /d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - dev: false - - /d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - dev: false - - /d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - dependencies: - d3-dsv: 3.0.1 - dev: false - - /d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - dev: false - - /d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - dev: false - - /d3-geo@3.1.0: - resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.3 - dev: false - - /d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - dev: false - - /d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - dev: false - - /d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - dev: false - - /d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - dev: false - - /d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - dev: false - - /d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - dev: false - - /d3-scale-chromatic@3.0.0: - resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} - engines: {node: '>=12'} - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - dev: false - - /d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.3 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - dev: false - - /d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - dev: false - - /d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - dependencies: - d3-path: 3.1.0 - dev: false - - /d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - dependencies: - d3-time: 3.1.0 - dev: false - - /d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.3 - dev: false - - /d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - dev: false - - /d3-transition@3.0.1(d3-selection@3.0.0): - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - dev: false - - /d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - dev: false - - /d3@7.8.4: - resolution: {integrity: sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==} - engines: {node: '>=12'} - dependencies: - d3-array: 3.2.3 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.2 - d3-delaunay: 6.0.4 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.0 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.0.0 - d3-selection: 3.0.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - dev: false - - /dagre-d3-es@7.0.10: - resolution: {integrity: sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==} - dependencies: - d3: 7.8.4 - lodash-es: 4.17.21 - dev: false - /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: false @@ -8336,10 +7224,6 @@ packages: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} - /dayjs@1.11.7: - resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} - dev: false - /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -8394,12 +7278,6 @@ packages: resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==} dev: true - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - dev: false - /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -8473,16 +7351,6 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /defined@1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: false - - /delaunator@5.0.0: - resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} - dependencies: - robust-predicates: 3.0.1 - dev: false - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -8493,26 +7361,11 @@ packages: engines: {node: '>= 0.6'} dev: false - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: true - /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} dev: false - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: false - - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: true - /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -8526,16 +7379,6 @@ packages: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /detective@5.2.1: - resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} - engines: {node: '>=0.8.0'} - hasBin: true - dependencies: - acorn-node: 1.8.2 - defined: 1.0.1 - minimist: 1.2.7 - dev: false - /dicer@0.3.0: resolution: {integrity: sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==} engines: {node: '>=4.5.0'} @@ -8555,11 +7398,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: false - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -8594,10 +7432,6 @@ packages: webidl-conversions: 7.0.0 dev: true - /dompurify@2.4.5: - resolution: {integrity: sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==} - dev: false - /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -8610,11 +7444,6 @@ packages: engines: {node: '>=12'} dev: false - /dset@3.1.2: - resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} - engines: {node: '>=4'} - dev: false - /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -8623,17 +7452,9 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: true - /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /elkjs@0.8.2: - resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} - dev: false - /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -8644,15 +7465,6 @@ packages: /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - /emoticon@4.0.1: - resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} - dev: false - - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: true - /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -8684,12 +7496,6 @@ packages: dependencies: is-arrayish: 0.2.1 - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - dependencies: - stackframe: 1.3.4 - dev: false - /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} @@ -8777,10 +7583,6 @@ packages: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: true - /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -8793,11 +7595,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - dev: false - /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} @@ -9112,57 +7909,13 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /estree-util-attach-comments@2.1.1: - resolution: {integrity: sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==} - dependencies: - '@types/estree': 1.0.0 - dev: false - - /estree-util-build-jsx@2.2.2: - resolution: {integrity: sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==} - dependencies: - '@types/estree-jsx': 1.0.0 - estree-util-is-identifier-name: 2.1.0 - estree-walker: 3.0.3 - dev: false - - /estree-util-is-identifier-name@2.1.0: - resolution: {integrity: sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==} - dev: false - - /estree-util-to-js@1.2.0: - resolution: {integrity: sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==} - dependencies: - '@types/estree-jsx': 1.0.0 - astring: 1.8.4 - source-map: 0.7.4 - dev: false - - /estree-util-visit@1.2.1: - resolution: {integrity: sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/unist': 2.0.6 - dev: false - /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - dependencies: - '@types/estree': 1.0.0 - dev: false - /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: true - /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: @@ -9242,56 +7995,6 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.5.0 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.2.0 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.11.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: false - - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: false - /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true @@ -9349,10 +8052,6 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - /fast-loops@1.1.3: - resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} - dev: false - /fast-querystring@1.0.0: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} dependencies: @@ -9364,10 +8063,6 @@ packages: engines: {node: '>=6'} dev: false - /fast-shallow-equal@1.0.0: - resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - dev: false - /fast-uri@2.1.0: resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==} dev: false @@ -9378,10 +8073,6 @@ packages: punycode: 1.4.1 dev: true - /fastest-stable-stringify@2.0.2: - resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} - dev: false - /fastify-plugin@4.3.0: resolution: {integrity: sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==} @@ -9471,21 +8162,6 @@ packages: dependencies: to-regex-range: 5.0.1 - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true - /find-my-way@7.6.0: resolution: {integrity: sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ==} engines: {node: '>=14'} @@ -9533,36 +8209,16 @@ packages: engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 - rimraf: 3.0.2 - - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - /focus-lock@0.9.2: - resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} - engines: {node: '>=10'} - dependencies: - tslib: 2.5.0 - dev: false - - /focus-trap-react@9.0.2(prop-types@15.8.1)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-ZwhO5by6KG5r3dy48Lk00A1/0zNYw1Z3RZTN6O6kgAPsWFcwTFszOcQ1dLSfM8pIxpS/ttc7wTttJowjVT3jpg==} - peerDependencies: - prop-types: ^15.8.1 - react: '>=16.3.0' - react-dom: '>=16.3.0' - dependencies: - focus-trap: 6.9.4 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - tabbable: 5.3.3 - dev: false + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - /focus-trap@6.9.4: - resolution: {integrity: sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==} + /focus-lock@0.9.2: + resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} + engines: {node: '>=10'} dependencies: - tabbable: 5.3.3 + tslib: 2.5.0 dev: false /follow-redirects@1.15.2: @@ -9611,6 +8267,7 @@ packages: /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + dev: false /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} @@ -9646,17 +8303,6 @@ packages: tslib: 2.5.0 dev: false - /framesync@6.1.2: - resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} - dependencies: - tslib: 2.4.0 - dev: false - - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: true - /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true @@ -9670,15 +8316,6 @@ packages: resolution: {integrity: sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==} engines: {node: ^14.17.0 || >=16.0.0} - /fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -9773,10 +8410,6 @@ packages: resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} dev: false - /github-slugger@1.4.0: - resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} - dev: false - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -9856,17 +8489,6 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby@13.1.1: - resolution: {integrity: sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.0 - merge2: 1.4.1 - slash: 4.0.0 - dev: false - /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9949,23 +8571,6 @@ packages: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - /gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - dev: false - - /gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - dependencies: - duplexer: 0.1.2 - dev: true - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -10003,64 +8608,6 @@ packages: dependencies: function-bind: 1.1.1 - /hast-util-has-property@2.0.1: - resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==} - dev: false - - /hast-util-heading-rank@2.1.1: - resolution: {integrity: sha512-iAuRp+ESgJoRFJbSyaqsfvJDY6zzmFoEnL1gtz1+U8gKtGGj1p0CVlysuUAUjq95qlZESHINLThwJzNGmgGZxA==} - dependencies: - '@types/hast': 2.3.4 - dev: false - - /hast-util-parse-selector@3.1.1: - resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} - dependencies: - '@types/hast': 2.3.4 - dev: false - - /hast-util-to-estree@2.3.2: - resolution: {integrity: sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==} - dependencies: - '@types/estree': 1.0.0 - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/unist': 2.0.6 - comma-separated-tokens: 2.0.3 - estree-util-attach-comments: 2.1.1 - estree-util-is-identifier-name: 2.1.0 - hast-util-whitespace: 2.0.1 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdxjs-esm: 1.3.1 - property-information: 6.2.0 - space-separated-tokens: 2.0.2 - style-to-object: 0.4.1 - unist-util-position: 4.0.4 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - dev: false - - /hast-util-to-string@2.0.0: - resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} - dependencies: - '@types/hast': 2.3.4 - dev: false - - /hast-util-whitespace@2.0.1: - resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - dev: false - - /hastscript@7.2.0: - resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} - dependencies: - '@types/hast': 2.3.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 3.1.1 - property-information: 6.2.0 - space-separated-tokens: 2.0.2 - dev: false - /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: @@ -10068,14 +8615,6 @@ packages: tslib: 2.5.0 dev: false - /heap@0.2.7: - resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} - dev: false - - /hex-color-regex@1.1.0: - resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} - dev: false - /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false @@ -10104,18 +8643,6 @@ packages: lru-cache: 7.18.1 dev: true - /hsl-regex@1.0.0: - resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} - dev: false - - /hsla-regex@1.0.0: - resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} - dev: false - - /htm@3.1.1: - resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} - dev: false - /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -10126,17 +8653,6 @@ packages: /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} - dependencies: - void-elements: 3.1.0 - dev: false - - /html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - dev: false - /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} @@ -10148,17 +8664,6 @@ packages: toidentifier: 1.0.1 dev: false - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - dev: true - /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -10199,20 +8704,6 @@ packages: hasBin: true dev: true - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - dev: false - - /i18next-fs-backend@2.1.1: - resolution: {integrity: sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==} - dev: false - - /i18next@22.4.13: - resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -10224,6 +8715,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -10232,10 +8724,6 @@ packages: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - /immer@9.0.12: - resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} - dev: false - /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} @@ -10288,17 +8776,6 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /inline-style-parser@0.1.1: - resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - dev: false - - /inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} - dependencies: - css-in-js-utils: 3.1.0 - fast-loops: 1.1.3 - dev: false - /inquirer@8.2.5: resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} engines: {node: '>=12.0.0'} @@ -10328,11 +8805,6 @@ packages: has: 1.0.3 side-channel: 1.0.4 - /internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - dev: false - /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -10342,6 +8814,7 @@ packages: /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + dev: false /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} @@ -10351,17 +8824,6 @@ packages: is-windows: 1.0.2 dev: false - /is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - dev: false - - /is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - dev: false - /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -10372,10 +8834,6 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -10394,11 +8852,6 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -10410,17 +8863,6 @@ packages: ci-info: 3.7.1 dev: true - /is-color-stop@1.1.0: - resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} - dependencies: - css-color-names: 0.0.4 - hex-color-regex: 1.1.0 - hsl-regex: 1.0.0 - hsla-regex: 1.0.0 - rgb-regex: 1.0.1 - rgba-regex: 1.0.0 - dev: false - /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: @@ -10432,10 +8874,6 @@ packages: dependencies: has-tostringtag: 1.0.0 - /is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - dev: false - /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -10447,11 +8885,6 @@ packages: hasBin: true dev: true - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -10470,10 +8903,6 @@ packages: dependencies: is-extglob: 2.1.1 - /is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - dev: false - /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -10533,12 +8962,6 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-reference@3.0.1: - resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} - dependencies: - '@types/estree': 1.0.0 - dev: false - /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -10677,8 +9100,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.0 - '@babel/parser': 7.21.2 + '@babel/core': 7.21.4 + '@babel/parser': 7.21.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -10786,11 +9209,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.11 - babel-jest: 29.5.0(@babel/core@7.21.0) + babel-jest: 29.5.0(@babel/core@7.21.4) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -11031,10 +9454,10 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.21.0 + '@babel/core': 7.21.4 '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.0) - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.0) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.4) '@babel/traverse': 7.21.2 '@babel/types': 7.21.4 '@jest/expect-utils': 29.5.0 @@ -11042,7 +9465,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.0) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -11151,10 +9574,6 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - dev: false - /js-sdsl@4.4.0: resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} @@ -11249,24 +9668,12 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: false - /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - dev: false - /jsx-ast-utils@3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} @@ -11299,13 +9706,10 @@ packages: resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} dev: true - /khroma@2.0.0: - resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} - dev: false - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} + dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -11314,6 +9718,7 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + dev: true /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} @@ -11325,14 +9730,6 @@ packages: language-subtag-registry: 0.3.22 dev: false - /layout-base@1.0.2: - resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} - dev: false - - /layout-base@2.0.1: - resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - dev: false - /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -11367,10 +9764,6 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /load-script@1.0.0: - resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} - dev: false - /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} @@ -11407,14 +9800,6 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: true - /lodash.flatmap@4.5.0: - resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} - dev: false - - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} - dev: false - /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -11429,10 +9814,6 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.topath@4.5.2: - resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} - dev: false - /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -11444,10 +9825,6 @@ packages: is-unicode-supported: 0.1.0 dev: false - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false - /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -11500,252 +9877,32 @@ packages: dependencies: semver: 6.3.0 - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - dependencies: - tmpl: 1.0.5 - - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: false - - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true - - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true - - /map-stream@0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - dev: true - - /markdown-extensions@1.1.1: - resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} - engines: {node: '>=0.10.0'} - dev: false - - /markdown-table@3.0.3: - resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - dev: false - - /mdast-util-definitions@5.1.2: - resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} - dependencies: - '@types/mdast': 3.0.11 - '@types/unist': 2.0.6 - unist-util-visit: 4.1.2 - dev: false - - /mdast-util-find-and-replace@2.2.2: - resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} - dependencies: - '@types/mdast': 3.0.11 - escape-string-regexp: 5.0.0 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: false - - /mdast-util-from-markdown@1.3.0: - resolution: {integrity: sha512-HN3W1gRIuN/ZW295c7zi7g9lVBllMgZE40RxCX37wrTPWXCWtpvOZdfnuK+1WNpvZje6XuJeI3Wnb4TJEUem+g==} - dependencies: - '@types/mdast': 3.0.11 - '@types/unist': 2.0.6 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-decode-string: 1.0.2 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} - dependencies: - '@types/mdast': 3.0.11 - ccount: 2.0.1 - mdast-util-find-and-replace: 2.2.2 - micromark-util-character: 1.1.0 - dev: false - - /mdast-util-gfm-footnote@1.0.2: - resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} - dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - micromark-util-normalize-identifier: 1.0.0 - dev: false - - /mdast-util-gfm-strikethrough@1.0.3: - resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} - dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - dev: false - - /mdast-util-gfm-table@1.0.7: - resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} - dependencies: - '@types/mdast': 3.0.11 - markdown-table: 3.0.3 - mdast-util-from-markdown: 1.3.0 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-gfm-task-list-item@1.0.2: - resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} - dependencies: - '@types/mdast': 3.0.11 - mdast-util-to-markdown: 1.5.0 - dev: false - - /mdast-util-gfm@2.0.2: - resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} - dependencies: - mdast-util-from-markdown: 1.3.0 - mdast-util-gfm-autolink-literal: 1.0.3 - mdast-util-gfm-footnote: 1.0.2 - mdast-util-gfm-strikethrough: 1.0.3 - mdast-util-gfm-table: 1.0.7 - mdast-util-gfm-task-list-item: 1.0.2 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx-expression@1.3.2: - resolution: {integrity: sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx-jsx@2.1.2: - resolution: {integrity: sha512-o9vBCYQK5ZLGEj3tCGISJGjvafyHRVJlZmfJzSE7xjiogSzIeph/Z4zMY65q4WGRMezQBeAwPlrdymDYYYx0tA==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.11 - '@types/unist': 2.0.6 - ccount: 2.0.1 - mdast-util-from-markdown: 1.3.0 - mdast-util-to-markdown: 1.5.0 - parse-entities: 4.0.1 - stringify-entities: 4.0.3 - unist-util-remove-position: 4.0.2 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdx@2.0.1: - resolution: {integrity: sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==} - dependencies: - mdast-util-from-markdown: 1.3.0 - mdast-util-mdx-expression: 1.3.2 - mdast-util-mdx-jsx: 2.1.2 - mdast-util-mdxjs-esm: 1.3.1 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-mdxjs-esm@1.3.1: - resolution: {integrity: sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==} - dependencies: - '@types/estree-jsx': 1.0.0 - '@types/hast': 2.3.4 - '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 - mdast-util-to-markdown: 1.5.0 - transitivePeerDependencies: - - supports-color - dev: false - - /mdast-util-phrasing@3.0.1: - resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} - dependencies: - '@types/mdast': 3.0.11 - unist-util-is: 5.2.1 - dev: false - - /mdast-util-to-hast@12.3.0: - resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} - dependencies: - '@types/hast': 2.3.4 - '@types/mdast': 3.0.11 - mdast-util-definitions: 5.1.2 - micromark-util-sanitize-uri: 1.1.0 - trim-lines: 3.0.1 - unist-util-generated: 2.0.1 - unist-util-position: 4.0.4 - unist-util-visit: 4.1.2 - dev: false - - /mdast-util-to-markdown@1.5.0: - resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} - dependencies: - '@types/mdast': 3.0.11 - '@types/unist': 2.0.6 - longest-streak: 3.1.0 - mdast-util-phrasing: 3.0.1 - mdast-util-to-string: 3.2.0 - micromark-util-decode-string: 1.0.2 - unist-util-visit: 4.1.2 - zwitch: 2.0.4 - dev: false + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: - '@types/mdast': 3.0.11 - dev: false + tmpl: 1.0.5 - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} dev: false - /mdx-mermaid@1.3.2(mermaid@10.1.0)(react@17.0.2)(unist-util-visit@2.0.3): - resolution: {integrity: sha512-8kw0tg3isKKBFzFwoe2DhIaEgKYtVeJXQtxZCCrdTPO0CTpXHnTHT0atDqsp7YkXi5iUCp/zAZPZu1cmr68T3w==} - peerDependencies: - mermaid: '>=8.11.0' - react: ^16.8.4 || ^17.0.0 || ^18.0.0 - unist-util-visit: ^2.0.0 - dependencies: - mermaid: 10.1.0(react-dom@17.0.2)(react@17.0.2) - react: 17.0.2 - unist-util-visit: 2.0.3 - dev: false + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true - /media-typer@0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} - engines: {node: '>= 0.6'} + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} dev: true - /memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - dev: false + /map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + dev: true /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} @@ -11782,10 +9939,6 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: true - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -11793,368 +9946,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid@10.1.0(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-LYekSMNJygI1VnMizAPUddY95hZxOjwZxr7pODczILInO0dhQKuhXeu4sargtnuTwCilSuLS7Uiq/Qn7HTVrmA==} - dependencies: - '@braintree/sanitize-url': 6.0.2 - '@khanacademy/simple-markdown': 0.8.6(react-dom@17.0.2)(react@17.0.2) - cytoscape: 3.23.0 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.23.0) - cytoscape-fcose: 2.2.0(cytoscape@3.23.0) - d3: 7.8.4 - dagre-d3-es: 7.0.10 - dayjs: 1.11.7 - dompurify: 2.4.5 - elkjs: 0.8.2 - khroma: 2.0.0 - lodash-es: 4.17.21 - non-layered-tidy-tree-layout: 2.0.2 - stylis: 4.1.3 - ts-dedent: 2.2.0 - uuid: 9.0.0 - web-worker: 1.2.0 - transitivePeerDependencies: - - react - - react-dom - dev: false - - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: true - - /micromark-core-commonmark@1.0.6: - resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.0.0 - micromark-factory-label: 1.0.2 - micromark-factory-space: 1.0.0 - micromark-factory-title: 1.0.2 - micromark-factory-whitespace: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-html-tag-name: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm-autolink-literal@1.0.3: - resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm-footnote@1.1.0: - resolution: {integrity: sha512-RWYce7j8+c0n7Djzv5NzGEGitNNYO3uj+h/XYMdS/JinH1Go+/Qkomg/rfxExFzYTiydaV6GLeffGO5qcJbMPA==} - dependencies: - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm-strikethrough@1.0.5: - resolution: {integrity: sha512-X0oI5eYYQVARhiNfbETy7BfLSmSilzN1eOuoRnrf9oUNsPRrWOAe9UqSizgw1vNxQBfOwL+n2610S3bYjVNi7w==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-classify-character: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm-table@1.0.5: - resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm-tagfilter@1.0.2: - resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} - dependencies: - micromark-util-types: 1.0.2 - dev: false - - /micromark-extension-gfm-task-list-item@1.0.4: - resolution: {integrity: sha512-9XlIUUVnYXHsFF2HZ9jby4h3npfX10S1coXTnV035QGPgrtNYQq3J6IfIvcCIUAJrrqBVi5BqA/LmaOMJqPwMQ==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-gfm@2.0.1: - resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} - dependencies: - micromark-extension-gfm-autolink-literal: 1.0.3 - micromark-extension-gfm-footnote: 1.1.0 - micromark-extension-gfm-strikethrough: 1.0.5 - micromark-extension-gfm-table: 1.0.5 - micromark-extension-gfm-tagfilter: 1.0.2 - micromark-extension-gfm-task-list-item: 1.0.4 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 - dev: false - - /micromark-extension-mdx-expression@1.0.4: - resolution: {integrity: sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==} - dependencies: - micromark-factory-mdx-expression: 1.0.7 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-extension-mdx-jsx@1.0.3: - resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} - dependencies: - '@types/acorn': 4.0.6 - estree-util-is-identifier-name: 2.1.0 - micromark-factory-mdx-expression: 1.0.7 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - - /micromark-extension-mdx-md@1.0.0: - resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} - dependencies: - micromark-util-types: 1.0.2 - dev: false - - /micromark-extension-mdxjs-esm@1.0.3: - resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} - dependencies: - micromark-core-commonmark: 1.0.6 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - - /micromark-extension-mdxjs@1.0.0: - resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} - dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) - micromark-extension-mdx-expression: 1.0.4 - micromark-extension-mdx-jsx: 1.0.3 - micromark-extension-mdx-md: 1.0.0 - micromark-extension-mdxjs-esm: 1.0.3 - micromark-util-combine-extensions: 1.0.0 - micromark-util-types: 1.0.2 - dev: false - - /micromark-factory-destination@1.0.0: - resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - dev: false - - /micromark-factory-label@1.0.2: - resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-factory-mdx-expression@1.0.7: - resolution: {integrity: sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-events-to-acorn: 1.2.1 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - unist-util-position-from-estree: 1.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - dev: false - - /micromark-factory-space@1.0.0: - resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-types: 1.0.2 - dev: false - - /micromark-factory-title@1.0.2: - resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-factory-whitespace@1.0.0: - resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} - dependencies: - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - dev: false - - /micromark-util-character@1.1.0: - resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} - dependencies: - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - dev: false - - /micromark-util-chunked@1.0.0: - resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} - dependencies: - micromark-util-symbol: 1.0.1 - dev: false - - /micromark-util-classify-character@1.0.0: - resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - dev: false - - /micromark-util-combine-extensions@1.0.0: - resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-types: 1.0.2 - dev: false - - /micromark-util-decode-numeric-character-reference@1.0.0: - resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} - dependencies: - micromark-util-symbol: 1.0.1 - dev: false - - /micromark-util-decode-string@1.0.2: - resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-symbol: 1.0.1 - dev: false - - /micromark-util-encode@1.0.1: - resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} - dev: false - - /micromark-util-events-to-acorn@1.2.1: - resolution: {integrity: sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==} - dependencies: - '@types/acorn': 4.0.6 - '@types/estree': 1.0.0 - estree-util-visit: 1.2.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - vfile-location: 4.1.0 - vfile-message: 3.1.4 - dev: false - - /micromark-util-html-tag-name@1.1.0: - resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} - dev: false - - /micromark-util-normalize-identifier@1.0.0: - resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} - dependencies: - micromark-util-symbol: 1.0.1 - dev: false - - /micromark-util-resolve-all@1.0.0: - resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} - dependencies: - micromark-util-types: 1.0.2 - dev: false - - /micromark-util-sanitize-uri@1.1.0: - resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} - dependencies: - micromark-util-character: 1.1.0 - micromark-util-encode: 1.0.1 - micromark-util-symbol: 1.0.1 - dev: false - - /micromark-util-subtokenize@1.0.2: - resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} - dependencies: - micromark-util-chunked: 1.0.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - dev: false - - /micromark-util-symbol@1.0.1: - resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} - dev: false - - /micromark-util-types@1.0.2: - resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} - dev: false - - /micromark@3.1.0: - resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} - dependencies: - '@types/debug': 4.1.7 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.0.6 - micromark-factory-space: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-chunked: 1.0.0 - micromark-util-combine-extensions: 1.0.0 - micromark-util-decode-numeric-character-reference: 1.0.0 - micromark-util-encode: 1.0.1 - micromark-util-normalize-identifier: 1.0.0 - micromark-util-resolve-all: 1.0.0 - micromark-util-sanitize-uri: 1.1.0 - micromark-util-subtokenize: 1.0.2 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.0.2 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: false - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -12184,12 +9975,6 @@ packages: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: true - /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -12250,18 +10035,9 @@ packages: obliterator: 2.0.4 dev: false - /modern-normalize@1.1.0: - resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==} - engines: {node: '>=6'} - dev: false - /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - - /mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} - engines: {node: '>=10'} dev: true /ms@2.0.0: @@ -12273,6 +10049,7 @@ packages: /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false /multidict@1.0.6: resolution: {integrity: sha512-URJf4Q7p/rYDSUt4rIo4PyAxSMQaG27YBNE6CFaEJ1HSxr1WeYaXe/b4Kv9dp2842qWjz/LYCWg9SpNXkGZ4Ww==} @@ -12301,24 +10078,6 @@ packages: thenify-all: 1.6.0 dev: false - /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - css-tree: 1.1.3 - csstype: 3.1.1 - fastest-stable-stringify: 2.0.2 - inline-style-prefixer: 6.0.4 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - rtl-css-js: 1.16.1 - sourcemap-codec: 1.4.8 - stacktrace-js: 2.0.2 - stylis: 4.1.3 - dev: false - /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -12342,54 +10101,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /next-i18next@13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2): - resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} - engines: {node: '>=14'} - peerDependencies: - i18next: ^22.0.6 - next: '>= 12.0.0' - react: '>= 17.0.2' - react-i18next: ^12.2.0 - dependencies: - '@babel/runtime': 7.21.0 - '@types/hoist-non-react-statics': 3.3.1 - core-js: 3.30.0 - hoist-non-react-statics: 3.3.2 - i18next: 22.4.13 - i18next-fs-backend: 2.1.1 - next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - react: 17.0.2 - react-i18next: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) - dev: false - - /next-remote-watch@2.0.0(next@12.3.4): - resolution: {integrity: sha512-FyKDFMwbjKCPdu8ypZ8WTkDBzuxnH6rgfR89vgQwsND4ErrfXnDFZcZJAmSpwND6QA7G9f0DRzYMSdspY6t8Uw==} - engines: {node: '>= 10'} - hasBin: true - peerDependencies: - next: '>=10' - dependencies: - chalk: 4.1.2 - chokidar: 3.5.3 - commander: 5.1.0 - express: 4.18.2 - next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - transitivePeerDependencies: - - supports-color - dev: true - - /next-seo@5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==} - peerDependencies: - next: ^8.1.1-canary.54 || >=9.0.0 - react: '>=16.0.0' - react-dom: '>=16.0.0' - dependencies: - next: 12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - dev: false - /next@12.3.4(@babel/core@7.21.0)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} engines: {node: '>=12.22.0'} @@ -12434,50 +10145,6 @@ packages: - '@babel/core' - babel-plugin-macros - /next@12.3.4(@babel/core@7.21.4)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} - engines: {node: '>=12.22.0'} - hasBin: true - peerDependencies: - fibers: '>= 3.1.0' - node-sass: ^6.0.0 || ^7.0.0 - react: ^17.0.2 || ^18.0.0-0 - react-dom: ^17.0.2 || ^18.0.0-0 - sass: ^1.3.0 - peerDependenciesMeta: - fibers: - optional: true - node-sass: - optional: true - sass: - optional: true - dependencies: - '@next/env': 12.3.4 - '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001474 - postcss: 8.4.14 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - styled-jsx: 5.0.7(@babel/core@7.21.4)(react@17.0.2) - use-sync-external-store: 1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2) - optionalDependencies: - '@next/swc-android-arm-eabi': 12.3.4 - '@next/swc-android-arm64': 12.3.4 - '@next/swc-darwin-arm64': 12.3.4 - '@next/swc-darwin-x64': 12.3.4 - '@next/swc-freebsd-x64': 12.3.4 - '@next/swc-linux-arm-gnueabihf': 12.3.4 - '@next/swc-linux-arm64-gnu': 12.3.4 - '@next/swc-linux-arm64-musl': 12.3.4 - '@next/swc-linux-x64-gnu': 12.3.4 - '@next/swc-linux-x64-musl': 12.3.4 - '@next/swc-win32-arm64-msvc': 12.3.4 - '@next/swc-win32-ia32-msvc': 12.3.4 - '@next/swc-win32-x64-msvc': 12.3.4 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - /next@13.3.0(@babel/core@7.21.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} engines: {node: '>=14.6.0'} @@ -12537,12 +10204,6 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - /node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - dependencies: - lodash: 4.17.21 - dev: false - /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -12580,10 +10241,6 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} - /non-layered-tidy-tree-layout@2.0.2: - resolution: {integrity: sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==} - dev: false - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -12642,10 +10299,6 @@ packages: dependencies: path-key: 3.1.1 - /nprogress@0.2.0: - resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} - dev: false - /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} dev: false @@ -12658,11 +10311,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - dev: false - /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -12738,13 +10386,6 @@ packages: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: false - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: true - /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} @@ -12791,11 +10432,6 @@ packages: is-wsl: 2.2.0 dev: true - /opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - dev: true - /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -12923,19 +10559,6 @@ packages: dependencies: callsites: 3.1.0 - /parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - dependencies: - '@types/unist': 2.0.6 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - dev: false - /parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} @@ -12954,21 +10577,12 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-numeric-range@1.3.0: - resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} - dev: false - /parse5@7.1.1: resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} dependencies: entities: 4.4.0 dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: true - /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: @@ -13029,11 +10643,7 @@ packages: engines: {node: '>=14'} dependencies: lru-cache: 7.18.1 - minipass: 4.2.4 - dev: true - - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + minipass: 4.2.4 dev: true /path-to-regexp@2.2.1: @@ -13055,14 +10665,6 @@ packages: engines: {node: '>=14.16'} dev: true - /periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - dependencies: - '@types/estree': 1.0.0 - estree-walker: 3.0.3 - is-reference: 3.0.1 - dev: false - /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -13118,13 +10720,6 @@ packages: dependencies: find-up: 4.1.0 - /polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} - engines: {node: '>=10'} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - /popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} dependencies: @@ -13146,14 +10741,6 @@ packages: resolve: 1.22.1 dev: false - /postcss-js@3.0.3: - resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} - engines: {node: '>=10.0'} - dependencies: - camelcase-css: 2.0.1 - postcss: 8.4.21 - dev: false - /postcss-js@4.0.1(postcss@8.4.21): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} @@ -13182,16 +10769,6 @@ packages: yaml: 1.10.2 dev: false - /postcss-nested@5.0.6(postcss@8.4.21): - resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - dependencies: - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 - dev: false - /postcss-nested@6.0.0(postcss@8.4.21): resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} engines: {node: '>=12.0'} @@ -13210,10 +10787,6 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-value-parser@3.3.1: - resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} - dev: false - /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false @@ -13234,10 +10807,6 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact@10.13.2: - resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} - dev: false - /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -13279,11 +10848,6 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: false - /pretty-quick@3.1.3(prettier@2.8.6): resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} engines: {node: '>=10.13'} @@ -13330,16 +10894,13 @@ packages: react-is: 16.13.1 dev: false - /property-information@6.2.0: - resolution: {integrity: sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==} - dev: false - /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: false /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} @@ -13375,23 +10936,6 @@ packages: /pure-rand@6.0.0: resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} - /purgecss@4.1.3: - resolution: {integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==} - hasBin: true - dependencies: - commander: 8.3.0 - glob: 7.2.3 - postcss: 8.4.21 - postcss-selector-parser: 6.0.11 - dev: false - - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: true - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -13435,21 +10979,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: true - - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: true - /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -13460,14 +10989,6 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-children-utilities@2.7.0(react@17.0.2): - resolution: {integrity: sha512-8vvGyL8+MTB/WZnTZKll3ph8rKhYQ3s0TOeojFcSi9yF8hMHwYmCS3y5RZyPxTg4/gGW6ev299ehV9DrNU8dow==} - peerDependencies: - react: 17.x.x || 16.x.x || 15.x.x - dependencies: - react: 17.0.2 - dev: false - /react-clientside-effect@1.2.6(react@17.0.2): resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} peerDependencies: @@ -13495,26 +11016,21 @@ packages: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - dev: false - /react-error-boundary@3.1.4(react@17.0.2): + /react-error-boundary@3.1.4(react@18.2.0): resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: '@babel/runtime': 7.21.0 - react: 17.0.2 + react: 18.2.0 dev: true /react-fast-compare@3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false - /react-fast-compare@3.2.1: - resolution: {integrity: sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==} - dev: false - /react-focus-lock@2.5.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==} peerDependencies: @@ -13531,74 +11047,6 @@ packages: - '@types/react' dev: false - /react-i18next@12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} - peerDependencies: - i18next: '>= 19.0.0' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@babel/runtime': 7.21.0 - html-parse-stringify: 3.0.1 - i18next: 22.4.13 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - dev: false - - /react-icons@4.8.0(react@17.0.2): - resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==} - peerDependencies: - react: '*' - dependencies: - react: 17.0.2 - dev: false - - /react-instantsearch-core@6.39.1(algoliasearch@4.17.0)(react@17.0.2): - resolution: {integrity: sha512-rvzOoNGBT2O28mmcpXfcN4pVF+p07jlDMbEKB1TRdW3jE9dm8U6uCS/X6DWqigYLr8svVRcG/Ez+wzYK+yuPZw==} - peerDependencies: - algoliasearch: '>= 3.1 < 5' - react: '>= 16.3.0 < 19' - dependencies: - '@babel/runtime': 7.21.0 - algoliasearch: 4.17.0 - algoliasearch-helper: 3.12.0(algoliasearch@4.17.0) - prop-types: 15.8.1 - react: 17.0.2 - react-fast-compare: 3.2.0 - dev: false - - /react-instantsearch-dom@6.17.0(algoliasearch@4.17.0)(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-KwQJ0HqD9YBvO1VBS+GZC2binTfrGFRClXxDwmd014I9lyqr05m1U2NR81zD0xoBkoZwELP5RWvfpuvbEL0Gdg==} - peerDependencies: - react: '>= 16.3.0 < 18' - react-dom: '>= 16.3.0 < 18' - dependencies: - '@babel/runtime': 7.21.0 - algoliasearch-helper: 3.12.0(algoliasearch@4.17.0) - classnames: 2.3.2 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-fast-compare: 3.2.0 - react-instantsearch-core: 6.39.1(algoliasearch@4.17.0)(react@17.0.2) - transitivePeerDependencies: - - algoliasearch - dev: false - - /react-intersection-observer@8.33.1(react@17.0.2): - resolution: {integrity: sha512-3v+qaJvp3D1MlGHyM+KISVg/CMhPiOlO6FgPHcluqHkx4YFCLuyXNlQ/LE6UkbODXlQcLOppfX6UMxCEkUhDLw==} - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0 - dependencies: - react: 17.0.2 - dev: false - /react-intersection-observer@9.4.3(react@17.0.2): resolution: {integrity: sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==} peerDependencies: @@ -13618,28 +11066,6 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-paginate@7.1.5(react@17.0.2): - resolution: {integrity: sha512-CpyWSwsIIsFhWAQvmXDWuEl+yzfzisgvsUoZTj2IR1mFvm9oPTmeNBFc1wg8/i6ASmETeOmOnc78/U/MXyjd0w==} - peerDependencies: - react: ^16 || ^17 - dependencies: - prop-types: 15.8.1 - react: 17.0.2 - dev: false - - /react-player@2.12.0(react@17.0.2): - resolution: {integrity: sha512-rymLRz/2GJJD+Wc01S7S+i9pGMFYnNmQibR2gVE3KmHJCBNN8BhPAlOPTGZtn1uKpJ6p4RPLlzPQ1OLreXd8gw==} - peerDependencies: - react: '>=16.6.0' - dependencies: - deepmerge: 4.2.2 - load-script: 1.0.0 - memoize-one: 5.2.1 - prop-types: 15.8.1 - react: 17.0.2 - react-fast-compare: 3.2.0 - dev: false - /react-refresh@0.10.0: resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} @@ -13680,31 +11106,22 @@ packages: use-sidecar: 1.1.2(@types/react@17.0.53)(react@17.0.2) dev: false - /react-shallow-renderer@16.15.0(react@17.0.2): + /react-shallow-renderer@16.15.0(react@18.2.0): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 17.0.2 + react: 18.2.0 react-is: 18.2.0 dev: true - /react-ssr-prepass@1.5.0(react@17.0.2): + /react-ssr-prepass@1.5.0(react@18.2.0): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - react: 17.0.2 - dev: false - - /react-sticky-box@1.0.2(react@17.0.2): - resolution: {integrity: sha512-Kyvtppdtv1KqJyNU4DtrSMI0unyQRgtraZvVQ0GAazVbYiTsIVpyhpr+5R0Aavzu4uJNSe1awj2rk/qI7i6Zfw==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 17.0.2 - resize-observer-polyfill: 1.5.1 + react: 18.2.0 dev: false /react-style-singleton@2.2.1(@types/react@17.0.53)(react@17.0.2): @@ -13724,52 +11141,17 @@ packages: tslib: 2.5.0 dev: false - /react-test-renderer@17.0.2(react@17.0.2): - resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} + /react-test-renderer@18.2.0(react@18.2.0): + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} peerDependencies: - react: 17.0.2 + react: ^18.2.0 dependencies: - object-assign: 4.1.1 - react: 17.0.2 - react-is: 17.0.2 - react-shallow-renderer: 16.15.0(react@17.0.2) - scheduler: 0.20.2 + react: 18.2.0 + react-is: 18.2.0 + react-shallow-renderer: 16.15.0(react@18.2.0) + scheduler: 0.23.0 dev: true - /react-universal-interface@0.6.2(react@17.0.2)(tslib@2.5.0): - resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} - peerDependencies: - react: '*' - tslib: '*' - dependencies: - react: 17.0.2 - tslib: 2.5.0 - dev: false - - /react-use@17.4.0(react-dom@17.0.2)(react@17.0.2): - resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@types/js-cookie': 2.2.7 - '@xobotyi/scrollbar-width': 1.9.5 - copy-to-clipboard: 3.3.1 - fast-deep-equal: 3.1.3 - fast-shallow-equal: 1.0.0 - js-cookie: 2.2.1 - nano-css: 5.3.5(react-dom@17.0.2)(react@17.0.2) - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-universal-interface: 0.6.2(react@17.0.2)(tslib@2.5.0) - resize-observer-polyfill: 1.5.1 - screenfull: 5.2.0 - set-harmonic-interval: 1.0.1 - throttle-debounce: 3.0.1 - ts-easing: 0.2.0 - tslib: 2.5.0 - dev: false - /react@17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} @@ -13782,7 +11164,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 - dev: false /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -13890,13 +11271,6 @@ packages: strip-indent: 4.0.0 dev: true - /reduce-css-calc@2.1.8: - resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} - dependencies: - css-unit-converter: 1.1.2 - postcss-value-parser: 3.3.1 - dev: false - /regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -13962,18 +11336,6 @@ packages: jsesc: 0.5.0 dev: true - /rehype-slug@5.0.1: - resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} - dependencies: - '@types/hast': 2.3.4 - github-slugger: 1.4.0 - hast-util-has-property: 2.0.1 - hast-util-heading-rank: 2.1.1 - hast-util-to-string: 2.0.0 - unified: 10.1.2 - unist-util-visit: 4.1.2 - dev: false - /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: @@ -13984,58 +11346,6 @@ packages: - encoding dev: false - /remark-emoji@3.0.2: - resolution: {integrity: sha512-hEgxEv2sBtvhT3tNG/tQeeFY3EbslftaOoG14dDZndLo25fWJ6Fbg4ukFbIotOWWrfXyASjXjyHT+6n366k3mg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - emoticon: 4.0.1 - node-emoji: 1.11.0 - unist-util-visit: 4.1.2 - dev: false - - /remark-gfm@3.0.1: - resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} - dependencies: - '@types/mdast': 3.0.11 - mdast-util-gfm: 2.0.2 - micromark-extension-gfm: 2.0.1 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-mdx@2.3.0: - resolution: {integrity: sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==} - dependencies: - mdast-util-mdx: 2.0.1 - micromark-extension-mdxjs: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-parse@10.0.1: - resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} - dependencies: - '@types/mdast': 3.0.11 - mdast-util-from-markdown: 1.3.0 - unified: 10.1.2 - transitivePeerDependencies: - - supports-color - dev: false - - /remark-rehype@10.1.0: - resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} - dependencies: - '@types/hast': 2.3.4 - '@types/mdast': 3.0.11 - mdast-util-to-hast: 12.3.0 - unified: 10.1.2 - dev: false - - /remove-markdown@0.3.0: - resolution: {integrity: sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ==} - dev: false - /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: false @@ -14055,10 +11365,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - dev: false - /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -14115,14 +11421,6 @@ packages: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} dev: false - /rgb-regex@1.0.1: - resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} - dev: false - - /rgba-regex@1.0.0: - resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} - dev: false - /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -14137,10 +11435,6 @@ packages: glob: 9.2.1 dev: true - /robust-predicates@3.0.1: - resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} - dev: false - /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} @@ -14149,20 +11443,14 @@ packages: fsevents: 2.3.2 dev: true - /rollup@3.19.1: - resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} + /rollup@3.21.0: + resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /rtl-css-js@1.16.1: - resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} - dependencies: - '@babel/runtime': 7.21.0 - dev: false - /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -14180,10 +11468,6 @@ packages: dependencies: queue-microtask: 1.2.3 - /rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - dev: false - /rwlock@5.0.0: resolution: {integrity: sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg==} dev: false @@ -14193,13 +11477,6 @@ packages: dependencies: tslib: 2.5.0 - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - dev: false - /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -14245,25 +11522,6 @@ packages: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: loose-envify: 1.4.0 - dev: false - - /screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - dev: false - - /search-insights@2.4.0: - resolution: {integrity: sha512-AqXxWFEIZTfOf0brQLvoAZcotrVX0xR/VoPCzBxsTZF/yO+izIH1eFCtKizR/dGI8NCMOTdc7l90hAOI68dBbg==} - engines: {node: '>=8.16.0'} - dev: false - - /section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - dev: false /secure-json-parse@2.5.0: resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} @@ -14285,27 +11543,6 @@ packages: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: @@ -14334,18 +11571,6 @@ packages: range-parser: 1.2.0 dev: true - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.18.0 - transitivePeerDependencies: - - supports-color - dev: true - /serve@14.2.0: resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} engines: {node: '>= 14'} @@ -14373,17 +11598,13 @@ packages: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} dev: false - /set-harmonic-interval@1.0.1: - resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} - engines: {node: '>=6.9'} - dev: false - /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: false /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} @@ -14411,23 +11632,6 @@ packages: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} dev: true - /shiki-renderer-hast@1.1.5(shiki@0.10.1): - resolution: {integrity: sha512-XOHX0/mIRJZnqPNGoyyJ9bUrqUwj/tLUJQ5SuU/UkQLTiSJjiHaCP17HRB7/VSQoor4+WJF3QkT8BXbipyJN0Q==} - peerDependencies: - shiki: ^0.9 || ^0.10.0 - dependencies: - hastscript: 7.2.0 - shiki: 0.10.1 - dev: false - - /shiki@0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} - dependencies: - jsonc-parser: 3.2.0 - vscode-oniguruma: 1.7.0 - vscode-textmate: 5.2.0 - dev: false - /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: @@ -14442,21 +11646,6 @@ packages: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} dev: false - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - dependencies: - is-arrayish: 0.3.2 - dev: false - - /sirv@1.0.19: - resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} - engines: {node: '>= 10'} - dependencies: - '@polka/url': 1.0.0-next.21 - mrmime: 1.0.1 - totalist: 1.1.0 - dev: true - /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -14522,33 +11711,14 @@ packages: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - dev: false - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false - - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} dev: false - /space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - dev: false + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} @@ -14603,47 +11773,17 @@ packages: /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} - dependencies: - stackframe: 1.3.4 - dev: false - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false - - /stacktrace-gps@3.1.2: - resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} - dependencies: - source-map: 0.5.6 - stackframe: 1.3.4 - dev: false - - /stacktrace-js@2.0.2: - resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} - dependencies: - error-stack-parser: 2.1.4 - stack-generator: 2.0.10 - stacktrace-gps: 3.1.2 - dev: false - /statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} dev: false - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: true - /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -14686,10 +11826,6 @@ packages: strip-ansi: 7.0.1 dev: false - /string-similarity@4.0.4: - resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} - dev: false - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -14739,13 +11875,6 @@ packages: dependencies: safe-buffer: 5.2.1 - /stringify-entities@4.0.3: - resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - dev: false - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -14758,11 +11887,6 @@ packages: dependencies: ansi-regex: 6.0.1 - /strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - dev: false - /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -14811,12 +11935,6 @@ packages: peek-readable: 5.0.0 dev: true - /style-to-object@0.4.1: - resolution: {integrity: sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==} - dependencies: - inline-style-parser: 0.1.1 - dev: false - /style-value-types@5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: @@ -14840,22 +11958,6 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 - /styled-jsx@5.0.7(@babel/core@7.21.4)(react@17.0.2): - resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - dependencies: - '@babel/core': 7.21.4 - react: 17.0.2 - /styled-jsx@5.1.1(@babel/core@7.21.4)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -14949,56 +12051,6 @@ packages: tslib: 2.5.0 dev: false - /tabbable@5.3.3: - resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} - dev: false - - /tailwindcss@2.2.19(autoprefixer@10.4.14)(postcss@8.4.21)(ts-node@10.9.1): - resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} - engines: {node: '>=12.13.0'} - hasBin: true - peerDependencies: - autoprefixer: ^10.0.2 - postcss: ^8.0.9 - dependencies: - arg: 5.0.2 - autoprefixer: 10.4.14(postcss@8.4.21) - bytes: 3.1.2 - chalk: 4.1.2 - chokidar: 3.5.3 - color: 4.2.3 - cosmiconfig: 7.1.0 - detective: 5.2.1 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.2.12 - fs-extra: 10.1.0 - glob-parent: 6.0.2 - html-tags: 3.3.1 - is-color-stop: 1.1.0 - is-glob: 4.0.3 - lodash: 4.17.21 - lodash.topath: 4.5.2 - modern-normalize: 1.1.0 - node-emoji: 1.11.0 - normalize-path: 3.0.0 - object-hash: 2.2.0 - postcss: 8.4.21 - postcss-js: 3.0.3 - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) - postcss-nested: 5.0.6(postcss@8.4.21) - postcss-selector-parser: 6.0.11 - postcss-value-parser: 4.2.0 - pretty-hrtime: 1.0.3 - purgecss: 4.1.3 - quick-lru: 5.1.1 - reduce-css-calc: 2.1.8 - resolve: 1.22.1 - tmp: 0.2.1 - transitivePeerDependencies: - - ts-node - dev: false - /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} @@ -15089,18 +12141,9 @@ packages: real-require: 0.2.0 dev: false - /throttle-debounce@3.0.1: - resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} - engines: {node: '>=10'} - dev: false - /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - /timsort@0.3.0: - resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - dev: false - /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -15116,15 +12159,6 @@ packages: resolution: {integrity: sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==} engines: {node: '>=6'} - /tiny-lru@8.0.2: - resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} - engines: {node: '>=6'} - dev: false - - /tinykeys@1.4.0: - resolution: {integrity: sha512-ysnVd2E4nWbNXIbHaUidcKGLTmNimqP0hdpsD0Ph5hPJ84ntCF6PHj+Jg3im9nZt9/hNsBg/E6m1psHc2KaPnQ==} - dev: false - /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: @@ -15153,6 +12187,7 @@ packages: engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 + dev: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -15174,6 +12209,7 @@ packages: /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + dev: false /token-types@5.0.1: resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} @@ -15183,11 +12219,6 @@ packages: ieee754: 1.2.1 dev: true - /totalist@1.1.0: - resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} - engines: {node: '>=6'} - dev: true - /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} @@ -15222,10 +12253,6 @@ packages: hasBin: true dev: true - /trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - dev: false - /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -15236,19 +12263,6 @@ packages: engines: {node: '>=12'} dev: true - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} - dev: false - - /ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - dev: false - - /ts-easing@0.2.0: - resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} - dev: false - /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false @@ -15344,10 +12358,6 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - dev: false - /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false @@ -15378,29 +12388,6 @@ packages: yargs: 17.6.2 dev: true - /twin.macro@2.8.2(ts-node@10.9.1): - resolution: {integrity: sha512-2Vg09mp+nA70AWUedJ8WRgB2me3buq7JGbOnjHnFnNaBzomVu5k7lJ9YGpByIlre+UYr7QRhtlj7+IUKxvCrUA==} - engines: {node: '>=12.13.0'} - dependencies: - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - autoprefixer: 10.4.14(postcss@8.4.21) - babel-plugin-macros: 2.8.0 - chalk: 4.1.2 - clean-set: 1.1.2 - color: 3.2.1 - dset: 3.1.2 - lodash.flatmap: 4.5.0 - lodash.get: 4.4.2 - lodash.merge: 4.6.2 - postcss: 8.4.21 - string-similarity: 4.0.4 - tailwindcss: 2.2.19(autoprefixer@10.4.14)(postcss@8.4.21)(ts-node@10.9.1) - timsort: 0.3.0 - transitivePeerDependencies: - - ts-node - dev: false - /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -15454,19 +12441,17 @@ packages: resolution: {integrity: sha512-htXWckxlT6U4+ilVgweNliPqlsVSSucbxVexRYllyMVJDtf5rTjv6kF/s+qAd4QSL1BZcnJPEJavYBPQiWuZDA==} engines: {node: '>=14.16'} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: true - /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: false @@ -15516,18 +12501,6 @@ packages: engines: {node: '>=4'} dev: true - /unified@10.1.2: - resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} - dependencies: - '@types/unist': 2.0.6 - bail: 2.0.2 - extend: 3.0.2 - is-buffer: 2.0.5 - is-plain-obj: 4.1.0 - trough: 2.1.0 - vfile: 5.3.2 - dev: false - /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -15535,83 +12508,6 @@ packages: crypto-random-string: 4.0.0 dev: true - /unist-util-generated@2.0.1: - resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} - dev: false - - /unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: false - - /unist-util-is@5.2.1: - resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /unist-util-position-from-estree@1.1.2: - resolution: {integrity: sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /unist-util-position@4.0.4: - resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /unist-util-remove-position@4.0.2: - resolution: {integrity: sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==} - dependencies: - '@types/unist': 2.0.6 - unist-util-visit: 4.1.2 - dev: false - - /unist-util-remove@3.1.0: - resolution: {integrity: sha512-rO/sIghl13eN8irs5OBN2a4RC10MsJdiePCfwrvnzGtgIbHcDXr2REr0qi9F2r/CIb1r9FyyFmcMRIGs+EyUFw==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: false - - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - dependencies: - '@types/unist': 2.0.6 - dev: false - - /unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - dev: false - - /unist-util-visit-parents@5.1.3: - resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.2.1 - dev: false - - /unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 4.1.0 - unist-util-visit-parents: 3.1.1 - dev: false - - /unist-util-visit@4.1.2: - resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} - dependencies: - '@types/unist': 2.0.6 - unist-util-is: 5.2.1 - unist-util-visit-parents: 5.1.3 - dev: false - /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -15622,11 +12518,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: false - /unixify@1.0.0: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} @@ -15634,11 +12525,6 @@ packages: normalize-path: 2.1.1 dev: false - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: true - /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -15700,25 +12586,6 @@ packages: tslib: 2.5.0 dev: false - /use-debounce@8.0.4(react@17.0.2): - resolution: {integrity: sha512-fGqsYQzl8kLHF2QpQSgIwgOgJmnh6j5L6SIzQiHdLfwp3q1egUL3btq5Bg2SJysH6A0ILLgT2IqXZKoNJr0nFw==} - engines: {node: '>= 10.0.0'} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 17.0.2 - dev: false - - /use-immer@0.6.0(immer@9.0.12)(react@17.0.2): - resolution: {integrity: sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ==} - peerDependencies: - immer: '>=2.0.0' - react: ^16.8.0 || ^17.0.1 - dependencies: - immer: 9.0.12 - react: 17.0.2 - dev: false - /use-sidecar@1.1.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} @@ -15743,6 +12610,15 @@ packages: react: 17.0.2 patched: true + /use-sync-external-store@1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + patched: true + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -15753,27 +12629,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: true - - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} - hasBin: true - dev: false - - /uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - dequal: 2.0.3 - diff: 5.1.0 - kleur: 4.1.5 - sade: 1.8.1 - dev: false - /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -15781,7 +12636,7 @@ packages: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 @@ -15807,46 +12662,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /vfile-location@4.1.0: - resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} - dependencies: - '@types/unist': 2.0.6 - vfile: 5.3.2 - dev: false - - /vfile-matter@3.0.1: - resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} - dependencies: - '@types/js-yaml': 4.0.5 - is-buffer: 2.0.5 - js-yaml: 4.1.0 - dev: false - - /vfile-message@3.1.4: - resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} - dependencies: - '@types/unist': 2.0.6 - unist-util-stringify-position: 3.0.3 - dev: false - - /vfile@5.3.2: - resolution: {integrity: sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==} - dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - dev: false - - /vfile@5.3.7: - resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} - dependencies: - '@types/unist': 2.0.6 - is-buffer: 2.0.5 - unist-util-stringify-position: 3.0.3 - vfile-message: 3.1.4 - dev: false - /vite@4.2.1(@types/node@18.15.11): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -15876,24 +12691,11 @@ packages: esbuild: 0.17.12 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.19.1 + rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 dev: true - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false - - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: false - - /vscode-textmate@5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: false - /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} @@ -15944,10 +12746,6 @@ packages: engines: {node: '>= 14'} dev: false - /web-worker@1.2.0: - resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false @@ -15957,25 +12755,6 @@ packages: engines: {node: '>=12'} dev: true - /webpack-bundle-analyzer@4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==} - engines: {node: '>= 10.13.0'} - hasBin: true - dependencies: - acorn: 8.8.1 - acorn-walk: 8.2.0 - chalk: 4.1.2 - commander: 6.2.1 - gzip-size: 6.0.0 - lodash: 4.17.21 - opener: 1.5.2 - sirv: 1.0.19 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -16102,22 +12881,6 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - bufferutil: 4.0.7 - utf-8-validate: 6.0.3 - dev: true - /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} @@ -16150,11 +12913,6 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false - /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -16228,19 +12986,3 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - - /zustand@3.7.2(react@17.0.2): - resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} - engines: {node: '>=12.7.0'} - peerDependencies: - react: '>=16.8' - peerDependenciesMeta: - react: - optional: true - dependencies: - react: 17.0.2 - dev: false - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false From 14325b83294f05c3e978919fa9e0242bba9a776d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 28 Apr 2023 20:31:46 +0800 Subject: [PATCH 054/122] fix: changeset config --- .changeset/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/config.json b/.changeset/config.json index 75653b37d..eee962cf0 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -6,7 +6,7 @@ "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", - "ignore": ["example-*", "website"], + "ignore": ["example-*"], "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true } From 7db4077ce2a839bc517587e247a58b77408fea3a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 28 Apr 2023 20:34:17 +0800 Subject: [PATCH 055/122] chore(deps): upgrade testing-library for React 18 --- packages/react/package.json | 2 +- pnpm-lock.yaml | 44 ++++++++++++++++--------------------- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/packages/react/package.json b/packages/react/package.json index d4c87be65..316844612 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -87,7 +87,7 @@ "devDependencies": { "@size-limit/preset-small-lib": "^8.2.4", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^12.1.5", + "@testing-library/react": "^14.0.0", "@testing-library/react-hooks": "^8.0.1", "@types/jest": "^29.5.0", "@types/lodash-es": "^4.17.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 85df91b65..51db28a9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -770,8 +770,8 @@ importers: specifier: ^5.16.5 version: 5.16.5 '@testing-library/react': - specifier: ^12.1.5 - version: 12.1.5(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.0.0 + version: 14.0.0(react-dom@18.2.0)(react@18.2.0) '@testing-library/react-hooks': specifier: ^8.0.1 version: 8.0.1(@types/react@18.2.0)(react-dom@18.2.0)(react-test-renderer@18.2.0)(react@18.2.0) @@ -5392,17 +5392,17 @@ packages: tslib: 2.5.0 dev: false - /@testing-library/dom@8.19.0: - resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} - engines: {node: '>=12'} + /@testing-library/dom@9.2.0: + resolution: {integrity: sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==} + engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 '@babel/runtime': 7.21.0 - '@types/aria-query': 4.2.2 + '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 dom-accessibility-api: 0.5.14 - lz-string: 1.4.4 + lz-string: 1.5.0 pretty-format: 27.5.1 dev: true @@ -5445,16 +5445,16 @@ packages: react-test-renderer: 18.2.0(react@18.2.0) dev: true - /@testing-library/react@12.1.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} - engines: {node: '>=12'} + /@testing-library/react@14.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==} + engines: {node: '>=14'} peerDependencies: - react: <18.0.0 - react-dom: <18.0.0 + react: ^18.0.0 + react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.21.0 - '@testing-library/dom': 8.19.0 - '@types/react-dom': 17.0.18 + '@testing-library/dom': 9.2.0 + '@types/react-dom': 18.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -5485,8 +5485,8 @@ packages: dependencies: '@types/node': 18.15.11 - /@types/aria-query@4.2.2: - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + /@types/aria-query@5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true /@types/babel__core@7.1.19: @@ -5731,12 +5731,6 @@ packages: /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom@17.0.18: - resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} - dependencies: - '@types/react': 17.0.53 - dev: true - /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: @@ -9866,8 +9860,8 @@ packages: engines: {node: '>=12'} dev: true - /lz-string@1.4.4: - resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true dev: true From 1bb37f8c106bb9f4db74cd76b884044d92bcc6c3 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 29 Apr 2023 11:23:03 +0800 Subject: [PATCH 056/122] fix: vite example --- examples/vite-example/gqty.config.cjs | 16 - examples/vite-example/src/App.tsx | 56 --- examples/vite-example/src/gqty/index.ts | 85 ---- .../vite-example/src/gqty/schema.generated.ts | 281 ------------- examples/vite-example/src/main.tsx | 11 - .../{vite-example => vite-react}/.gitignore | 0 .../{vite-example => vite-react}/index.html | 4 +- .../{vite-example => vite-react}/package.json | 10 +- .../{vite-example => vite-react}/src/App.css | 0 examples/vite-react/src/App.tsx | 80 ++++ examples/vite-react/src/App/Avatar.tsx | 30 ++ examples/vite-react/src/App/Card.tsx | 13 + examples/vite-react/src/App/Skeleton.tsx | 19 + examples/vite-react/src/App/SmallText.tsx | 32 ++ examples/vite-react/src/App/Text.tsx | 31 ++ .../src/favicon.svg | 0 examples/vite-react/src/gqty/index.ts | 90 +++++ .../vite-react/src/gqty/schema.generated.ts | 370 ++++++++++++++++++ .../src/index.css | 0 .../{vite-example => vite-react}/src/logo.svg | 0 examples/vite-react/src/main.tsx | 10 + .../src/vite-env.d.ts | 0 .../tsconfig.json | 16 +- .../vite.config.ts | 0 packages/react/src/query/useQuery.ts | 26 +- 25 files changed, 706 insertions(+), 474 deletions(-) delete mode 100644 examples/vite-example/gqty.config.cjs delete mode 100644 examples/vite-example/src/App.tsx delete mode 100644 examples/vite-example/src/gqty/index.ts delete mode 100644 examples/vite-example/src/gqty/schema.generated.ts delete mode 100644 examples/vite-example/src/main.tsx rename examples/{vite-example => vite-react}/.gitignore (100%) rename examples/{vite-example => vite-react}/index.html (77%) rename examples/{vite-example => vite-react}/package.json (77%) rename examples/{vite-example => vite-react}/src/App.css (100%) create mode 100644 examples/vite-react/src/App.tsx create mode 100644 examples/vite-react/src/App/Avatar.tsx create mode 100644 examples/vite-react/src/App/Card.tsx create mode 100644 examples/vite-react/src/App/Skeleton.tsx create mode 100644 examples/vite-react/src/App/SmallText.tsx create mode 100644 examples/vite-react/src/App/Text.tsx rename examples/{vite-example => vite-react}/src/favicon.svg (100%) create mode 100644 examples/vite-react/src/gqty/index.ts create mode 100644 examples/vite-react/src/gqty/schema.generated.ts rename examples/{vite-example => vite-react}/src/index.css (100%) rename examples/{vite-example => vite-react}/src/logo.svg (100%) create mode 100644 examples/vite-react/src/main.tsx rename examples/{vite-example => vite-react}/src/vite-env.d.ts (100%) rename examples/{vite-example => vite-react}/tsconfig.json (90%) rename examples/{vite-example => vite-react}/vite.config.ts (100%) diff --git a/examples/vite-example/gqty.config.cjs b/examples/vite-example/gqty.config.cjs deleted file mode 100644 index 9fad774b3..000000000 --- a/examples/vite-example/gqty.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - react: true, - scalarTypes: { DateTime: 'string' }, - introspection: { - endpoint: 'https://examples-api.gqty.dev/graphql', - headers: {}, - }, - destination: './src/gqty/index.ts', - subscriptions: false, - javascriptOutput: false, -}; - -module.exports = config; diff --git a/examples/vite-example/src/App.tsx b/examples/vite-example/src/App.tsx deleted file mode 100644 index 6346d0e2c..000000000 --- a/examples/vite-example/src/App.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React, { useState } from 'react'; -import logo from './logo.svg'; -import './App.css'; -import { useQuery } from './gqty'; - -function App() { - const [count, setCount] = useState(0); - - const { hello, namesList } = useQuery(); - - return ( -
- ); -} - -export default App; diff --git a/examples/vite-example/src/gqty/index.ts b/examples/vite-example/src/gqty/index.ts deleted file mode 100644 index a2e5b9e58..000000000 --- a/examples/vite-example/src/gqty/index.ts +++ /dev/null @@ -1,85 +0,0 @@ -/** - * GQty: You can safely modify this file based on your needs. - */ - -import { createReactClient } from '@gqty/react'; - -import { createClient, QueryFetcher } from 'gqty'; -import { - generatedSchema, - GeneratedSchema, - scalarsEnumsHash, -} from './schema.generated'; - -const queryFetcher: QueryFetcher = async function ({ - query, - variables, - operationName, -}) { - // Modify "https://examples-api.gqty.dev/graphql" if needed - const response = await fetch('https://examples-api.gqty.dev/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - query, - variables, - operationName, - }), - mode: 'cors', - }); - - const json = await response.json(); - - return json; -}; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, -}); - -const { query, mutation, mutate, subscription, resolved, refetch } = client; - -export * from './schema.generated'; -export { query, mutation, mutate, subscription, resolved, refetch }; -export { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -}; - -const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -} = createReactClient(client, { - defaults: { - // Set this flag as "true" if your usage involves React Suspense - // Keep in mind that you can overwrite it in a per-hook basis - suspense: false, - - // Set this flag based on your needs - staleWhileRevalidate: false, - }, -}); diff --git a/examples/vite-example/src/gqty/schema.generated.ts b/examples/vite-example/src/gqty/schema.generated.ts deleted file mode 100644 index 0bef1aaa9..000000000 --- a/examples/vite-example/src/gqty/schema.generated.ts +++ /dev/null @@ -1,281 +0,0 @@ -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - -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; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export interface Scalars { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */ - DateTime: string; - /** A field whose value conforms to the standard internet email address format as specified in RFC822: https://www.w3.org/Protocols/rfc822/. */ - EmailAddress: any; - /** A string that cannot be passed as an empty value */ - NonEmptyString: any; - /** Integers that will have a value of 0 or more. */ - NonNegativeInt: any; -} - -export interface CursorConnectionArgs { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -} - -export interface LoginInput { - email: Scalars['EmailAddress']; -} - -export interface PostCreate { - category?: InputMaybe>; - title: Scalars['NonEmptyString']; -} - -export interface PostUpdate { - category?: InputMaybe>; - id: Scalars['String']; - published?: InputMaybe; - title?: InputMaybe; -} - -export interface RegisterInput { - email: Scalars['EmailAddress']; -} - -export enum UserRole { - ADMIN = 'ADMIN', - USER = 'USER', -} - -export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { - Boolean: true, - DateTime: true, - EmailAddress: true, - ID: true, - Int: true, - NonEmptyString: true, - NonNegativeInt: true, - String: true, - UserRole: true, -}; -export const generatedSchema = { - AuthResult: { - __typename: { __type: 'String!' }, - error: { __type: 'String' }, - token: { __type: 'String' }, - user: { __type: 'User' }, - }, - Category: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - name: { __type: 'String' }, - posts: { - __type: 'PostsConnection!', - __args: { input: 'CursorConnectionArgs!' }, - }, - }, - CursorConnectionArgs: { - after: { __type: 'NonEmptyString' }, - before: { __type: 'NonEmptyString' }, - first: { __type: 'NonNegativeInt' }, - last: { __type: 'NonNegativeInt' }, - }, - CursorPageInfo: { - __typename: { __type: 'String!' }, - endCursor: { __type: 'NonEmptyString' }, - hasNextPage: { __type: 'Boolean!' }, - hasPreviousPage: { __type: 'Boolean!' }, - startCursor: { __type: 'NonEmptyString' }, - }, - LoginInput: { email: { __type: 'EmailAddress!' } }, - Post: { - __typename: { __type: 'String!' }, - category: { __type: '[Category!]' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - published: { __type: 'Boolean!' }, - title: { __type: 'String!' }, - }, - PostCreate: { - category: { __type: '[String!]' }, - title: { __type: 'NonEmptyString!' }, - }, - PostUpdate: { - category: { __type: '[String!]' }, - id: { __type: 'String!' }, - published: { __type: 'Boolean' }, - title: { __type: 'NonEmptyString' }, - }, - PostsConnection: { - __typename: { __type: 'String!' }, - nodes: { __type: '[Post!]!' }, - pageInfo: { __type: 'CursorPageInfo!' }, - }, - RegisterInput: { email: { __type: 'EmailAddress!' } }, - User: { - __typename: { __type: 'String!' }, - email: { __type: 'String!' }, - id: { __type: 'ID!' }, - name: { __type: 'String' }, - posts: { - __type: 'PostsConnection!', - __args: { input: 'CursorConnectionArgs!' }, - }, - role: { __type: 'UserRole!' }, - }, - mutation: { - __typename: { __type: 'String!' }, - createPost: { __type: 'Post!', __args: { post: 'PostCreate!' } }, - hello: { __type: 'String!' }, - login: { __type: 'AuthResult!', __args: { input: 'LoginInput!' } }, - register: { __type: 'AuthResult!', __args: { input: 'RegisterInput!' } }, - removeOwnPost: { __type: 'Boolean!', __args: { postId: 'String!' } }, - setName: { __type: 'User!', __args: { name: 'String!' } }, - updatePost: { __type: 'Post!', __args: { post: 'PostUpdate!' } }, - }, - query: { - __typename: { __type: 'String!' }, - currentUser: { __type: 'AuthResult!' }, - hello: { __type: 'String!' }, - namesList: { __type: '[String!]!', __args: { n: 'Int' } }, - postsCategories: { __type: '[Category!]!' }, - publicPosts: { - __type: 'PostsConnection!', - __args: { input: 'CursorConnectionArgs!' }, - }, - }, - subscription: {}, -} as const; - -export interface AuthResult { - __typename?: 'AuthResult'; - error?: Maybe; - token?: Maybe; - user?: Maybe; -} - -export interface Category { - __typename?: 'Category'; - id: ScalarsEnums['ID']; - name?: Maybe; - posts: (args: { input: CursorConnectionArgs }) => PostsConnection; -} - -export interface CursorPageInfo { - __typename?: 'CursorPageInfo'; - endCursor?: Maybe; - hasNextPage: ScalarsEnums['Boolean']; - hasPreviousPage: ScalarsEnums['Boolean']; - startCursor?: Maybe; -} - -export interface Post { - __typename?: 'Post'; - category?: Maybe>; - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - published: ScalarsEnums['Boolean']; - title: ScalarsEnums['String']; -} - -export interface PostsConnection { - __typename?: 'PostsConnection'; - nodes: Array; - pageInfo: CursorPageInfo; -} - -export interface User { - __typename?: 'User'; - email: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - name?: Maybe; - /** - * Posts created by user - */ - posts: (args: { input: CursorConnectionArgs }) => PostsConnection; - role: ScalarsEnums['UserRole']; -} - -export interface Mutation { - __typename?: 'Mutation'; - /** - * [Authenticated] Create new post - */ - createPost: (args: { post: PostCreate }) => Post; - hello: ScalarsEnums['String']; - /** - * Login user - */ - login: (args: { input: LoginInput }) => AuthResult; - /** - * Register user - */ - register: (args: { input: RegisterInput }) => AuthResult; - /** - * [Authenticated] Remove own post - */ - removeOwnPost: (args: { - postId: Scalars['String']; - }) => ScalarsEnums['Boolean']; - setName: (args: { name: Scalars['String'] }) => User; - /** - * [Authenticated] Update existing post - */ - updatePost: (args: { post: PostUpdate }) => Post; -} - -export interface Query { - __typename?: 'Query'; - /** - * Current authenticated user - */ - currentUser: AuthResult; - hello: ScalarsEnums['String']; - namesList: (args?: { - /** - * @defaultValue `10` - */ - n?: Maybe; - }) => Array; - /** - * Get all current created categories - */ - postsCategories: Array; - /** - * Get all published posts - */ - publicPosts: (args: { input: CursorConnectionArgs }) => PostsConnection; -} - -export interface Subscription { - __typename?: 'Subscription'; -} - -export interface GeneratedSchema { - query: Query; - mutation: Mutation; - subscription: Subscription; -} - -export type MakeNullable = { - [K in keyof T]: T[K] | undefined; -}; - -export interface ScalarsEnums extends MakeNullable { - UserRole: UserRole | undefined; -} diff --git a/examples/vite-example/src/main.tsx b/examples/vite-example/src/main.tsx deleted file mode 100644 index 6832e7832..000000000 --- a/examples/vite-example/src/main.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; - -ReactDOM.render( - - - , - document.getElementById('root') -); diff --git a/examples/vite-example/.gitignore b/examples/vite-react/.gitignore similarity index 100% rename from examples/vite-example/.gitignore rename to examples/vite-react/.gitignore diff --git a/examples/vite-example/index.html b/examples/vite-react/index.html similarity index 77% rename from examples/vite-example/index.html rename to examples/vite-react/index.html index 38f386110..fde15500f 100644 --- a/examples/vite-example/index.html +++ b/examples/vite-react/index.html @@ -1,9 +1,11 @@ - + + + Vite App diff --git a/examples/vite-example/package.json b/examples/vite-react/package.json similarity index 77% rename from examples/vite-example/package.json rename to examples/vite-react/package.json index a9e3f481b..c6b2dab86 100644 --- a/examples/vite-example/package.json +++ b/examples/vite-react/package.json @@ -12,16 +12,16 @@ "@gqty/cli": "workspace:^", "@gqty/react": "workspace:^", "gqty": "workspace:^", - "react": "^17.0.2", - "react-dom": "^17.0.2" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "devDependencies": { - "@types/node": "^18.15.5", - "@types/react": "^17.0.53", + "@types/node": "^18.15.11", + "@types/react": "^18.2.0", "@types/react-dom": "^18.0.11", "@vitejs/plugin-react-refresh": "^1.3.6", "esbuild": "^0.17.12", - "typescript": "^4.9.5", + "typescript": "^5.0.4", "vite": "^4.2.1" } } diff --git a/examples/vite-example/src/App.css b/examples/vite-react/src/App.css similarity index 100% rename from examples/vite-example/src/App.css rename to examples/vite-react/src/App.css diff --git a/examples/vite-react/src/App.tsx b/examples/vite-react/src/App.tsx new file mode 100644 index 000000000..38c18db64 --- /dev/null +++ b/examples/vite-react/src/App.tsx @@ -0,0 +1,80 @@ +import { useState } from 'react'; +import './App.css'; +import Avatar from './App/Avatar'; +import Card from './App/Card'; +import SmallText from './App/SmallText'; +import { Text } from './App/Text'; +import { useQuery } from './gqty'; +import logo from './logo.svg'; + +let renderCount = 0; + +function App() { + const [count, setCount] = useState(0); + const { characters } = useQuery(); + + return ( +
+
+ logo +

Hello Vite + React!

+ +

Render count {++renderCount}

+ +

+ +

+

+ Edit App.tsx and save to test HMR updates. +

+

+ + Learn React + + {' | '} + + Vite Docs + +

+ +
+ {characters({ filter: { name: 'alien' } })?.results?.map( + (character) => ( + + + +
+ {character?.name} + {character?.species} + {character?.origin?.name} +
+
+ ) + )} +
+
+
+ ); +} + +export default App; diff --git a/examples/vite-react/src/App/Avatar.tsx b/examples/vite-react/src/App/Avatar.tsx new file mode 100644 index 000000000..8701435e3 --- /dev/null +++ b/examples/vite-react/src/App/Avatar.tsx @@ -0,0 +1,30 @@ +import { type FunctionComponent } from 'react'; +import { Character, Maybe } from '../gqty'; +import Skeleton from './Skeleton'; + +const avatarStyle = `inline-block rounded-full mr-3`; + +const Avatar: FunctionComponent<{ character?: Maybe }> = ({ + character, +}) => ( +
+ } + > + {character?.image && ( + {`Image + )} + +); + +export default Avatar; diff --git a/examples/vite-react/src/App/Card.tsx b/examples/vite-react/src/App/Card.tsx new file mode 100644 index 000000000..e49e2bf8a --- /dev/null +++ b/examples/vite-react/src/App/Card.tsx @@ -0,0 +1,13 @@ +import { type FunctionComponent, type HTMLAttributes } from 'react'; + +const Card: FunctionComponent> = ({ + className, + ...props +}) => ( +
+); + +export default Card; diff --git a/examples/vite-react/src/App/Skeleton.tsx b/examples/vite-react/src/App/Skeleton.tsx new file mode 100644 index 000000000..77f110de0 --- /dev/null +++ b/examples/vite-react/src/App/Skeleton.tsx @@ -0,0 +1,19 @@ +import { + type FunctionComponent, + type PropsWithChildren, + type ReactNode, +} from 'react'; +import { useMetaState } from '../gqty'; + +export type Props = { fallback?: ReactNode }; + +const Skeleton: FunctionComponent> = ({ + children, + fallback, +}) => { + const { isFetching } = useMetaState(); + + return <>{children ?? fallback}; +}; + +export default Skeleton; diff --git a/examples/vite-react/src/App/SmallText.tsx b/examples/vite-react/src/App/SmallText.tsx new file mode 100644 index 000000000..f790daa52 --- /dev/null +++ b/examples/vite-react/src/App/SmallText.tsx @@ -0,0 +1,32 @@ +import { FunctionComponent, PropsWithChildren } from 'react'; +import Skeleton from './Skeleton'; + +const SmallText: FunctionComponent< + PropsWithChildren<{ textLength?: number }> +> = ({ textLength = 25, children }) => ( +

+ +   + + } + > + {children} + +

+); + +export default SmallText; diff --git a/examples/vite-react/src/App/Text.tsx b/examples/vite-react/src/App/Text.tsx new file mode 100644 index 000000000..aec776cd3 --- /dev/null +++ b/examples/vite-react/src/App/Text.tsx @@ -0,0 +1,31 @@ +import { FunctionComponent, PropsWithChildren } from 'react'; +import Skeleton from './Skeleton'; + +export const Text: FunctionComponent< + PropsWithChildren<{ textLength?: number }> +> = ({ textLength = 25, children }) => ( + +   + + } + > + {children} + +); + +export default Text; diff --git a/examples/vite-example/src/favicon.svg b/examples/vite-react/src/favicon.svg similarity index 100% rename from examples/vite-example/src/favicon.svg rename to examples/vite-react/src/favicon.svg diff --git a/examples/vite-react/src/gqty/index.ts b/examples/vite-react/src/gqty/index.ts new file mode 100644 index 000000000..fd6e38bef --- /dev/null +++ b/examples/vite-react/src/gqty/index.ts @@ -0,0 +1,90 @@ +/** + * GQty: You can safely modify this file based on your needs. + */ + +import { createReactClient } from '@gqty/react'; +import type { QueryFetcher } from 'gqty'; +import { Cache, createClient } from 'gqty'; +import type { GeneratedSchema } from './schema.generated'; +import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + +const queryFetcher: QueryFetcher = async function ( + { query, variables, operationName }, + fetchOptions +) { + // Modify "https://rickandmortyapi.com/graphql" if needed + const response = await fetch('https://rickandmortyapi.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query, + variables, + operationName, + }), + mode: 'cors', + ...fetchOptions, + }); + + const json = await response.json(); + + return json; +}; + +const cache = new Cache( + undefined, + /** + * Default cache options immediate expiry with a 5 minutes window of + * stale-while-revalidate. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } +); + +export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions: { + fetcher: queryFetcher, + }, +}); + +// Core functions +export const { resolve, subscribe, schema } = client; + +// Legacy functions +export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +} = client; + +export const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, +} = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, +}); + +export * from './schema.generated'; diff --git a/examples/vite-react/src/gqty/schema.generated.ts b/examples/vite-react/src/gqty/schema.generated.ts new file mode 100644 index 000000000..ec868660f --- /dev/null +++ b/examples/vite-react/src/gqty/schema.generated.ts @@ -0,0 +1,370 @@ +/** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ + +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; +}; +/** All built-in and custom scalars, mapped to their actual values */ +export interface Scalars { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** The `Upload` scalar type represents a file upload. */ + Upload: any; +} + +export enum CacheControlScope { + PRIVATE = 'PRIVATE', + PUBLIC = 'PUBLIC', +} + +export interface FilterCharacter { + gender?: InputMaybe; + name?: InputMaybe; + species?: InputMaybe; + status?: InputMaybe; + type?: InputMaybe; +} + +export interface FilterEpisode { + episode?: InputMaybe; + name?: InputMaybe; +} + +export interface FilterLocation { + dimension?: InputMaybe; + name?: InputMaybe; + type?: InputMaybe; +} + +export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { + Boolean: true, + CacheControlScope: true, + ID: true, + Int: true, + String: true, + Upload: true, +}; +export const generatedSchema = { + Character: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + episode: { __type: '[Episode]!' }, + gender: { __type: 'String' }, + id: { __type: 'ID' }, + image: { __type: 'String' }, + location: { __type: 'Location' }, + name: { __type: 'String' }, + origin: { __type: 'Location' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + Characters: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Character]' }, + }, + Episode: { + __typename: { __type: 'String!' }, + air_date: { __type: 'String' }, + characters: { __type: '[Character]!' }, + created: { __type: 'String' }, + episode: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + }, + Episodes: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Episode]' }, + }, + FilterCharacter: { + gender: { __type: 'String' }, + name: { __type: 'String' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + FilterEpisode: { episode: { __type: 'String' }, name: { __type: 'String' } }, + FilterLocation: { + dimension: { __type: 'String' }, + name: { __type: 'String' }, + type: { __type: 'String' }, + }, + Info: { + __typename: { __type: 'String!' }, + count: { __type: 'Int' }, + next: { __type: 'Int' }, + pages: { __type: 'Int' }, + prev: { __type: 'Int' }, + }, + Location: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + dimension: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + residents: { __type: '[Character]!' }, + type: { __type: 'String' }, + }, + Locations: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Location]' }, + }, + mutation: {}, + query: { + __typename: { __type: 'String!' }, + character: { __type: 'Character', __args: { id: 'ID!' } }, + characters: { + __type: 'Characters', + __args: { filter: 'FilterCharacter', page: 'Int' }, + }, + charactersByIds: { __type: '[Character]', __args: { ids: '[ID!]!' } }, + episode: { __type: 'Episode', __args: { id: 'ID!' } }, + episodes: { + __type: 'Episodes', + __args: { filter: 'FilterEpisode', page: 'Int' }, + }, + episodesByIds: { __type: '[Episode]', __args: { ids: '[ID!]!' } }, + location: { __type: 'Location', __args: { id: 'ID!' } }, + locations: { + __type: 'Locations', + __args: { filter: 'FilterLocation', page: 'Int' }, + }, + locationsByIds: { __type: '[Location]', __args: { ids: '[ID!]!' } }, + }, + subscription: {}, +} as const; + +export interface Character { + __typename?: 'Character'; + /** + * Time at which the character was created in the database. + */ + created?: Maybe; + /** + * Episodes in which this character appeared. + */ + episode: Array>; + /** + * The gender of the character ('Female', 'Male', 'Genderless' or 'unknown'). + */ + gender?: Maybe; + /** + * The id of the character. + */ + id?: Maybe; + /** + * Link to the character's image. + * All images are 300x300px and most are medium shots or portraits since they are intended to be used as avatars. + */ + image?: Maybe; + /** + * The character's last known location + */ + location?: Maybe; + /** + * The name of the character. + */ + name?: Maybe; + /** + * The character's origin location + */ + origin?: Maybe; + /** + * The species of the character. + */ + species?: Maybe; + /** + * The status of the character ('Alive', 'Dead' or 'unknown'). + */ + status?: Maybe; + /** + * The type or subspecies of the character. + */ + type?: Maybe; +} + +export interface Characters { + __typename?: 'Characters'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Episode { + __typename?: 'Episode'; + /** + * The air date of the episode. + */ + air_date?: Maybe; + /** + * List of characters who have been seen in the episode. + */ + characters: Array>; + /** + * Time at which the episode was created in the database. + */ + created?: Maybe; + /** + * The code of the episode. + */ + episode?: Maybe; + /** + * The id of the episode. + */ + id?: Maybe; + /** + * The name of the episode. + */ + name?: Maybe; +} + +export interface Episodes { + __typename?: 'Episodes'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Info { + __typename?: 'Info'; + /** + * The length of the response. + */ + count?: Maybe; + /** + * Number of the next page (if it exists) + */ + next?: Maybe; + /** + * The amount of pages. + */ + pages?: Maybe; + /** + * Number of the previous page (if it exists) + */ + prev?: Maybe; +} + +export interface Location { + __typename?: 'Location'; + /** + * Time at which the location was created in the database. + */ + created?: Maybe; + /** + * The dimension in which the location is located. + */ + dimension?: Maybe; + /** + * The id of the location. + */ + id?: Maybe; + /** + * The name of the location. + */ + name?: Maybe; + /** + * List of characters who have been last seen in the location. + */ + residents: Array>; + /** + * The type of the location. + */ + type?: Maybe; +} + +export interface Locations { + __typename?: 'Locations'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Mutation { + __typename?: 'Mutation'; +} + +export interface Query { + __typename?: 'Query'; + /** + * Get a specific character by ID + */ + character: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all characters + */ + characters: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of characters selected by ids + */ + charactersByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific episode by ID + */ + episode: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all episodes + */ + episodes: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of episodes selected by ids + */ + episodesByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific locations by ID + */ + location: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all locations + */ + locations: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of locations selected by ids + */ + locationsByIds: (args: { + ids: Array; + }) => Maybe>>; +} + +export interface Subscription { + __typename?: 'Subscription'; +} + +export interface GeneratedSchema { + query: Query; + mutation: Mutation; + subscription: Subscription; +} + +export type MakeNullable = { + [K in keyof T]: T[K] | undefined; +}; + +export interface ScalarsEnums extends MakeNullable { + CacheControlScope: CacheControlScope | undefined; +} diff --git a/examples/vite-example/src/index.css b/examples/vite-react/src/index.css similarity index 100% rename from examples/vite-example/src/index.css rename to examples/vite-react/src/index.css diff --git a/examples/vite-example/src/logo.svg b/examples/vite-react/src/logo.svg similarity index 100% rename from examples/vite-example/src/logo.svg rename to examples/vite-react/src/logo.svg diff --git a/examples/vite-react/src/main.tsx b/examples/vite-react/src/main.tsx new file mode 100644 index 000000000..8d5b75c16 --- /dev/null +++ b/examples/vite-react/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react'; +import { createRoot } from 'react-dom/client'; +import App from './App'; +import './index.css'; + +createRoot(document.getElementById('root')!).render( + + + +); diff --git a/examples/vite-example/src/vite-env.d.ts b/examples/vite-react/src/vite-env.d.ts similarity index 100% rename from examples/vite-example/src/vite-env.d.ts rename to examples/vite-react/src/vite-env.d.ts diff --git a/examples/vite-example/tsconfig.json b/examples/vite-react/tsconfig.json similarity index 90% rename from examples/vite-example/tsconfig.json rename to examples/vite-react/tsconfig.json index 013e6c54f..451931dbf 100644 --- a/examples/vite-example/tsconfig.json +++ b/examples/vite-react/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { - "target": "ESNext", - "lib": ["DOM", "DOM.Iterable", "ESNext"], "allowJs": false, - "skipLibCheck": false, - "esModuleInterop": false, "allowSyntheticDefaultImports": true, - "strict": true, + "esModuleInterop": false, "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react-jsx", + "lib": ["DOM", "DOM.Iterable", "ESNext"], "module": "ESNext", "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, "noEmit": true, - "jsx": "react" + "resolveJsonModule": true, + "skipLibCheck": false, + "strict": true, + "target": "ESNext" }, "include": ["./src"] } diff --git a/examples/vite-example/vite.config.ts b/examples/vite-react/vite.config.ts similarity index 100% rename from examples/vite-example/vite.config.ts rename to examples/vite-react/vite.config.ts diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index e74f13e04..4e41660d0 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -3,7 +3,6 @@ import { useIntervalEffect, usePrevious, useRerender, - useThrottledState, useUpdateEffect, } from '@react-hookz/web'; import { @@ -14,7 +13,7 @@ import { type RetryOptions, } from 'gqty'; import { MultiDict } from 'multidict'; -import { useCallback, useEffect, useMemo, useRef } from 'react'; +import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { translateFetchPolicy, type LegacyFetchPolicy, @@ -110,6 +109,8 @@ export const createUseQuery = ( retryPolicy = retry, staleWhileRevalidate = defaultStaleWhileRevalidate, } = {}) => { + const render = useRerender(); + const debouncedRender = useDebouncedCallback(render, [render], 50); const getIsRendering = useIsRendering(); const resolver = useMemo(() => { const resolver = client.createResolver({ @@ -126,7 +127,11 @@ export const createUseQuery = ( // Trigger a fetch when selections are made outside of the rendering // phase, such as event listeners or polling. if (!getIsRendering()) { - refetch({ skipPrepass: true }); + debouncedRender(); + + // TODO: Make a debounced refetch instead of re-rendering, should + // also prevents recursive refetching via prepass. + // refetch({ skipPrepass: true }); } }, }); @@ -144,10 +149,10 @@ export const createUseQuery = ( selections, } = resolver; - const [state, setState] = useThrottledState<{ + const [state, setState] = useState<{ error?: GQtyError; promise?: Promise; - }>({}, 50); + }>({}); // With `prepare`, selections are only collected within the provided // function. Accessing other properties in the proxy should not trigger @@ -179,8 +184,6 @@ export const createUseQuery = ( // after render so it cannot be done via useEffect, instead refs has to be // used. { - const render = useRerender(); - const debouncedRender = useDebouncedCallback(render, [render], 50); const selectionSizeRef = useRef(0); const unsubscribeRef = useRef<() => void>(); @@ -212,12 +215,13 @@ export const createUseQuery = ( prepass(accessor, selections); } - if (!options?.ignoreCache && !context.shouldFetch) return; - - try { - context.notifyCacheUpdate = true; + if (options?.ignoreCache === true) { context.shouldFetch = true; + } + + if (!context.shouldFetch) return; + try { // Sticky co-fetching selections is only needed when more than one // active context are making selections in one component. This usually // happens with mixed usage of useQuery and other query methods. From 4cb018c15be23f17435e957cefb25205f4734d10 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 29 Apr 2023 14:49:03 +0800 Subject: [PATCH 057/122] chore: warn about empty selections --- packages/gqty/src/Client/resolvers.ts | 44 ++++++++++++++++++------- packages/gqty/src/QueryBuilder/index.ts | 1 + pnpm-lock.yaml | 4 +-- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 602a9876d..39a436eee 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -1,13 +1,13 @@ -import type { BaseGeneratedSchema, FetchOptions } from '.'; +import { type BaseGeneratedSchema, type FetchOptions } from '.'; import { createSchemaAccessor } from '../Accessor'; -import type { Cache } from '../Cache'; -import type { GQtyError, RetryOptions } from '../Error'; -import type { ScalarsEnumsHash, Schema } from '../Schema'; -import type { Selection } from '../Selection'; +import { type Cache } from '../Cache'; +import { type GQtyError, type RetryOptions } from '../Error'; +import { type ScalarsEnumsHash, type Schema } from '../Schema'; +import { type Selection } from '../Selection'; import { pick } from '../Utils/pick'; import { addSelections, delSelectionsSet, getSelectionsSet } from './batching'; import { createContext, SchemaContext } from './context'; -import type { Debugger } from './debugger'; +import { type Debugger } from './debugger'; import { fetchSelections, subscribeSelections, @@ -242,7 +242,18 @@ export const createResolvers = ({ const accessor = createSchemaAccessor(context); - const resolve = async () => { + const resolve: ResolverParts['resolve'] = async () => { + if (selections.size === 0) { + if (process.env.NODE_ENV !== 'production') { + console.warn( + '[GQty] No selections found. If you are reading from the ' + + 'global accessors, try using the first argument instead.' + ); + } + + return; + } + if (!context.shouldFetch) return; if (cachePolicy === 'only-if-cached') { @@ -304,13 +315,24 @@ export const createResolvers = ({ return pendingQueries.get(pendingSelections)!; }; - const subscribe = ({ + const subscribe: ResolverParts['subscribe'] = ({ onComplete, onError, onNext, - }: Parameters< - ReturnType>['subscribe'] - >[0] = {}) => { + } = {}) => { + if (selections.size === 0) { + if (process.env.NODE_ENV !== 'production') { + console.warn( + '[GQty] No selections found. If you are reading from the ' + + 'global accessors, try using the first argument instead.' + ); + } + + return () => { + // noop + }; + } + const unsubscibers = new Set<() => void>(); const unsubscribe = () => { for (const unsubscribe of unsubscibers) { diff --git a/packages/gqty/src/QueryBuilder/index.ts b/packages/gqty/src/QueryBuilder/index.ts index c19c91d8c..0d65e3558 100644 --- a/packages/gqty/src/QueryBuilder/index.ts +++ b/packages/gqty/src/QueryBuilder/index.ts @@ -51,6 +51,7 @@ export const buildQuery = ( const root = {} as SelectionTreeRoot; const variables = new Map(); const inputDedupe = new Map(); + for (const { ancestry } of selections) { set( root, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51db28a9b..2ccd4221e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -341,7 +341,7 @@ importers: specifier: ^7.0.1 version: 7.0.1 - examples/vite: + examples/vite-react: dependencies: '@gqty/cli': specifier: workspace:^ @@ -367,7 +367,7 @@ importers: version: 18.2.0 '@types/react-dom': specifier: ^18.0.11 - version: 18.0.11 + version: 18.2.1 '@vitejs/plugin-react-refresh': specifier: ^1.3.6 version: 1.3.6 From 312447cd9099571c222cc307d33957ddaae46b80 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 30 Apr 2023 12:28:50 +0800 Subject: [PATCH 058/122] chore: rephrase --- examples/gnt/app/Character.tsx | 2 +- packages/cli/src/commands/default.ts | 2 +- packages/cli/src/commands/default/fetchSchema.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/gnt/app/Character.tsx b/examples/gnt/app/Character.tsx index 67ecdf763..acd56d9b4 100644 --- a/examples/gnt/app/Character.tsx +++ b/examples/gnt/app/Character.tsx @@ -5,7 +5,7 @@ export default async function Character({ id, }: Parameters[0]) { const data = await resolve(({ query }) => { - query.character({ id })?.name; + return query.character({ id })?.name; }); return <>{JSON.stringify(data, null, 2)}; diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index 76d041595..dc19feae4 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -31,7 +31,7 @@ export const addCommand = (command: Command) => { (value, previous: string[]) => [...previous, value], [] ) - .option('--react', 'Include React hooks in the genreated client.') + .option('--react', 'Include React hooks in the generated client.') .option( '--subscriptions ', 'Includes specified package as subscription client, must be graphql-ws compatible.' diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts index 981021439..b8202d94d 100644 --- a/packages/cli/src/commands/default/fetchSchema.ts +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -185,7 +185,7 @@ const promptHeaders = async (endpoint: string) => { const { headers } = await deps.inquirer.prompt<{ headers: string }>({ name: 'headers', type: 'input', - message: `Any authorization headers when introspecting ${endpoint}? (comma separated)`, + message: `Any authorization headers for ${endpoint}? (comma separated)`, }); return convertHeadersInput(headers.split(/,/)); From 0d733542a8fb3d4d98a6dd9096b0bcfdfa384541 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 30 Apr 2023 12:34:41 +0800 Subject: [PATCH 059/122] fix(packages/gqty): pure peer dep of graphql-ws --- .../src/Client/compat/subscriptionsClient.ts | 8 ++-- packages/gqty/src/Client/index.ts | 4 +- packages/gqty/src/Client/resolveSelections.ts | 47 ++++++++++++------- 3 files changed, 35 insertions(+), 24 deletions(-) diff --git a/packages/gqty/src/Client/compat/subscriptionsClient.ts b/packages/gqty/src/Client/compat/subscriptionsClient.ts index 5f1914101..16347db04 100644 --- a/packages/gqty/src/Client/compat/subscriptionsClient.ts +++ b/packages/gqty/src/Client/compat/subscriptionsClient.ts @@ -1,5 +1,5 @@ import type { ExecutionResult } from 'graphql'; -import { +import type { Client, ConnectionAckMessage, Event, @@ -81,7 +81,7 @@ export const createLegacySubscriptionsClient = ( events: { onStart: () => { dispatchEvent('message', { - type: MessageType.ConnectionAck, + type: 'connection_ack' as MessageType.ConnectionAck, } satisfies ConnectionAckMessage); }, onComplete: () => { @@ -114,7 +114,7 @@ export const createLegacySubscriptionsClient = ( dispatchEvent('message', { id: operationId, - type: MessageType.Subscribe, + type: 'subscribe' as MessageType.Subscribe, payload, } satisfies SubscribeMessage); }); @@ -125,7 +125,7 @@ export const createLegacySubscriptionsClient = ( dispatchEvent('message', { id: sub.operationId, - type: MessageType.Subscribe, + type: 'subscribe' as MessageType.Subscribe, payload, } satisfies SubscribeMessage); } diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 58ba5c235..392eee900 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -1,5 +1,5 @@ -import type { Client as SseClient } from 'graphql-sse'; -import type { Client as WsClient } from 'graphql-ws'; +import { type Client as SseClient } from 'graphql-sse'; +import { type Client as WsClient } from 'graphql-ws'; import { createSchemaAccessor } from '../Accessor'; import { Cache } from '../Cache'; import { createPersistors, Persistors } from '../Cache/persistence'; diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 7c784c608..891ad0f42 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -1,17 +1,21 @@ -import type { ExecutionResult } from 'graphql'; -import type { Client as SseClient } from 'graphql-sse'; -import type { Client as WsClient } from 'graphql-ws'; -import { MessageType, SubscribePayload } from 'graphql-ws'; -import { CloseEvent, WebSocket } from 'ws'; -import type { FetchOptions } from '.'; -import type { Cache } from '../Cache'; +import { type ExecutionResult } from 'graphql'; +import { type Client as SseClient } from 'graphql-sse'; +import { + type Client as WsClient, + type MessageType, + type SubscribePayload, +} from 'graphql-ws'; +import { Constructor } from 'type-fest'; +import { type CloseEvent, type WebSocket } from 'ws'; +import { type FetchOptions } from '.'; +import { type Cache } from '../Cache'; import { dedupePromise } from '../Cache/query'; import { doRetry, GQtyError } from '../Error'; import { notifyFetch, notifyRetry } from '../Helpers/useMetaStateHack'; import { buildQuery } from '../QueryBuilder'; -import type { QueryPayload } from '../Schema'; -import type { Selection } from '../Selection'; -import type { Debugger } from './debugger'; +import { type QueryPayload } from '../Schema'; +import { type Selection } from '../Selection'; +import { type Debugger } from './debugger'; export type FetchSelectionsOptions = { cache?: Cache; @@ -132,7 +136,7 @@ export const subscribeSelections = < Promise.all( buildQuery(selections, operationName).map( - ({ + async ({ query, variables, operationName, @@ -158,7 +162,7 @@ export const subscribeSelections = < { const unsub = subscriber?.on('message', (message) => { switch (message.type) { - case MessageType.ConnectionAck: { + case 'connection_ack' as MessageType.ConnectionAck: { unsub?.(); onSubscribe?.(); break; @@ -170,10 +174,10 @@ export const subscribeSelections = < { const unsub = subscriber?.on('message', (message) => { switch (message.type) { - case MessageType.ConnectionAck: { + case 'connection_ack' as MessageType.ConnectionAck: { break; } - case MessageType.Subscribe: { + case 'subscribe' as MessageType.Subscribe: { if (message.payload.extensions?.hash !== hash) return; subscriptionId = message.id; @@ -242,6 +246,8 @@ export const subscribeSelections = < let dispose: (() => void) | undefined; + const ws = await import('ws'); + // Dedupe const promise = dedupePromise(cache, hash, () => { return new Promise((complete) => { @@ -252,7 +258,7 @@ export const subscribeSelections = < error(err) { if (Array.isArray(err)) { error(GQtyError.fromGraphQLErrors(err)); - } else if (!isCloseEvent(err)) { + } else if (!isCloseEvent(err, ws.WebSocket)) { error(GQtyError.create(err)); } @@ -362,6 +368,8 @@ const doSubscribeOnce = async < throw new GQtyError(`Subscription client is required for subscritions.`); } + const ws = await import('ws'); + return new Promise>>( (resolve, reject) => { let result: any; @@ -378,7 +386,7 @@ const doSubscribeOnce = async < unsubscribe(); }, error(error) { - if (isCloseEvent(error)) { + if (isCloseEvent(error, ws.WebSocket)) { resolve(result); } else if (Array.isArray(error)) { reject(GQtyError.fromGraphQLErrors(error)); @@ -399,11 +407,14 @@ const doSubscribeOnce = async < ); }; -export const isCloseEvent = (input: unknown): input is CloseEvent => { +export const isCloseEvent = ( + input: unknown, + wsImpl: Constructor +): input is CloseEvent => { const error = input as CloseEvent; return ( - (error.type === 'close' && error.target instanceof WebSocket) || + (error.type === 'close' && error.target instanceof wsImpl) || (typeof error.code === 'number' && [ 4004, 4005, 4400, 4401, 4403, 4406, 4408, 4409, 4429, 4499, 4500, 4504, From 34c21cdde6d29b91fb442eed55dca6fc4903df92 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 30 Apr 2023 18:44:48 +0800 Subject: [PATCH 060/122] fix: edge compatible microtask --- packages/gqty/src/Client/resolvers.ts | 60 +++++++++++++-------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 39a436eee..426f6c2e9 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -273,40 +273,36 @@ export const createResolvers = ({ if (!pendingQueries.has(pendingSelections)) { pendingQueries.set( pendingSelections, - new Promise((resolve, reject) => { - queueMicrotask(() => { - const selections = new Set( - [ - ...(getSelectionsSet(clientCache, selectionsCacheKey) ?? []), - ].flatMap((selections) => [...selections]) + Promise.resolve().then(() => { + const selections = new Set( + [ + ...(getSelectionsSet(clientCache, selectionsCacheKey) ?? []), + ].flatMap((selections) => [...selections]) + ); + + pendingQueries.delete(pendingSelections); + + delSelectionsSet(clientCache, selectionsCacheKey); + + return fetchSelections(selections, { + cache: context.cache, + debugger: debug, + fetchOptions: { + ...fetchOptions, + cachePolicy, + retryPolicy, + }, + operationName, + }).then((results) => { + updateCaches( + results, + cachePolicy !== 'no-store' && context.cache !== clientCache + ? [context.cache, clientCache] + : [context.cache], + { skipNotify: !context.notifyCacheUpdate } ); - pendingQueries.delete(pendingSelections); - - delSelectionsSet(clientCache, selectionsCacheKey); - - fetchSelections(selections, { - cache: context.cache, - debugger: debug, - fetchOptions: { - ...fetchOptions, - cachePolicy, - retryPolicy, - }, - operationName, - }) - .then((results) => { - updateCaches( - results, - cachePolicy !== 'no-store' && context.cache !== clientCache - ? [context.cache, clientCache] - : [context.cache], - { skipNotify: !context.notifyCacheUpdate } - ); - - return results; - }) - .then(resolve, reject); + return results; }); }) ); From bd938bd6760a20e63f3cb56fc156eb6db007884c Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 2 May 2023 19:25:47 +0800 Subject: [PATCH 061/122] chore(examples/github): remove stale example --- examples/github/gqty.config.cjs | 32 - examples/github/jest.config.js | 1 - examples/github/package.json | 25 - examples/github/src/gqty/index.ts | 53 - examples/github/src/gqty/schema.generated.ts | 51617 ----------------- examples/github/test/index.test.ts | 678 - examples/github/tsconfig.json | 100 - 7 files changed, 52506 deletions(-) delete mode 100644 examples/github/gqty.config.cjs delete mode 100644 examples/github/jest.config.js delete mode 100644 examples/github/package.json delete mode 100644 examples/github/src/gqty/index.ts delete mode 100644 examples/github/src/gqty/schema.generated.ts delete mode 100644 examples/github/test/index.test.ts delete mode 100644 examples/github/tsconfig.json diff --git a/examples/github/gqty.config.cjs b/examples/github/gqty.config.cjs deleted file mode 100644 index 46966f971..000000000 --- a/examples/github/gqty.config.cjs +++ /dev/null @@ -1,32 +0,0 @@ -require('dotenv').config(); - -/** - * @type {import("@gqty/cli").GQtyConfig} - */ -const config = { - enumsAsStrings: false, - react: false, - scalarTypes: { - DateTime: 'string', - Date: 'string', - GitObjectID: 'string', - GitSSHRemote: 'string', - GitTimestamp: 'string', - HTML: 'string', - PreciseDateTime: 'string', - URI: 'string', - X509Certificate: 'string', - }, - preImport: '', - introspection: { - endpoint: 'https://api.github.com/graphql', - headers: { - authorization: `bearer ${process.env.GITHUB_TOKEN}`, - }, - }, - destination: './src/gqty/index.ts', - subscriptions: false, - javascriptOutput: false, -}; - -module.exports = config; diff --git a/examples/github/jest.config.js b/examples/github/jest.config.js deleted file mode 100644 index 6e155aacb..000000000 --- a/examples/github/jest.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('test-utils/jest.config.js').default; diff --git a/examples/github/package.json b/examples/github/package.json deleted file mode 100644 index 2fe81fdb0..000000000 --- a/examples/github/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "example-github", - "version": "1.0.0", - "private": true, - "description": "", - "license": "MIT", - "author": "PabloSzx ", - "scripts": { - "generate": "gqty generate", - "test:manual": "jest -u" - }, - "dependencies": { - "@gqty/cli": "workspace:^", - "dotenv": "^16.0.3", - "gqty": "workspace:^", - "test-utils": "workspace:^" - }, - "devDependencies": { - "@types/node": "^18.15.5", - "esbuild": "^0.17.12", - "isomorphic-unfetch": "^4.0.2", - "jest": "^29.5.0", - "typescript": "^4.9.5" - } -} diff --git a/examples/github/src/gqty/index.ts b/examples/github/src/gqty/index.ts deleted file mode 100644 index 796313849..000000000 --- a/examples/github/src/gqty/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * GQty: You can safely modify this file based on your needs. - */ - -import 'dotenv/config'; -import 'isomorphic-unfetch'; - -import { createClient, QueryFetcher } from 'gqty'; - -import { - generatedSchema, - GeneratedSchema, - scalarsEnumsHash, -} from './schema.generated'; - -if (!process.env.GITHUB_TOKEN) { - console.error( - 'You have to create a .env file with a Github Personal Access token, like this: \nGITHUB_TOKEN=your_token_here' - ); - process.exit(1); -} - -const queryFetcher: QueryFetcher = async function (query, variables) { - const response = await fetch('https://api.github.com/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - authorization: `bearer ${process.env.GITHUB_TOKEN}`, - }, - body: JSON.stringify({ - query, - variables, - }), - mode: 'cors', - }); - - const json = await response.json(); - - return json; -}; - -export const client = createClient({ - schema: generatedSchema, - scalars: scalarsEnumsHash, - fetchOptions: { - fetcher: queryFetcher, - }, -}); - -const { query, mutation, mutate, subscription, resolved, refetch } = client; - -export * from './schema.generated'; -export { query, mutation, mutate, subscription, resolved, refetch }; diff --git a/examples/github/src/gqty/schema.generated.ts b/examples/github/src/gqty/schema.generated.ts deleted file mode 100644 index 5a2d32e08..000000000 --- a/examples/github/src/gqty/schema.generated.ts +++ /dev/null @@ -1,51617 +0,0 @@ -/** - * GQTY AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY - */ - -import { SchemaUnionsKey } from 'gqty'; - -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; -}; -/** All built-in and custom scalars, mapped to their actual values */ -export interface Scalars { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - /** A (potentially binary) string encoded using base64. */ - Base64String: any; - /** An ISO-8601 encoded date string. */ - Date: string; - /** An ISO-8601 encoded UTC date string. */ - DateTime: string; - /** A Git object ID. */ - GitObjectID: string; - /** Git SSH string */ - GitSSHRemote: string; - /** An ISO-8601 encoded date string. Unlike the DateTime type, GitTimestamp is not converted in UTC. */ - GitTimestamp: string; - /** A string containing HTML code. */ - HTML: string; - /** An ISO-8601 encoded UTC date string with millisecond precision. */ - PreciseDateTime: string; - /** An RFC 3986, RFC 3987, and RFC 6570 (level 4) compliant URI string. */ - URI: string; - /** A valid x509 certificate string */ - X509Certificate: string; -} - -/** Autogenerated input type of AcceptEnterpriseAdministratorInvitation */ -export interface AcceptEnterpriseAdministratorInvitationInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the invitation being accepted */ - invitationId: Scalars['ID']; -} - -/** Autogenerated input type of AcceptTopicSuggestion */ -export interface AcceptTopicSuggestionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the suggested topic. */ - name: Scalars['String']; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of AddAssigneesToAssignable */ -export interface AddAssigneesToAssignableInput { - /** The id of the assignable object to add assignees to. */ - assignableId: Scalars['ID']; - /** The id of users to add as assignees. */ - assigneeIds: Array; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; -} - -/** Autogenerated input type of AddComment */ -export interface AddCommentInput { - /** The contents of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the subject to modify. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of AddDiscussionComment */ -export interface AddDiscussionCommentInput { - /** The contents of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion to comment on. */ - discussionId: Scalars['ID']; - /** The Node ID of the discussion comment within this discussion to reply to. */ - replyToId?: InputMaybe; -} - -/** Autogenerated input type of AddEnterpriseSupportEntitlement */ -export interface AddEnterpriseSupportEntitlementInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Enterprise which the admin belongs to. */ - enterpriseId: Scalars['ID']; - /** The login of a member who will receive the support entitlement. */ - login: Scalars['String']; -} - -/** Autogenerated input type of AddLabelsToLabelable */ -export interface AddLabelsToLabelableInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ids of the labels to add. */ - labelIds: Array; - /** The id of the labelable object to add labels to. */ - labelableId: Scalars['ID']; -} - -/** Autogenerated input type of AddProjectCard */ -export interface AddProjectCardInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The content of the card. Must be a member of the ProjectCardItem union */ - contentId?: InputMaybe; - /** The note on the card. */ - note?: InputMaybe; - /** The Node ID of the ProjectColumn. */ - projectColumnId: Scalars['ID']; -} - -/** Autogenerated input type of AddProjectColumn */ -export interface AddProjectColumnInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the column. */ - name: Scalars['String']; - /** The Node ID of the project. */ - projectId: Scalars['ID']; -} - -/** Autogenerated input type of AddProjectNextItem */ -export interface AddProjectNextItemInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The content id of the item (Issue or PullRequest). */ - contentId: Scalars['ID']; - /** The ID of the Project to add the item to. */ - projectId: Scalars['ID']; -} - -/** Autogenerated input type of AddPullRequestReviewComment */ -export interface AddPullRequestReviewCommentInput { - /** The text of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The SHA of the commit to comment on. */ - commitOID?: InputMaybe; - /** The comment id to reply to. */ - inReplyTo?: InputMaybe; - /** The relative path of the file to comment on. */ - path?: InputMaybe; - /** The line index in the diff to comment on. */ - position?: InputMaybe; - /** The node ID of the pull request reviewing */ - pullRequestId?: InputMaybe; - /** The Node ID of the review to modify. */ - pullRequestReviewId?: InputMaybe; -} - -/** Autogenerated input type of AddPullRequestReview */ -export interface AddPullRequestReviewInput { - /** The contents of the review body comment. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The review line comments. */ - comments?: InputMaybe>>; - /** The commit OID the review pertains to. */ - commitOID?: InputMaybe; - /** The event to perform on the pull request review. */ - event?: InputMaybe; - /** The Node ID of the pull request to modify. */ - pullRequestId: Scalars['ID']; - /** The review line comment threads. */ - threads?: InputMaybe>>; -} - -/** Autogenerated input type of AddPullRequestReviewThread */ -export interface AddPullRequestReviewThreadInput { - /** Body of the thread's first comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The line of the blob to which the thread refers. The end of the line range for multi-line comments. */ - line: Scalars['Int']; - /** Path to the file being commented on. */ - path: Scalars['String']; - /** The node ID of the pull request reviewing */ - pullRequestId?: InputMaybe; - /** The Node ID of the review to modify. */ - pullRequestReviewId?: InputMaybe; - /** The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range. */ - side?: InputMaybe; - /** The first line of the range to which the comment refers. */ - startLine?: InputMaybe; - /** The side of the diff on which the start line resides. */ - startSide?: InputMaybe; -} - -/** Autogenerated input type of AddReaction */ -export interface AddReactionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the emoji to react with. */ - content: ReactionContent; - /** The Node ID of the subject to modify. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of AddStar */ -export interface AddStarInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Starrable ID to star. */ - starrableId: Scalars['ID']; -} - -/** Autogenerated input type of AddUpvote */ -export interface AddUpvoteInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion or comment to upvote. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of AddVerifiableDomain */ -export interface AddVerifiableDomainInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The URL of the domain */ - domain: Scalars['URI']; - /** The ID of the owner to add the domain to */ - ownerId: Scalars['ID']; -} - -/** Autogenerated input type of ApproveDeployments */ -export interface ApproveDeploymentsInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Optional comment for approving deployments */ - comment?: InputMaybe; - /** The ids of environments to reject deployments */ - environmentIds: Array; - /** The node ID of the workflow run containing the pending deployments. */ - workflowRunId: Scalars['ID']; -} - -/** Autogenerated input type of ApproveVerifiableDomain */ -export interface ApproveVerifiableDomainInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the verifiable domain to approve. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of ArchiveRepository */ -export interface ArchiveRepositoryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the repository to mark as archived. */ - repositoryId: Scalars['ID']; -} - -/** Ordering options for Audit Log connections. */ -export interface AuditLogOrder { - /** The ordering direction. */ - direction?: InputMaybe; - /** The field to order Audit Logs by. */ - field?: InputMaybe; -} - -/** Properties by which Audit Log connections can be ordered. */ -export enum AuditLogOrderField { - /** Order audit log entries by timestamp */ - CREATED_AT = 'CREATED_AT', -} - -/** Autogenerated input type of CancelEnterpriseAdminInvitation */ -export interface CancelEnterpriseAdminInvitationInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the pending enterprise administrator invitation. */ - invitationId: Scalars['ID']; -} - -/** Autogenerated input type of CancelSponsorship */ -export interface CancelSponsorshipInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given. */ - sponsorId?: InputMaybe; - /** The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given. */ - sponsorLogin?: InputMaybe; - /** The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. */ - sponsorableId?: InputMaybe; - /** The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. */ - sponsorableLogin?: InputMaybe; -} - -/** Autogenerated input type of ChangeUserStatus */ -export interface ChangeUserStatusInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The emoji to represent your status. Can either be a native Unicode emoji or an emoji name with colons, e.g., :grinning:. */ - emoji?: InputMaybe; - /** If set, the user status will not be shown after this date. */ - expiresAt?: InputMaybe; - /** Whether this status should indicate you are not fully available on GitHub, e.g., you are away. */ - limitedAvailability?: InputMaybe; - /** A short description of your current status. */ - message?: InputMaybe; - /** The ID of the organization whose members will be allowed to see the status. If omitted, the status will be publicly visible. */ - organizationId?: InputMaybe; -} - -/** Information from a check run analysis to specific lines of code. */ -export interface CheckAnnotationData { - /** Represents an annotation's information level */ - annotationLevel: CheckAnnotationLevel; - /** The location of the annotation */ - location: CheckAnnotationRange; - /** A short description of the feedback for these lines of code. */ - message: Scalars['String']; - /** The path of the file to add an annotation to. */ - path: Scalars['String']; - /** Details about this annotation. */ - rawDetails?: InputMaybe; - /** The title that represents the annotation. */ - title?: InputMaybe; -} - -/** Represents an annotation's information level. */ -export enum CheckAnnotationLevel { - /** An annotation indicating an inescapable error. */ - FAILURE = 'FAILURE', - /** An annotation indicating some information. */ - NOTICE = 'NOTICE', - /** An annotation indicating an ignorable error. */ - WARNING = 'WARNING', -} - -/** Information from a check run analysis to specific lines of code. */ -export interface CheckAnnotationRange { - /** The ending column of the range. */ - endColumn?: InputMaybe; - /** The ending line of the range. */ - endLine: Scalars['Int']; - /** The starting column of the range. */ - startColumn?: InputMaybe; - /** The starting line of the range. */ - startLine: Scalars['Int']; -} - -/** The possible states for a check suite or run conclusion. */ -export enum CheckConclusionState { - /** The check suite or run requires action. */ - ACTION_REQUIRED = 'ACTION_REQUIRED', - /** The check suite or run has been cancelled. */ - CANCELLED = 'CANCELLED', - /** The check suite or run has failed. */ - FAILURE = 'FAILURE', - /** The check suite or run was neutral. */ - NEUTRAL = 'NEUTRAL', - /** The check suite or run was skipped. */ - SKIPPED = 'SKIPPED', - /** The check suite or run was marked stale by GitHub. Only GitHub can use this conclusion. */ - STALE = 'STALE', - /** The check suite or run has failed at startup. */ - STARTUP_FAILURE = 'STARTUP_FAILURE', - /** The check suite or run has succeeded. */ - SUCCESS = 'SUCCESS', - /** The check suite or run has timed out. */ - TIMED_OUT = 'TIMED_OUT', -} - -/** Possible further actions the integrator can perform. */ -export interface CheckRunAction { - /** A short explanation of what this action would do. */ - description: Scalars['String']; - /** A reference for the action on the integrator's system. */ - identifier: Scalars['String']; - /** The text to be displayed on a button in the web UI. */ - label: Scalars['String']; -} - -/** The filters that are available when fetching check runs. */ -export interface CheckRunFilter { - /** Filters the check runs created by this application ID. */ - appId?: InputMaybe; - /** Filters the check runs by this name. */ - checkName?: InputMaybe; - /** Filters the check runs by this type. */ - checkType?: InputMaybe; - /** Filters the check runs by this status. */ - status?: InputMaybe; -} - -/** Descriptive details about the check run. */ -export interface CheckRunOutput { - /** The annotations that are made as part of the check run. */ - annotations?: InputMaybe>; - /** Images attached to the check run output displayed in the GitHub pull request UI. */ - images?: InputMaybe>; - /** The summary of the check run (supports Commonmark). */ - summary: Scalars['String']; - /** The details of the check run (supports Commonmark). */ - text?: InputMaybe; - /** A title to provide for this check run. */ - title: Scalars['String']; -} - -/** Images attached to the check run output displayed in the GitHub pull request UI. */ -export interface CheckRunOutputImage { - /** The alternative text for the image. */ - alt: Scalars['String']; - /** A short image description. */ - caption?: InputMaybe; - /** The full URL of the image. */ - imageUrl: Scalars['URI']; -} - -/** The possible types of check runs. */ -export enum CheckRunType { - /** Every check run available. */ - ALL = 'ALL', - /** The latest check run. */ - LATEST = 'LATEST', -} - -/** The possible states for a check suite or run status. */ -export enum CheckStatusState { - /** The check suite or run has been completed. */ - COMPLETED = 'COMPLETED', - /** The check suite or run is in progress. */ - IN_PROGRESS = 'IN_PROGRESS', - /** The check suite or run is in pending state. */ - PENDING = 'PENDING', - /** The check suite or run has been queued. */ - QUEUED = 'QUEUED', - /** The check suite or run has been requested. */ - REQUESTED = 'REQUESTED', - /** The check suite or run is in waiting state. */ - WAITING = 'WAITING', -} - -/** The auto-trigger preferences that are available for check suites. */ -export interface CheckSuiteAutoTriggerPreference { - /** The node ID of the application that owns the check suite. */ - appId: Scalars['ID']; - /** Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository. */ - setting: Scalars['Boolean']; -} - -/** The filters that are available when fetching check suites. */ -export interface CheckSuiteFilter { - /** Filters the check suites created by this application ID. */ - appId?: InputMaybe; - /** Filters the check suites by this name. */ - checkName?: InputMaybe; -} - -/** Autogenerated input type of ClearLabelsFromLabelable */ -export interface ClearLabelsFromLabelableInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the labelable object to clear the labels from. */ - labelableId: Scalars['ID']; -} - -/** Autogenerated input type of CloneProject */ -export interface CloneProjectInput { - /** The description of the project. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Whether or not to clone the source project's workflows. */ - includeWorkflows: Scalars['Boolean']; - /** The name of the project. */ - name: Scalars['String']; - /** The visibility of the project, defaults to false (private). */ - public?: InputMaybe; - /** The source project to clone. */ - sourceId: Scalars['ID']; - /** The owner ID to create the project under. */ - targetOwnerId: Scalars['ID']; -} - -/** Autogenerated input type of CloneTemplateRepository */ -export interface CloneTemplateRepositoryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** A short description of the new repository. */ - description?: InputMaybe; - /** Whether to copy all branches from the template to the new repository. Defaults to copying only the default branch of the template. */ - includeAllBranches?: InputMaybe; - /** The name of the new repository. */ - name: Scalars['String']; - /** The ID of the owner for the new repository. */ - ownerId: Scalars['ID']; - /** The Node ID of the template repository. */ - repositoryId: Scalars['ID']; - /** Indicates the repository's visibility level. */ - visibility: RepositoryVisibility; -} - -/** Autogenerated input type of CloseIssue */ -export interface CloseIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the issue to be closed. */ - issueId: Scalars['ID']; -} - -/** Autogenerated input type of ClosePullRequest */ -export interface ClosePullRequestInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the pull request to be closed. */ - pullRequestId: Scalars['ID']; -} - -/** Collaborators affiliation level with a subject. */ -export enum CollaboratorAffiliation { - /** All collaborators the authenticated user can see. */ - ALL = 'ALL', - /** All collaborators with permissions to an organization-owned subject, regardless of organization membership status. */ - DIRECT = 'DIRECT', - /** All outside collaborators of an organization-owned subject. */ - OUTSIDE = 'OUTSIDE', -} - -/** A comment author association with repository. */ -export enum CommentAuthorAssociation { - /** Author has been invited to collaborate on the repository. */ - COLLABORATOR = 'COLLABORATOR', - /** Author has previously committed to the repository. */ - CONTRIBUTOR = 'CONTRIBUTOR', - /** Author has not previously committed to GitHub. */ - FIRST_TIMER = 'FIRST_TIMER', - /** Author has not previously committed to the repository. */ - FIRST_TIME_CONTRIBUTOR = 'FIRST_TIME_CONTRIBUTOR', - /** Author is a placeholder for an unclaimed user. */ - MANNEQUIN = 'MANNEQUIN', - /** Author is a member of the organization that owns the repository. */ - MEMBER = 'MEMBER', - /** Author has no association with the repository. */ - NONE = 'NONE', - /** Author is the owner of the repository. */ - OWNER = 'OWNER', -} - -/** The possible errors that will prevent a user from updating a comment. */ -export enum CommentCannotUpdateReason { - /** Unable to create comment because repository is archived. */ - ARCHIVED = 'ARCHIVED', - /** You cannot update this comment */ - DENIED = 'DENIED', - /** You must be the author or have write access to this repository to update this comment. */ - INSUFFICIENT_ACCESS = 'INSUFFICIENT_ACCESS', - /** Unable to create comment because issue is locked. */ - LOCKED = 'LOCKED', - /** You must be logged in to update this comment. */ - LOGIN_REQUIRED = 'LOGIN_REQUIRED', - /** Repository is under maintenance. */ - MAINTENANCE = 'MAINTENANCE', - /** At least one email address must be verified to update this comment. */ - VERIFIED_EMAIL_REQUIRED = 'VERIFIED_EMAIL_REQUIRED', -} - -/** Specifies an author for filtering Git commits. */ -export interface CommitAuthor { - /** Email addresses to filter by. Commits authored by any of the specified email addresses will be returned. */ - emails?: InputMaybe>; - /** ID of a User to filter by. If non-null, only commits authored by this user will be returned. This field takes precedence over emails. */ - id?: InputMaybe; -} - -/** Ordering options for commit contribution connections. */ -export interface CommitContributionOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field by which to order commit contributions. */ - field: CommitContributionOrderField; -} - -/** Properties by which commit contribution connections can be ordered. */ -export enum CommitContributionOrderField { - /** Order commit contributions by how many commits they represent. */ - COMMIT_COUNT = 'COMMIT_COUNT', - /** Order commit contributions by when they were made. */ - OCCURRED_AT = 'OCCURRED_AT', -} - -/** A message to include with a new commit */ -export interface CommitMessage { - /** The body of the message. */ - body?: InputMaybe; - /** The headline of the message. */ - headline: Scalars['String']; -} - -/** - * A git ref for a commit to be appended to. - * - * The ref must be a branch, i.e. its fully qualified name must start - * with `refs/heads/` (although the input is not required to be fully - * qualified). - * - * The Ref may be specified by its global node ID or by the - * repository nameWithOwner and branch name. - * - * ### Examples - * - * Specify a branch using a global node ID: - * - * { "id": "MDM6UmVmMTpyZWZzL2hlYWRzL21haW4=" } - * - * Specify a branch using nameWithOwner and branch name: - * - * { - * "nameWithOwner": "github/graphql-client", - * "branchName": "main" - * } - */ -export interface CommittableBranch { - /** The unqualified name of the branch to append the commit to. */ - branchName?: InputMaybe; - /** The Node ID of the Ref to be updated. */ - id?: InputMaybe; - /** The nameWithOwner of the repository to commit to. */ - repositoryNameWithOwner?: InputMaybe; -} - -/** Varying levels of contributions from none to many. */ -export enum ContributionLevel { - /** Lowest 25% of days of contributions. */ - FIRST_QUARTILE = 'FIRST_QUARTILE', - /** Highest 25% of days of contributions. More contributions than the third quartile. */ - FOURTH_QUARTILE = 'FOURTH_QUARTILE', - /** No contributions occurred. */ - NONE = 'NONE', - /** Second lowest 25% of days of contributions. More contributions than the first quartile. */ - SECOND_QUARTILE = 'SECOND_QUARTILE', - /** Second highest 25% of days of contributions. More contributions than second quartile, less than the fourth quartile. */ - THIRD_QUARTILE = 'THIRD_QUARTILE', -} - -/** Ordering options for contribution connections. */ -export interface ContributionOrder { - /** The ordering direction. */ - direction: OrderDirection; -} - -/** Autogenerated input type of ConvertProjectCardNoteToIssue */ -export interface ConvertProjectCardNoteToIssueInput { - /** The body of the newly created issue. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ProjectCard ID to convert. */ - projectCardId: Scalars['ID']; - /** The ID of the repository to create the issue in. */ - repositoryId: Scalars['ID']; - /** The title of the newly created issue. Defaults to the card's note text. */ - title?: InputMaybe; -} - -/** Autogenerated input type of ConvertPullRequestToDraft */ -export interface ConvertPullRequestToDraftInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the pull request to convert to draft */ - pullRequestId: Scalars['ID']; -} - -/** Autogenerated input type of CreateBranchProtectionRule */ -export interface CreateBranchProtectionRuleInput { - /** Can this branch be deleted. */ - allowsDeletions?: InputMaybe; - /** Are force pushes allowed on this branch. */ - allowsForcePushes?: InputMaybe; - /** A list of User or Team IDs allowed to bypass force push targeting matching branches. */ - bypassForcePushActorIds?: InputMaybe>; - /** A list of User or Team IDs allowed to bypass pull requests targeting matching branches. */ - bypassPullRequestActorIds?: InputMaybe>; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Will new commits pushed to matching branches dismiss pull request review approvals. */ - dismissesStaleReviews?: InputMaybe; - /** Can admins overwrite branch protection. */ - isAdminEnforced?: InputMaybe; - /** The glob-like pattern used to determine matching branches. */ - pattern: Scalars['String']; - /** A list of User, Team or App IDs allowed to push to matching branches. */ - pushActorIds?: InputMaybe>; - /** The global relay id of the repository in which a new branch protection rule should be created in. */ - repositoryId: Scalars['ID']; - /** Number of approving reviews required to update matching branches. */ - requiredApprovingReviewCount?: InputMaybe; - /** List of required status check contexts that must pass for commits to be accepted to matching branches. */ - requiredStatusCheckContexts?: InputMaybe>; - /** The list of required status checks */ - requiredStatusChecks?: InputMaybe>; - /** Are approving reviews required to update matching branches. */ - requiresApprovingReviews?: InputMaybe; - /** Are reviews from code owners required to update matching branches. */ - requiresCodeOwnerReviews?: InputMaybe; - /** Are commits required to be signed. */ - requiresCommitSignatures?: InputMaybe; - /** Are conversations required to be resolved before merging. */ - requiresConversationResolution?: InputMaybe; - /** Are merge commits prohibited from being pushed to this branch. */ - requiresLinearHistory?: InputMaybe; - /** Are status checks required to update matching branches. */ - requiresStatusChecks?: InputMaybe; - /** Are branches required to be up to date before merging. */ - requiresStrictStatusChecks?: InputMaybe; - /** Is pushing to matching branches restricted. */ - restrictsPushes?: InputMaybe; - /** Is dismissal of pull request reviews restricted. */ - restrictsReviewDismissals?: InputMaybe; - /** A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. */ - reviewDismissalActorIds?: InputMaybe>; -} - -/** Autogenerated input type of CreateCheckRun */ -export interface CreateCheckRunInput { - /** Possible further actions the integrator can perform, which a user may trigger. */ - actions?: InputMaybe>; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The time that the check run finished. */ - completedAt?: InputMaybe; - /** The final conclusion of the check. */ - conclusion?: InputMaybe; - /** The URL of the integrator's site that has the full details of the check. */ - detailsUrl?: InputMaybe; - /** A reference for the run on the integrator's system. */ - externalId?: InputMaybe; - /** The SHA of the head commit. */ - headSha: Scalars['GitObjectID']; - /** The name of the check. */ - name: Scalars['String']; - /** Descriptive details about the run. */ - output?: InputMaybe; - /** The node ID of the repository. */ - repositoryId: Scalars['ID']; - /** The time that the check run began. */ - startedAt?: InputMaybe; - /** The current status. */ - status?: InputMaybe; -} - -/** Autogenerated input type of CreateCheckSuite */ -export interface CreateCheckSuiteInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The SHA of the head commit. */ - headSha: Scalars['GitObjectID']; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of CreateCommitOnBranch */ -export interface CreateCommitOnBranchInput { - /** The Ref to be updated. Must be a branch. */ - branch: CommittableBranch; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The git commit oid expected at the head of the branch prior to the commit */ - expectedHeadOid: Scalars['GitObjectID']; - /** A description of changes to files in this commit. */ - fileChanges?: InputMaybe; - /** The commit message the be included with the commit. */ - message: CommitMessage; -} - -/** Autogenerated input type of CreateDiscussion */ -export interface CreateDiscussionInput { - /** The body of the discussion. */ - body: Scalars['String']; - /** The id of the discussion category to associate with this discussion. */ - categoryId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the repository on which to create the discussion. */ - repositoryId: Scalars['ID']; - /** The title of the discussion. */ - title: Scalars['String']; -} - -/** Autogenerated input type of CreateEnterpriseOrganization */ -export interface CreateEnterpriseOrganizationInput { - /** The logins for the administrators of the new organization. */ - adminLogins: Array; - /** The email used for sending billing receipts. */ - billingEmail: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise owning the new organization. */ - enterpriseId: Scalars['ID']; - /** The login of the new organization. */ - login: Scalars['String']; - /** The profile name of the new organization. */ - profileName: Scalars['String']; -} - -/** Autogenerated input type of CreateEnvironment */ -export interface CreateEnvironmentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the environment. */ - name: Scalars['String']; - /** The node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of CreateIpAllowListEntry */ -export interface CreateIpAllowListEntryInput { - /** An IP address or range of addresses in CIDR notation. */ - allowListValue: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Whether the IP allow list entry is active when an IP allow list is enabled. */ - isActive: Scalars['Boolean']; - /** An optional name for the IP allow list entry. */ - name?: InputMaybe; - /** The ID of the owner for which to create the new IP allow list entry. */ - ownerId: Scalars['ID']; -} - -/** Autogenerated input type of CreateIssue */ -export interface CreateIssueInput { - /** The Node ID for the user assignee for this issue. */ - assigneeIds?: InputMaybe>; - /** The body for the issue description. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of an issue template in the repository, assigns labels and assignees from the template to the issue */ - issueTemplate?: InputMaybe; - /** An array of Node IDs of labels for this issue. */ - labelIds?: InputMaybe>; - /** The Node ID of the milestone for this issue. */ - milestoneId?: InputMaybe; - /** An array of Node IDs for projects associated with this issue. */ - projectIds?: InputMaybe>; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; - /** The title for the issue. */ - title: Scalars['String']; -} - -/** Autogenerated input type of CreateProject */ -export interface CreateProjectInput { - /** The description of project. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of project. */ - name: Scalars['String']; - /** The owner ID to create the project under. */ - ownerId: Scalars['ID']; - /** A list of repository IDs to create as linked repositories for the project */ - repositoryIds?: InputMaybe>; - /** The name of the GitHub-provided template. */ - template?: InputMaybe; -} - -/** Autogenerated input type of CreatePullRequest */ -export interface CreatePullRequestInput { - /** - * The name of the branch you want your changes pulled into. This should be an existing branch - * on the current repository. You cannot update the base branch on a pull request to point - * to another repository. - */ - baseRefName: Scalars['String']; - /** The contents of the pull request. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Indicates whether this pull request should be a draft. */ - draft?: InputMaybe; - /** - * The name of the branch where your changes are implemented. For cross-repository pull requests - * in the same network, namespace `head_ref_name` with a user like this: `username:branch`. - */ - headRefName: Scalars['String']; - /** Indicates whether maintainers can modify the pull request. */ - maintainerCanModify?: InputMaybe; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; - /** The title of the pull request. */ - title: Scalars['String']; -} - -/** Autogenerated input type of CreateRef */ -export interface CreateRefInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The fully qualified name of the new Ref (ie: `refs/heads/my_new_branch`). */ - name: Scalars['String']; - /** The GitObjectID that the new Ref shall target. Must point to a commit. */ - oid: Scalars['GitObjectID']; - /** The Node ID of the Repository to create the Ref in. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of CreateRepository */ -export interface CreateRepositoryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** A short description of the new repository. */ - description?: InputMaybe; - /** Indicates if the repository should have the issues feature enabled. */ - hasIssuesEnabled?: InputMaybe; - /** Indicates if the repository should have the wiki feature enabled. */ - hasWikiEnabled?: InputMaybe; - /** The URL for a web page about this repository. */ - homepageUrl?: InputMaybe; - /** The name of the new repository. */ - name: Scalars['String']; - /** The ID of the owner for the new repository. */ - ownerId?: InputMaybe; - /** When an organization is specified as the owner, this ID identifies the team that should be granted access to the new repository. */ - teamId?: InputMaybe; - /** Whether this repository should be marked as a template such that anyone who can access it can create new repositories with the same files and directory structure. */ - template?: InputMaybe; - /** Indicates the repository's visibility level. */ - visibility: RepositoryVisibility; -} - -/** Autogenerated input type of CreateSponsorship */ -export interface CreateSponsorshipInput { - /** The amount to pay to the sponsorable in US dollars. Required if a tierId is not specified. Valid values: 1-12000. */ - amount?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Whether the sponsorship should happen monthly/yearly or just this one time. Required if a tierId is not specified. */ - isRecurring?: InputMaybe; - /** Specify whether others should be able to see that the sponsor is sponsoring the sponsorable. Public visibility still does not reveal which tier is used. */ - privacyLevel?: InputMaybe; - /** Whether the sponsor should receive email updates from the sponsorable. */ - receiveEmails?: InputMaybe; - /** The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given. */ - sponsorId?: InputMaybe; - /** The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given. */ - sponsorLogin?: InputMaybe; - /** The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. */ - sponsorableId?: InputMaybe; - /** The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. */ - sponsorableLogin?: InputMaybe; - /** The ID of one of sponsorable's existing tiers to sponsor at. Required if amount is not specified. */ - tierId?: InputMaybe; -} - -/** Autogenerated input type of CreateTeamDiscussionComment */ -export interface CreateTeamDiscussionCommentInput { - /** The content of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the discussion to which the comment belongs. */ - discussionId: Scalars['ID']; -} - -/** Autogenerated input type of CreateTeamDiscussion */ -export interface CreateTeamDiscussionInput { - /** The content of the discussion. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** If true, restricts the visibility of this discussion to team members and organization admins. If false or not specified, allows any organization member to view this discussion. */ - private?: InputMaybe; - /** The ID of the team to which the discussion belongs. */ - teamId: Scalars['ID']; - /** The title of the discussion. */ - title: Scalars['String']; -} - -/** Autogenerated input type of DeclineTopicSuggestion */ -export interface DeclineTopicSuggestionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the suggested topic. */ - name: Scalars['String']; - /** The reason why the suggested topic is declined. */ - reason: TopicSuggestionDeclineReason; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** The possible base permissions for repositories. */ -export enum DefaultRepositoryPermissionField { - /** Can read, write, and administrate repos by default */ - ADMIN = 'ADMIN', - /** No access */ - NONE = 'NONE', - /** Can read repos by default */ - READ = 'READ', - /** Can read and write repos by default */ - WRITE = 'WRITE', -} - -/** Autogenerated input type of DeleteBranchProtectionRule */ -export interface DeleteBranchProtectionRuleInput { - /** The global relay id of the branch protection rule to be deleted. */ - branchProtectionRuleId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; -} - -/** Autogenerated input type of DeleteDeployment */ -export interface DeleteDeploymentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the deployment to be deleted. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteDiscussionComment */ -export interface DeleteDiscussionCommentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node id of the discussion comment to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteDiscussion */ -export interface DeleteDiscussionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the discussion to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteEnvironment */ -export interface DeleteEnvironmentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the environment to be deleted. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteIpAllowListEntry */ -export interface DeleteIpAllowListEntryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the IP allow list entry to delete. */ - ipAllowListEntryId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteIssueComment */ -export interface DeleteIssueCommentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the comment to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteIssue */ -export interface DeleteIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the issue to delete. */ - issueId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteProjectCard */ -export interface DeleteProjectCardInput { - /** The id of the card to delete. */ - cardId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; -} - -/** Autogenerated input type of DeleteProjectColumn */ -export interface DeleteProjectColumnInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the column to delete. */ - columnId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteProject */ -export interface DeleteProjectInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Project ID to update. */ - projectId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteProjectNextItem */ -export interface DeleteProjectNextItemInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the item to be removed. */ - itemId: Scalars['ID']; - /** The ID of the Project from which the item should be removed. */ - projectId: Scalars['ID']; -} - -/** Autogenerated input type of DeletePullRequestReviewComment */ -export interface DeletePullRequestReviewCommentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the comment to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeletePullRequestReview */ -export interface DeletePullRequestReviewInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the pull request review to delete. */ - pullRequestReviewId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteRef */ -export interface DeleteRefInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the Ref to be deleted. */ - refId: Scalars['ID']; -} - -/** Autogenerated input type of DeleteTeamDiscussionComment */ -export interface DeleteTeamDiscussionCommentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the comment to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteTeamDiscussion */ -export interface DeleteTeamDiscussionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The discussion ID to delete. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of DeleteVerifiableDomain */ -export interface DeleteVerifiableDomainInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the verifiable domain to delete. */ - id: Scalars['ID']; -} - -/** Ordering options for deployment connections */ -export interface DeploymentOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order deployments by. */ - field: DeploymentOrderField; -} - -/** Properties by which deployment connections can be ordered. */ -export enum DeploymentOrderField { - /** Order collection by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** The possible protection rule types. */ -export enum DeploymentProtectionRuleType { - /** Required reviewers */ - REQUIRED_REVIEWERS = 'REQUIRED_REVIEWERS', - /** Wait timer */ - WAIT_TIMER = 'WAIT_TIMER', -} - -/** The possible states for a deployment review. */ -export enum DeploymentReviewState { - /** The deployment was approved. */ - APPROVED = 'APPROVED', - /** The deployment was rejected. */ - REJECTED = 'REJECTED', -} - -/** The possible states in which a deployment can be. */ -export enum DeploymentState { - /** The pending deployment was not updated after 30 minutes. */ - ABANDONED = 'ABANDONED', - /** The deployment is currently active. */ - ACTIVE = 'ACTIVE', - /** An inactive transient deployment. */ - DESTROYED = 'DESTROYED', - /** The deployment experienced an error. */ - ERROR = 'ERROR', - /** The deployment has failed. */ - FAILURE = 'FAILURE', - /** The deployment is inactive. */ - INACTIVE = 'INACTIVE', - /** The deployment is in progress. */ - IN_PROGRESS = 'IN_PROGRESS', - /** The deployment is pending. */ - PENDING = 'PENDING', - /** The deployment has queued */ - QUEUED = 'QUEUED', - /** The deployment is waiting. */ - WAITING = 'WAITING', -} - -/** The possible states for a deployment status. */ -export enum DeploymentStatusState { - /** The deployment experienced an error. */ - ERROR = 'ERROR', - /** The deployment has failed. */ - FAILURE = 'FAILURE', - /** The deployment is inactive. */ - INACTIVE = 'INACTIVE', - /** The deployment is in progress. */ - IN_PROGRESS = 'IN_PROGRESS', - /** The deployment is pending. */ - PENDING = 'PENDING', - /** The deployment is queued */ - QUEUED = 'QUEUED', - /** The deployment was successful. */ - SUCCESS = 'SUCCESS', - /** The deployment is waiting. */ - WAITING = 'WAITING', -} - -/** The possible sides of a diff. */ -export enum DiffSide { - /** The left side of the diff. */ - LEFT = 'LEFT', - /** The right side of the diff. */ - RIGHT = 'RIGHT', -} - -/** Autogenerated input type of DisablePullRequestAutoMerge */ -export interface DisablePullRequestAutoMergeInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the pull request to disable auto merge on. */ - pullRequestId: Scalars['ID']; -} - -/** Ways in which lists of discussions can be ordered upon return. */ -export interface DiscussionOrder { - /** The direction in which to order discussions by the specified field. */ - direction: OrderDirection; - /** The field by which to order discussions. */ - field: DiscussionOrderField; -} - -/** Properties by which discussion connections can be ordered. */ -export enum DiscussionOrderField { - /** Order discussions by creation time. */ - CREATED_AT = 'CREATED_AT', - /** Order discussions by most recent modification time. */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Autogenerated input type of DismissPullRequestReview */ -export interface DismissPullRequestReviewInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The contents of the pull request review dismissal message. */ - message: Scalars['String']; - /** The Node ID of the pull request review to modify. */ - pullRequestReviewId: Scalars['ID']; -} - -/** The possible reasons that a Dependabot alert was dismissed. */ -export enum DismissReason { - /** A fix has already been started */ - FIX_STARTED = 'FIX_STARTED', - /** This alert is inaccurate or incorrect */ - INACCURATE = 'INACCURATE', - /** Vulnerable code is not actually used */ - NOT_USED = 'NOT_USED', - /** No bandwidth to fix this */ - NO_BANDWIDTH = 'NO_BANDWIDTH', - /** Risk is tolerable to this project */ - TOLERABLE_RISK = 'TOLERABLE_RISK', -} - -/** Autogenerated input type of DismissRepositoryVulnerabilityAlert */ -export interface DismissRepositoryVulnerabilityAlertInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The reason the Dependabot alert is being dismissed. */ - dismissReason: DismissReason; - /** The Dependabot alert ID to dismiss. */ - repositoryVulnerabilityAlertId: Scalars['ID']; -} - -/** Specifies a review comment to be left with a Pull Request Review. */ -export interface DraftPullRequestReviewComment { - /** Body of the comment to leave. */ - body: Scalars['String']; - /** Path to the file being commented on. */ - path: Scalars['String']; - /** Position in the file to leave a comment on. */ - position: Scalars['Int']; -} - -/** Specifies a review comment thread to be left with a Pull Request Review. */ -export interface DraftPullRequestReviewThread { - /** Body of the comment to leave. */ - body: Scalars['String']; - /** The line of the blob to which the thread refers. The end of the line range for multi-line comments. */ - line: Scalars['Int']; - /** Path to the file being commented on. */ - path: Scalars['String']; - /** The side of the diff on which the line resides. For multi-line comments, this is the side for the end of the line range. */ - side?: InputMaybe; - /** The first line of the range to which the comment refers. */ - startLine?: InputMaybe; - /** The side of the diff on which the start line resides. */ - startSide?: InputMaybe; -} - -/** Autogenerated input type of EnablePullRequestAutoMerge */ -export interface EnablePullRequestAutoMergeInput { - /** The email address to associate with this merge. */ - authorEmail?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Commit body to use for the commit when the PR is mergable; if omitted, a default message will be used. */ - commitBody?: InputMaybe; - /** Commit headline to use for the commit when the PR is mergable; if omitted, a default message will be used. */ - commitHeadline?: InputMaybe; - /** The merge method to use. If omitted, defaults to 'MERGE' */ - mergeMethod?: InputMaybe; - /** ID of the pull request to enable auto-merge on. */ - pullRequestId: Scalars['ID']; -} - -/** Ordering options for enterprise administrator invitation connections */ -export interface EnterpriseAdministratorInvitationOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order enterprise administrator invitations by. */ - field: EnterpriseAdministratorInvitationOrderField; -} - -/** Properties by which enterprise administrator invitation connections can be ordered. */ -export enum EnterpriseAdministratorInvitationOrderField { - /** Order enterprise administrator member invitations by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** The possible administrator roles in an enterprise account. */ -export enum EnterpriseAdministratorRole { - /** Represents a billing manager of the enterprise account. */ - BILLING_MANAGER = 'BILLING_MANAGER', - /** Represents an owner of the enterprise account. */ - OWNER = 'OWNER', -} - -/** The possible values for the enterprise base repository permission setting. */ -export enum EnterpriseDefaultRepositoryPermissionSettingValue { - /** Organization members will be able to clone, pull, push, and add new collaborators to all organization repositories. */ - ADMIN = 'ADMIN', - /** Organization members will only be able to clone and pull public repositories. */ - NONE = 'NONE', - /** Organizations in the enterprise choose base repository permissions for their members. */ - NO_POLICY = 'NO_POLICY', - /** Organization members will be able to clone and pull all organization repositories. */ - READ = 'READ', - /** Organization members will be able to clone, pull, and push all organization repositories. */ - WRITE = 'WRITE', -} - -/** The possible values for an enabled/disabled enterprise setting. */ -export enum EnterpriseEnabledDisabledSettingValue { - /** The setting is disabled for organizations in the enterprise. */ - DISABLED = 'DISABLED', - /** The setting is enabled for organizations in the enterprise. */ - ENABLED = 'ENABLED', - /** There is no policy set for organizations in the enterprise. */ - NO_POLICY = 'NO_POLICY', -} - -/** The possible values for an enabled/no policy enterprise setting. */ -export enum EnterpriseEnabledSettingValue { - /** The setting is enabled for organizations in the enterprise. */ - ENABLED = 'ENABLED', - /** There is no policy set for organizations in the enterprise. */ - NO_POLICY = 'NO_POLICY', -} - -/** Ordering options for enterprise member connections. */ -export interface EnterpriseMemberOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order enterprise members by. */ - field: EnterpriseMemberOrderField; -} - -/** Properties by which enterprise member connections can be ordered. */ -export enum EnterpriseMemberOrderField { - /** Order enterprise members by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order enterprise members by login */ - LOGIN = 'LOGIN', -} - -/** The possible values for the enterprise members can create repositories setting. */ -export enum EnterpriseMembersCanCreateRepositoriesSettingValue { - /** Members will be able to create public and private repositories. */ - ALL = 'ALL', - /** Members will not be able to create public or private repositories. */ - DISABLED = 'DISABLED', - /** Organization administrators choose whether to allow members to create repositories. */ - NO_POLICY = 'NO_POLICY', - /** Members will be able to create only private repositories. */ - PRIVATE = 'PRIVATE', - /** Members will be able to create only public repositories. */ - PUBLIC = 'PUBLIC', -} - -/** The possible values for the members can make purchases setting. */ -export enum EnterpriseMembersCanMakePurchasesSettingValue { - /** The setting is disabled for organizations in the enterprise. */ - DISABLED = 'DISABLED', - /** The setting is enabled for organizations in the enterprise. */ - ENABLED = 'ENABLED', -} - -/** Ordering options for Enterprise Server installation connections. */ -export interface EnterpriseServerInstallationOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order Enterprise Server installations by. */ - field: EnterpriseServerInstallationOrderField; -} - -/** Properties by which Enterprise Server installation connections can be ordered. */ -export enum EnterpriseServerInstallationOrderField { - /** Order Enterprise Server installations by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order Enterprise Server installations by customer name */ - CUSTOMER_NAME = 'CUSTOMER_NAME', - /** Order Enterprise Server installations by host name */ - HOST_NAME = 'HOST_NAME', -} - -/** Ordering options for Enterprise Server user account email connections. */ -export interface EnterpriseServerUserAccountEmailOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order emails by. */ - field: EnterpriseServerUserAccountEmailOrderField; -} - -/** Properties by which Enterprise Server user account email connections can be ordered. */ -export enum EnterpriseServerUserAccountEmailOrderField { - /** Order emails by email */ - EMAIL = 'EMAIL', -} - -/** Ordering options for Enterprise Server user account connections. */ -export interface EnterpriseServerUserAccountOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order user accounts by. */ - field: EnterpriseServerUserAccountOrderField; -} - -/** Properties by which Enterprise Server user account connections can be ordered. */ -export enum EnterpriseServerUserAccountOrderField { - /** Order user accounts by login */ - LOGIN = 'LOGIN', - /** Order user accounts by creation time on the Enterprise Server installation */ - REMOTE_CREATED_AT = 'REMOTE_CREATED_AT', -} - -/** Ordering options for Enterprise Server user accounts upload connections. */ -export interface EnterpriseServerUserAccountsUploadOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order user accounts uploads by. */ - field: EnterpriseServerUserAccountsUploadOrderField; -} - -/** Properties by which Enterprise Server user accounts upload connections can be ordered. */ -export enum EnterpriseServerUserAccountsUploadOrderField { - /** Order user accounts uploads by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** Synchronization state of the Enterprise Server user accounts upload */ -export enum EnterpriseServerUserAccountsUploadSyncState { - /** The synchronization of the upload failed. */ - FAILURE = 'FAILURE', - /** The synchronization of the upload is pending. */ - PENDING = 'PENDING', - /** The synchronization of the upload succeeded. */ - SUCCESS = 'SUCCESS', -} - -/** The possible roles for enterprise membership. */ -export enum EnterpriseUserAccountMembershipRole { - /** The user is a member of the enterprise membership. */ - MEMBER = 'MEMBER', - /** The user is an owner of the enterprise membership. */ - OWNER = 'OWNER', -} - -/** The possible GitHub Enterprise deployments where this user can exist. */ -export enum EnterpriseUserDeployment { - /** The user is part of a GitHub Enterprise Cloud deployment. */ - CLOUD = 'CLOUD', - /** The user is part of a GitHub Enterprise Server deployment. */ - SERVER = 'SERVER', -} - -/** A command to add a file at the given path with the given contents as part of a commit. Any existing file at that that path will be replaced. */ -export interface FileAddition { - /** The base64 encoded contents of the file */ - contents: Scalars['Base64String']; - /** The path in the repository where the file will be located */ - path: Scalars['String']; -} - -/** - * A description of a set of changes to a file tree to be made as part of - * a git commit, modeled as zero or more file `additions` and zero or more - * file `deletions`. - * - * Both fields are optional; omitting both will produce a commit with no - * file changes. - * - * `deletions` and `additions` describe changes to files identified - * by their path in the git tree using unix-style path separators, i.e. - * `/`. The root of a git tree is an empty string, so paths are not - * slash-prefixed. - * - * `path` values must be unique across all `additions` and `deletions` - * provided. Any duplication will result in a validation error. - * - * ### Encoding - * - * File contents must be provided in full for each `FileAddition`. - * - * The `contents` of a `FileAddition` must be encoded using RFC 4648 - * compliant base64, i.e. correct padding is required and no characters - * outside the standard alphabet may be used. Invalid base64 - * encoding will be rejected with a validation error. - * - * The encoded contents may be binary. - * - * For text files, no assumptions are made about the character encoding of - * the file contents (after base64 decoding). No charset transcoding or - * line-ending normalization will be performed; it is the client's - * responsibility to manage the character encoding of files they provide. - * However, for maximum compatibility we recommend using UTF-8 encoding - * and ensuring that all files in a repository use a consistent - * line-ending convention (`\n` or `\r\n`), and that all files end - * with a newline. - * - * ### Modeling file changes - * - * Each of the the five types of conceptual changes that can be made in a - * git commit can be described using the `FileChanges` type as follows: - * - * 1. New file addition: create file `hello world\n` at path `docs/README.txt`: - * - * { - * "additions" [ - * { - * "path": "docs/README.txt", - * "contents": base64encode("hello world\n") - * } - * ] - * } - * - * 2. Existing file modification: change existing `docs/README.txt` to have new - * content `new content here\n`: - * - * { - * "additions" [ - * { - * "path": "docs/README.txt", - * "contents": base64encode("new content here\n") - * } - * ] - * } - * - * 3. Existing file deletion: remove existing file `docs/README.txt`. - * Note that the path is required to exist -- specifying a - * path that does not exist on the given branch will abort the - * commit and return an error. - * - * { - * "deletions" [ - * { - * "path": "docs/README.txt" - * } - * ] - * } - * - * - * 4. File rename with no changes: rename `docs/README.txt` with - * previous content `hello world\n` to the same content at - * `newdocs/README.txt`: - * - * { - * "deletions" [ - * { - * "path": "docs/README.txt", - * } - * ], - * "additions" [ - * { - * "path": "newdocs/README.txt", - * "contents": base64encode("hello world\n") - * } - * ] - * } - * - * - * 5. File rename with changes: rename `docs/README.txt` with - * previous content `hello world\n` to a file at path - * `newdocs/README.txt` with content `new contents\n`: - * - * { - * "deletions" [ - * { - * "path": "docs/README.txt", - * } - * ], - * "additions" [ - * { - * "path": "newdocs/README.txt", - * "contents": base64encode("new contents\n") - * } - * ] - * } - */ -export interface FileChanges { - /** File to add or change. */ - additions?: InputMaybe>; - /** Files to delete. */ - deletions?: InputMaybe>; -} - -/** A command to delete the file at the given path as part of a commit. */ -export interface FileDeletion { - /** The path to delete */ - path: Scalars['String']; -} - -/** The possible viewed states of a file . */ -export enum FileViewedState { - /** The file has new changes since last viewed. */ - DISMISSED = 'DISMISSED', - /** The file has not been marked as viewed. */ - UNVIEWED = 'UNVIEWED', - /** The file has been marked as viewed. */ - VIEWED = 'VIEWED', -} - -/** Autogenerated input type of FollowUser */ -export interface FollowUserInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the user to follow. */ - userId: Scalars['ID']; -} - -/** The possible funding platforms for repository funding links. */ -export enum FundingPlatform { - /** Community Bridge funding platform. */ - COMMUNITY_BRIDGE = 'COMMUNITY_BRIDGE', - /** Custom funding platform. */ - CUSTOM = 'CUSTOM', - /** GitHub funding platform. */ - GITHUB = 'GITHUB', - /** IssueHunt funding platform. */ - ISSUEHUNT = 'ISSUEHUNT', - /** Ko-fi funding platform. */ - KO_FI = 'KO_FI', - /** Liberapay funding platform. */ - LIBERAPAY = 'LIBERAPAY', - /** Open Collective funding platform. */ - OPEN_COLLECTIVE = 'OPEN_COLLECTIVE', - /** Otechie funding platform. */ - OTECHIE = 'OTECHIE', - /** Patreon funding platform. */ - PATREON = 'PATREON', - /** Tidelift funding platform. */ - TIDELIFT = 'TIDELIFT', -} - -/** Ordering options for gist connections */ -export interface GistOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order repositories by. */ - field: GistOrderField; -} - -/** Properties by which gist connections can be ordered. */ -export enum GistOrderField { - /** Order gists by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order gists by push time */ - PUSHED_AT = 'PUSHED_AT', - /** Order gists by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The privacy of a Gist */ -export enum GistPrivacy { - /** Gists that are public and secret */ - ALL = 'ALL', - /** Public */ - PUBLIC = 'PUBLIC', - /** Secret */ - SECRET = 'SECRET', -} - -/** The state of a Git signature. */ -export enum GitSignatureState { - /** The signing certificate or its chain could not be verified */ - BAD_CERT = 'BAD_CERT', - /** Invalid email used for signing */ - BAD_EMAIL = 'BAD_EMAIL', - /** Signing key expired */ - EXPIRED_KEY = 'EXPIRED_KEY', - /** Internal error - the GPG verification service misbehaved */ - GPGVERIFY_ERROR = 'GPGVERIFY_ERROR', - /** Internal error - the GPG verification service is unavailable at the moment */ - GPGVERIFY_UNAVAILABLE = 'GPGVERIFY_UNAVAILABLE', - /** Invalid signature */ - INVALID = 'INVALID', - /** Malformed signature */ - MALFORMED_SIG = 'MALFORMED_SIG', - /** The usage flags for the key that signed this don't allow signing */ - NOT_SIGNING_KEY = 'NOT_SIGNING_KEY', - /** Email used for signing not known to GitHub */ - NO_USER = 'NO_USER', - /** Valid signature, though certificate revocation check failed */ - OCSP_ERROR = 'OCSP_ERROR', - /** Valid signature, pending certificate revocation checking */ - OCSP_PENDING = 'OCSP_PENDING', - /** One or more certificates in chain has been revoked */ - OCSP_REVOKED = 'OCSP_REVOKED', - /** Key used for signing not known to GitHub */ - UNKNOWN_KEY = 'UNKNOWN_KEY', - /** Unknown signature type */ - UNKNOWN_SIG_TYPE = 'UNKNOWN_SIG_TYPE', - /** Unsigned */ - UNSIGNED = 'UNSIGNED', - /** Email used for signing unverified on GitHub */ - UNVERIFIED_EMAIL = 'UNVERIFIED_EMAIL', - /** Valid signature and verified by GitHub */ - VALID = 'VALID', -} - -/** The possible states in which authentication can be configured with an identity provider. */ -export enum IdentityProviderConfigurationState { - /** Authentication with an identity provider is configured but not enforced. */ - CONFIGURED = 'CONFIGURED', - /** Authentication with an identity provider is configured and enforced. */ - ENFORCED = 'ENFORCED', - /** Authentication with an identity provider is not configured. */ - UNCONFIGURED = 'UNCONFIGURED', -} - -/** Autogenerated input type of InviteEnterpriseAdmin */ -export interface InviteEnterpriseAdminInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The email of the person to invite as an administrator. */ - email?: InputMaybe; - /** The ID of the enterprise to which you want to invite an administrator. */ - enterpriseId: Scalars['ID']; - /** The login of a user to invite as an administrator. */ - invitee?: InputMaybe; - /** The role of the administrator. */ - role?: InputMaybe; -} - -/** The possible values for the IP allow list enabled setting. */ -export enum IpAllowListEnabledSettingValue { - /** The setting is disabled for the owner. */ - DISABLED = 'DISABLED', - /** The setting is enabled for the owner. */ - ENABLED = 'ENABLED', -} - -/** Ordering options for IP allow list entry connections. */ -export interface IpAllowListEntryOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order IP allow list entries by. */ - field: IpAllowListEntryOrderField; -} - -/** Properties by which IP allow list entry connections can be ordered. */ -export enum IpAllowListEntryOrderField { - /** Order IP allow list entries by the allow list value. */ - ALLOW_LIST_VALUE = 'ALLOW_LIST_VALUE', - /** Order IP allow list entries by creation time. */ - CREATED_AT = 'CREATED_AT', -} - -/** The possible values for the IP allow list configuration for installed GitHub Apps setting. */ -export enum IpAllowListForInstalledAppsEnabledSettingValue { - /** The setting is disabled for the owner. */ - DISABLED = 'DISABLED', - /** The setting is enabled for the owner. */ - ENABLED = 'ENABLED', -} - -/** Ways in which lists of issue comments can be ordered upon return. */ -export interface IssueCommentOrder { - /** The direction in which to order issue comments by the specified field. */ - direction: OrderDirection; - /** The field in which to order issue comments by. */ - field: IssueCommentOrderField; -} - -/** Properties by which issue comment connections can be ordered. */ -export enum IssueCommentOrderField { - /** Order issue comments by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Ways in which to filter lists of issues. */ -export interface IssueFilters { - /** List issues assigned to given name. Pass in `null` for issues with no assigned user, and `*` for issues assigned to any user. */ - assignee?: InputMaybe; - /** List issues created by given name. */ - createdBy?: InputMaybe; - /** List issues where the list of label names exist on the issue. */ - labels?: InputMaybe>; - /** List issues where the given name is mentioned in the issue. */ - mentioned?: InputMaybe; - /** List issues by given milestone argument. If an string representation of an integer is passed, it should refer to a milestone by its number field. Pass in `null` for issues with no milestone, and `*` for issues that are assigned to any milestone. */ - milestone?: InputMaybe; - /** List issues that have been updated at or after the given date. */ - since?: InputMaybe; - /** List issues filtered by the list of states given. */ - states?: InputMaybe>; - /** List issues subscribed to by viewer. */ - viewerSubscribed?: InputMaybe; -} - -/** Ways in which lists of issues can be ordered upon return. */ -export interface IssueOrder { - /** The direction in which to order issues by the specified field. */ - direction: OrderDirection; - /** The field in which to order issues by. */ - field: IssueOrderField; -} - -/** Properties by which issue connections can be ordered. */ -export enum IssueOrderField { - /** Order issues by comment count */ - COMMENTS = 'COMMENTS', - /** Order issues by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order issues by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The possible states of an issue. */ -export enum IssueState { - /** An issue that has been closed */ - CLOSED = 'CLOSED', - /** An issue that is still open */ - OPEN = 'OPEN', -} - -/** The possible item types found in a timeline. */ -export enum IssueTimelineItemsItemType { - /** Represents a 'added_to_project' event on a given issue or pull request. */ - ADDED_TO_PROJECT_EVENT = 'ADDED_TO_PROJECT_EVENT', - /** Represents an 'assigned' event on any assignable object. */ - ASSIGNED_EVENT = 'ASSIGNED_EVENT', - /** Represents a 'closed' event on any `Closable`. */ - CLOSED_EVENT = 'CLOSED_EVENT', - /** Represents a 'comment_deleted' event on a given issue or pull request. */ - COMMENT_DELETED_EVENT = 'COMMENT_DELETED_EVENT', - /** Represents a 'connected' event on a given issue or pull request. */ - CONNECTED_EVENT = 'CONNECTED_EVENT', - /** Represents a 'converted_note_to_issue' event on a given issue or pull request. */ - CONVERTED_NOTE_TO_ISSUE_EVENT = 'CONVERTED_NOTE_TO_ISSUE_EVENT', - /** Represents a 'converted_to_discussion' event on a given issue. */ - CONVERTED_TO_DISCUSSION_EVENT = 'CONVERTED_TO_DISCUSSION_EVENT', - /** Represents a mention made by one issue or pull request to another. */ - CROSS_REFERENCED_EVENT = 'CROSS_REFERENCED_EVENT', - /** Represents a 'demilestoned' event on a given issue or pull request. */ - DEMILESTONED_EVENT = 'DEMILESTONED_EVENT', - /** Represents a 'disconnected' event on a given issue or pull request. */ - DISCONNECTED_EVENT = 'DISCONNECTED_EVENT', - /** Represents a comment on an Issue. */ - ISSUE_COMMENT = 'ISSUE_COMMENT', - /** Represents a 'labeled' event on a given issue or pull request. */ - LABELED_EVENT = 'LABELED_EVENT', - /** Represents a 'locked' event on a given issue or pull request. */ - LOCKED_EVENT = 'LOCKED_EVENT', - /** Represents a 'marked_as_duplicate' event on a given issue or pull request. */ - MARKED_AS_DUPLICATE_EVENT = 'MARKED_AS_DUPLICATE_EVENT', - /** Represents a 'mentioned' event on a given issue or pull request. */ - MENTIONED_EVENT = 'MENTIONED_EVENT', - /** Represents a 'milestoned' event on a given issue or pull request. */ - MILESTONED_EVENT = 'MILESTONED_EVENT', - /** Represents a 'moved_columns_in_project' event on a given issue or pull request. */ - MOVED_COLUMNS_IN_PROJECT_EVENT = 'MOVED_COLUMNS_IN_PROJECT_EVENT', - /** Represents a 'pinned' event on a given issue or pull request. */ - PINNED_EVENT = 'PINNED_EVENT', - /** Represents a 'referenced' event on a given `ReferencedSubject`. */ - REFERENCED_EVENT = 'REFERENCED_EVENT', - /** Represents a 'removed_from_project' event on a given issue or pull request. */ - REMOVED_FROM_PROJECT_EVENT = 'REMOVED_FROM_PROJECT_EVENT', - /** Represents a 'renamed' event on a given issue or pull request */ - RENAMED_TITLE_EVENT = 'RENAMED_TITLE_EVENT', - /** Represents a 'reopened' event on any `Closable`. */ - REOPENED_EVENT = 'REOPENED_EVENT', - /** Represents a 'subscribed' event on a given `Subscribable`. */ - SUBSCRIBED_EVENT = 'SUBSCRIBED_EVENT', - /** Represents a 'transferred' event on a given issue or pull request. */ - TRANSFERRED_EVENT = 'TRANSFERRED_EVENT', - /** Represents an 'unassigned' event on any assignable object. */ - UNASSIGNED_EVENT = 'UNASSIGNED_EVENT', - /** Represents an 'unlabeled' event on a given issue or pull request. */ - UNLABELED_EVENT = 'UNLABELED_EVENT', - /** Represents an 'unlocked' event on a given issue or pull request. */ - UNLOCKED_EVENT = 'UNLOCKED_EVENT', - /** Represents an 'unmarked_as_duplicate' event on a given issue or pull request. */ - UNMARKED_AS_DUPLICATE_EVENT = 'UNMARKED_AS_DUPLICATE_EVENT', - /** Represents an 'unpinned' event on a given issue or pull request. */ - UNPINNED_EVENT = 'UNPINNED_EVENT', - /** Represents an 'unsubscribed' event on a given `Subscribable`. */ - UNSUBSCRIBED_EVENT = 'UNSUBSCRIBED_EVENT', - /** Represents a 'user_blocked' event on a given user. */ - USER_BLOCKED_EVENT = 'USER_BLOCKED_EVENT', -} - -/** Ways in which lists of labels can be ordered upon return. */ -export interface LabelOrder { - /** The direction in which to order labels by the specified field. */ - direction: OrderDirection; - /** The field in which to order labels by. */ - field: LabelOrderField; -} - -/** Properties by which label connections can be ordered. */ -export enum LabelOrderField { - /** Order labels by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order labels by name */ - NAME = 'NAME', -} - -/** Ordering options for language connections. */ -export interface LanguageOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order languages by. */ - field: LanguageOrderField; -} - -/** Properties by which language connections can be ordered. */ -export enum LanguageOrderField { - /** Order languages by the size of all files containing the language */ - SIZE = 'SIZE', -} - -/** Autogenerated input type of LinkRepositoryToProject */ -export interface LinkRepositoryToProjectInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Project to link to a Repository */ - projectId: Scalars['ID']; - /** The ID of the Repository to link to a Project. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of LockLockable */ -export interface LockLockableInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** A reason for why the item will be locked. */ - lockReason?: InputMaybe; - /** ID of the item to be locked. */ - lockableId: Scalars['ID']; -} - -/** The possible reasons that an issue or pull request was locked. */ -export enum LockReason { - /** The issue or pull request was locked because the conversation was off-topic. */ - OFF_TOPIC = 'OFF_TOPIC', - /** The issue or pull request was locked because the conversation was resolved. */ - RESOLVED = 'RESOLVED', - /** The issue or pull request was locked because the conversation was spam. */ - SPAM = 'SPAM', - /** The issue or pull request was locked because the conversation was too heated. */ - TOO_HEATED = 'TOO_HEATED', -} - -/** Autogenerated input type of MarkDiscussionCommentAsAnswer */ -export interface MarkDiscussionCommentAsAnswerInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion comment to mark as an answer. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of MarkFileAsViewed */ -export interface MarkFileAsViewedInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The path of the file to mark as viewed */ - path: Scalars['String']; - /** The Node ID of the pull request. */ - pullRequestId: Scalars['ID']; -} - -/** Autogenerated input type of MarkPullRequestReadyForReview */ -export interface MarkPullRequestReadyForReviewInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the pull request to be marked as ready for review. */ - pullRequestId: Scalars['ID']; -} - -/** Autogenerated input type of MergeBranch */ -export interface MergeBranchInput { - /** The email address to associate with this commit. */ - authorEmail?: InputMaybe; - /** The name of the base branch that the provided head will be merged into. */ - base: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Message to use for the merge commit. If omitted, a default will be used. */ - commitMessage?: InputMaybe; - /** The head to merge into the base branch. This can be a branch name or a commit GitObjectID. */ - head: Scalars['String']; - /** The Node ID of the Repository containing the base branch that will be modified. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of MergePullRequest */ -export interface MergePullRequestInput { - /** The email address to associate with this merge. */ - authorEmail?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Commit body to use for the merge commit; if omitted, a default message will be used */ - commitBody?: InputMaybe; - /** Commit headline to use for the merge commit; if omitted, a default message will be used. */ - commitHeadline?: InputMaybe; - /** OID that the pull request head ref must match to allow merge; if omitted, no check is performed. */ - expectedHeadOid?: InputMaybe; - /** The merge method to use. If omitted, defaults to 'MERGE' */ - mergeMethod?: InputMaybe; - /** ID of the pull request to be merged. */ - pullRequestId: Scalars['ID']; -} - -/** Whether or not a PullRequest can be merged. */ -export enum MergeableState { - /** The pull request cannot be merged due to merge conflicts. */ - CONFLICTING = 'CONFLICTING', - /** The pull request can be merged. */ - MERGEABLE = 'MERGEABLE', - /** The mergeability of the pull request is still being calculated. */ - UNKNOWN = 'UNKNOWN', -} - -/** Ordering options for milestone connections. */ -export interface MilestoneOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order milestones by. */ - field: MilestoneOrderField; -} - -/** Properties by which milestone connections can be ordered. */ -export enum MilestoneOrderField { - /** Order milestones by when they were created. */ - CREATED_AT = 'CREATED_AT', - /** Order milestones by when they are due. */ - DUE_DATE = 'DUE_DATE', - /** Order milestones by their number. */ - NUMBER = 'NUMBER', - /** Order milestones by when they were last updated. */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The possible states of a milestone. */ -export enum MilestoneState { - /** A milestone that has been closed. */ - CLOSED = 'CLOSED', - /** A milestone that is still open. */ - OPEN = 'OPEN', -} - -/** Autogenerated input type of MinimizeComment */ -export interface MinimizeCommentInput { - /** The classification of comment */ - classifier: ReportedContentClassifiers; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the subject to modify. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of MoveProjectCard */ -export interface MoveProjectCardInput { - /** Place the new card after the card with this id. Pass null to place it at the top. */ - afterCardId?: InputMaybe; - /** The id of the card to move. */ - cardId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the column to move it into. */ - columnId: Scalars['ID']; -} - -/** Autogenerated input type of MoveProjectColumn */ -export interface MoveProjectColumnInput { - /** Place the new column after the column with this id. Pass null to place it at the front. */ - afterColumnId?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the column to move. */ - columnId: Scalars['ID']; -} - -/** The possible values for the notification restriction setting. */ -export enum NotificationRestrictionSettingValue { - /** The setting is disabled for the owner. */ - DISABLED = 'DISABLED', - /** The setting is enabled for the owner. */ - ENABLED = 'ENABLED', -} - -/** The OIDC identity provider type */ -export enum OIDCProviderType { - /** Azure Active Directory */ - AAD = 'AAD', -} - -/** The state of an OAuth Application when it was created. */ -export enum OauthApplicationCreateAuditEntryState { - /** The OAuth Application was active and allowed to have OAuth Accesses. */ - ACTIVE = 'ACTIVE', - /** The OAuth Application was in the process of being deleted. */ - PENDING_DELETION = 'PENDING_DELETION', - /** The OAuth Application was suspended from generating OAuth Accesses due to abuse or security concerns. */ - SUSPENDED = 'SUSPENDED', -} - -/** The corresponding operation type for the action */ -export enum OperationType { - /** An existing resource was accessed */ - ACCESS = 'ACCESS', - /** A resource performed an authentication event */ - AUTHENTICATION = 'AUTHENTICATION', - /** A new resource was created */ - CREATE = 'CREATE', - /** An existing resource was modified */ - MODIFY = 'MODIFY', - /** An existing resource was removed */ - REMOVE = 'REMOVE', - /** An existing resource was restored */ - RESTORE = 'RESTORE', - /** An existing resource was transferred between multiple resources */ - TRANSFER = 'TRANSFER', -} - -/** Possible directions in which to order a list of items when provided an `orderBy` argument. */ -export enum OrderDirection { - /** Specifies an ascending order for a given `orderBy` argument. */ - ASC = 'ASC', - /** Specifies a descending order for a given `orderBy` argument. */ - DESC = 'DESC', -} - -/** The permissions available to members on an Organization. */ -export enum OrgAddMemberAuditEntryPermission { - /** Can read, clone, push, and add collaborators to repositories. */ - ADMIN = 'ADMIN', - /** Can read and clone repositories. */ - READ = 'READ', -} - -/** The billing plans available for organizations. */ -export enum OrgCreateAuditEntryBillingPlan { - /** Team Plan */ - BUSINESS = 'BUSINESS', - /** Enterprise Cloud Plan */ - BUSINESS_PLUS = 'BUSINESS_PLUS', - /** Free Plan */ - FREE = 'FREE', - /** Tiered Per Seat Plan */ - TIERED_PER_SEAT = 'TIERED_PER_SEAT', - /** Legacy Unlimited Plan */ - UNLIMITED = 'UNLIMITED', -} - -/** The reason a billing manager was removed from an Organization. */ -export enum OrgRemoveBillingManagerAuditEntryReason { - /** SAML external identity missing */ - SAML_EXTERNAL_IDENTITY_MISSING = 'SAML_EXTERNAL_IDENTITY_MISSING', - /** SAML SSO enforcement requires an external identity */ - SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY = 'SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY', - /** The organization required 2FA of its billing managers and this user did not have 2FA enabled. */ - TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE = 'TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE', -} - -/** The type of membership a user has with an Organization. */ -export enum OrgRemoveMemberAuditEntryMembershipType { - /** Organization administrators have full access and can change several settings, including the names of repositories that belong to the Organization and Owners team membership. In addition, organization admins can delete the organization and all of its repositories. */ - ADMIN = 'ADMIN', - /** A billing manager is a user who manages the billing settings for the Organization, such as updating payment information. */ - BILLING_MANAGER = 'BILLING_MANAGER', - /** A direct member is a user that is a member of the Organization. */ - DIRECT_MEMBER = 'DIRECT_MEMBER', - /** An outside collaborator is a person who isn't explicitly a member of the Organization, but who has Read, Write, or Admin permissions to one or more repositories in the organization. */ - OUTSIDE_COLLABORATOR = 'OUTSIDE_COLLABORATOR', - /** An unaffiliated collaborator is a person who is not a member of the Organization and does not have access to any repositories in the Organization. */ - UNAFFILIATED = 'UNAFFILIATED', -} - -/** The reason a member was removed from an Organization. */ -export enum OrgRemoveMemberAuditEntryReason { - /** SAML external identity missing */ - SAML_EXTERNAL_IDENTITY_MISSING = 'SAML_EXTERNAL_IDENTITY_MISSING', - /** SAML SSO enforcement requires an external identity */ - SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY = 'SAML_SSO_ENFORCEMENT_REQUIRES_EXTERNAL_IDENTITY', - /** User was removed from organization during account recovery */ - TWO_FACTOR_ACCOUNT_RECOVERY = 'TWO_FACTOR_ACCOUNT_RECOVERY', - /** The organization required 2FA of its billing managers and this user did not have 2FA enabled. */ - TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE = 'TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE', - /** User account has been deleted */ - USER_ACCOUNT_DELETED = 'USER_ACCOUNT_DELETED', -} - -/** The type of membership a user has with an Organization. */ -export enum OrgRemoveOutsideCollaboratorAuditEntryMembershipType { - /** A billing manager is a user who manages the billing settings for the Organization, such as updating payment information. */ - BILLING_MANAGER = 'BILLING_MANAGER', - /** An outside collaborator is a person who isn't explicitly a member of the Organization, but who has Read, Write, or Admin permissions to one or more repositories in the organization. */ - OUTSIDE_COLLABORATOR = 'OUTSIDE_COLLABORATOR', - /** An unaffiliated collaborator is a person who is not a member of the Organization and does not have access to any repositories in the organization. */ - UNAFFILIATED = 'UNAFFILIATED', -} - -/** The reason an outside collaborator was removed from an Organization. */ -export enum OrgRemoveOutsideCollaboratorAuditEntryReason { - /** SAML external identity missing */ - SAML_EXTERNAL_IDENTITY_MISSING = 'SAML_EXTERNAL_IDENTITY_MISSING', - /** The organization required 2FA of its billing managers and this user did not have 2FA enabled. */ - TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE = 'TWO_FACTOR_REQUIREMENT_NON_COMPLIANCE', -} - -/** The default permission a repository can have in an Organization. */ -export enum OrgUpdateDefaultRepositoryPermissionAuditEntryPermission { - /** Can read, clone, push, and add collaborators to repositories. */ - ADMIN = 'ADMIN', - /** No default permission value. */ - NONE = 'NONE', - /** Can read and clone repositories. */ - READ = 'READ', - /** Can read, clone and push to repositories. */ - WRITE = 'WRITE', -} - -/** The permissions available to members on an Organization. */ -export enum OrgUpdateMemberAuditEntryPermission { - /** Can read, clone, push, and add collaborators to repositories. */ - ADMIN = 'ADMIN', - /** Can read and clone repositories. */ - READ = 'READ', -} - -/** The permissions available for repository creation on an Organization. */ -export enum OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility { - /** All organization members are restricted from creating any repositories. */ - ALL = 'ALL', - /** All organization members are restricted from creating internal repositories. */ - INTERNAL = 'INTERNAL', - /** All organization members are allowed to create any repositories. */ - NONE = 'NONE', - /** All organization members are restricted from creating private repositories. */ - PRIVATE = 'PRIVATE', - /** All organization members are restricted from creating private or internal repositories. */ - PRIVATE_INTERNAL = 'PRIVATE_INTERNAL', - /** All organization members are restricted from creating public repositories. */ - PUBLIC = 'PUBLIC', - /** All organization members are restricted from creating public or internal repositories. */ - PUBLIC_INTERNAL = 'PUBLIC_INTERNAL', - /** All organization members are restricted from creating public or private repositories. */ - PUBLIC_PRIVATE = 'PUBLIC_PRIVATE', -} - -/** The possible organization invitation roles. */ -export enum OrganizationInvitationRole { - /** The user is invited to be an admin of the organization. */ - ADMIN = 'ADMIN', - /** The user is invited to be a billing manager of the organization. */ - BILLING_MANAGER = 'BILLING_MANAGER', - /** The user is invited to be a direct member of the organization. */ - DIRECT_MEMBER = 'DIRECT_MEMBER', - /** The user's previous role will be reinstated. */ - REINSTATE = 'REINSTATE', -} - -/** The possible organization invitation types. */ -export enum OrganizationInvitationType { - /** The invitation was to an email address. */ - EMAIL = 'EMAIL', - /** The invitation was to an existing user. */ - USER = 'USER', -} - -/** The possible roles within an organization for its members. */ -export enum OrganizationMemberRole { - /** The user is an administrator of the organization. */ - ADMIN = 'ADMIN', - /** The user is a member of the organization. */ - MEMBER = 'MEMBER', -} - -/** The possible values for the members can create repositories setting on an organization. */ -export enum OrganizationMembersCanCreateRepositoriesSettingValue { - /** Members will be able to create public and private repositories. */ - ALL = 'ALL', - /** Members will not be able to create public or private repositories. */ - DISABLED = 'DISABLED', - /** Members will be able to create only internal repositories. */ - INTERNAL = 'INTERNAL', - /** Members will be able to create only private repositories. */ - PRIVATE = 'PRIVATE', -} - -/** Ordering options for organization connections. */ -export interface OrganizationOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order organizations by. */ - field: OrganizationOrderField; -} - -/** Properties by which organization connections can be ordered. */ -export enum OrganizationOrderField { - /** Order organizations by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order organizations by login */ - LOGIN = 'LOGIN', -} - -/** Ways in which lists of package files can be ordered upon return. */ -export interface PackageFileOrder { - /** The direction in which to order package files by the specified field. */ - direction?: InputMaybe; - /** The field in which to order package files by. */ - field?: InputMaybe; -} - -/** Properties by which package file connections can be ordered. */ -export enum PackageFileOrderField { - /** Order package files by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** Ways in which lists of packages can be ordered upon return. */ -export interface PackageOrder { - /** The direction in which to order packages by the specified field. */ - direction?: InputMaybe; - /** The field in which to order packages by. */ - field?: InputMaybe; -} - -/** Properties by which package connections can be ordered. */ -export enum PackageOrderField { - /** Order packages by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** The possible types of a package. */ -export enum PackageType { - /** A debian package. */ - DEBIAN = 'DEBIAN', - /** A docker image. */ - DOCKER = 'DOCKER', - /** A maven package. */ - MAVEN = 'MAVEN', - /** An npm package. */ - NPM = 'NPM', - /** A nuget package. */ - NUGET = 'NUGET', - /** A python package. */ - PYPI = 'PYPI', - /** A rubygems package. */ - RUBYGEMS = 'RUBYGEMS', -} - -/** Ways in which lists of package versions can be ordered upon return. */ -export interface PackageVersionOrder { - /** The direction in which to order package versions by the specified field. */ - direction?: InputMaybe; - /** The field in which to order package versions by. */ - field?: InputMaybe; -} - -/** Properties by which package version connections can be ordered. */ -export enum PackageVersionOrderField { - /** Order package versions by creation time */ - CREATED_AT = 'CREATED_AT', -} - -/** Autogenerated input type of PinIssue */ -export interface PinIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the issue to be pinned */ - issueId: Scalars['ID']; -} - -/** Represents items that can be pinned to a profile page or dashboard. */ -export enum PinnableItemType { - /** A gist. */ - GIST = 'GIST', - /** An issue. */ - ISSUE = 'ISSUE', - /** An organization. */ - ORGANIZATION = 'ORGANIZATION', - /** A project. */ - PROJECT = 'PROJECT', - /** A pull request. */ - PULL_REQUEST = 'PULL_REQUEST', - /** A repository. */ - REPOSITORY = 'REPOSITORY', - /** A team. */ - TEAM = 'TEAM', - /** A user. */ - USER = 'USER', -} - -/** Preconfigured gradients that may be used to style discussions pinned within a repository. */ -export enum PinnedDiscussionGradient { - /** A gradient of blue to mint */ - BLUE_MINT = 'BLUE_MINT', - /** A gradient of blue to purple */ - BLUE_PURPLE = 'BLUE_PURPLE', - /** A gradient of pink to blue */ - PINK_BLUE = 'PINK_BLUE', - /** A gradient of purple to coral */ - PURPLE_CORAL = 'PURPLE_CORAL', - /** A gradient of red to orange */ - RED_ORANGE = 'RED_ORANGE', -} - -/** Preconfigured background patterns that may be used to style discussions pinned within a repository. */ -export enum PinnedDiscussionPattern { - /** An upward-facing chevron pattern */ - CHEVRON_UP = 'CHEVRON_UP', - /** A hollow dot pattern */ - DOT = 'DOT', - /** A solid dot pattern */ - DOT_FILL = 'DOT_FILL', - /** A heart pattern */ - HEART_FILL = 'HEART_FILL', - /** A plus sign pattern */ - PLUS = 'PLUS', - /** A lightning bolt pattern */ - ZAP = 'ZAP', -} - -/** The possible archived states of a project card. */ -export enum ProjectCardArchivedState { - /** A project card that is archived */ - ARCHIVED = 'ARCHIVED', - /** A project card that is not archived */ - NOT_ARCHIVED = 'NOT_ARCHIVED', -} - -/** Various content states of a ProjectCard */ -export enum ProjectCardState { - /** The card has content only. */ - CONTENT_ONLY = 'CONTENT_ONLY', - /** The card has a note only. */ - NOTE_ONLY = 'NOTE_ONLY', - /** The card is redacted. */ - REDACTED = 'REDACTED', -} - -/** The semantic purpose of the column - todo, in progress, or done. */ -export enum ProjectColumnPurpose { - /** The column contains cards which are complete */ - DONE = 'DONE', - /** The column contains cards which are currently being worked on */ - IN_PROGRESS = 'IN_PROGRESS', - /** The column contains cards still to be worked on */ - TODO = 'TODO', -} - -/** Properties by which the return project can be ordered. */ -export enum ProjectNextOrderField { - /** The project's date and time of creation */ - CREATED_AT = 'CREATED_AT', - /** The project's number */ - NUMBER = 'NUMBER', - /** The project's title */ - TITLE = 'TITLE', - /** The project's date and time of update */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Ways in which lists of projects can be ordered upon return. */ -export interface ProjectOrder { - /** The direction in which to order projects by the specified field. */ - direction: OrderDirection; - /** The field in which to order projects by. */ - field: ProjectOrderField; -} - -/** Properties by which project connections can be ordered. */ -export enum ProjectOrderField { - /** Order projects by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order projects by name */ - NAME = 'NAME', - /** Order projects by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** State of the project; either 'open' or 'closed' */ -export enum ProjectState { - /** The project is closed. */ - CLOSED = 'CLOSED', - /** The project is open. */ - OPEN = 'OPEN', -} - -/** GitHub-provided templates for Projects */ -export enum ProjectTemplate { - /** Create a board with v2 triggers to automatically move cards across To do, In progress and Done columns. */ - AUTOMATED_KANBAN_V2 = 'AUTOMATED_KANBAN_V2', - /** Create a board with triggers to automatically move cards across columns with review automation. */ - AUTOMATED_REVIEWS_KANBAN = 'AUTOMATED_REVIEWS_KANBAN', - /** Create a board with columns for To do, In progress and Done. */ - BASIC_KANBAN = 'BASIC_KANBAN', - /** Create a board to triage and prioritize bugs with To do, priority, and Done columns. */ - BUG_TRIAGE = 'BUG_TRIAGE', -} - -/** Represents available types of methods to use when merging a pull request. */ -export enum PullRequestMergeMethod { - /** Add all commits from the head branch to the base branch with a merge commit. */ - MERGE = 'MERGE', - /** Add all commits from the head branch onto the base branch individually. */ - REBASE = 'REBASE', - /** Combine all commits from the head branch into a single commit in the base branch. */ - SQUASH = 'SQUASH', -} - -/** Ways in which lists of issues can be ordered upon return. */ -export interface PullRequestOrder { - /** The direction in which to order pull requests by the specified field. */ - direction: OrderDirection; - /** The field in which to order pull requests by. */ - field: PullRequestOrderField; -} - -/** Properties by which pull_requests connections can be ordered. */ -export enum PullRequestOrderField { - /** Order pull_requests by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order pull_requests by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The possible states of a pull request review comment. */ -export enum PullRequestReviewCommentState { - /** A comment that is part of a pending review */ - PENDING = 'PENDING', - /** A comment that is part of a submitted review */ - SUBMITTED = 'SUBMITTED', -} - -/** The review status of a pull request. */ -export enum PullRequestReviewDecision { - /** The pull request has received an approving review. */ - APPROVED = 'APPROVED', - /** Changes have been requested on the pull request. */ - CHANGES_REQUESTED = 'CHANGES_REQUESTED', - /** A review is required before the pull request can be merged. */ - REVIEW_REQUIRED = 'REVIEW_REQUIRED', -} - -/** The possible events to perform on a pull request review. */ -export enum PullRequestReviewEvent { - /** Submit feedback and approve merging these changes. */ - APPROVE = 'APPROVE', - /** Submit general feedback without explicit approval. */ - COMMENT = 'COMMENT', - /** Dismiss review so it now longer effects merging. */ - DISMISS = 'DISMISS', - /** Submit feedback that must be addressed before merging. */ - REQUEST_CHANGES = 'REQUEST_CHANGES', -} - -/** The possible states of a pull request review. */ -export enum PullRequestReviewState { - /** A review allowing the pull request to merge. */ - APPROVED = 'APPROVED', - /** A review blocking the pull request from merging. */ - CHANGES_REQUESTED = 'CHANGES_REQUESTED', - /** An informational review. */ - COMMENTED = 'COMMENTED', - /** A review that has been dismissed. */ - DISMISSED = 'DISMISSED', - /** A review that has not yet been submitted. */ - PENDING = 'PENDING', -} - -/** The possible states of a pull request. */ -export enum PullRequestState { - /** A pull request that has been closed without being merged. */ - CLOSED = 'CLOSED', - /** A pull request that has been closed by being merged. */ - MERGED = 'MERGED', - /** A pull request that is still open. */ - OPEN = 'OPEN', -} - -/** The possible item types found in a timeline. */ -export enum PullRequestTimelineItemsItemType { - /** Represents a 'added_to_project' event on a given issue or pull request. */ - ADDED_TO_PROJECT_EVENT = 'ADDED_TO_PROJECT_EVENT', - /** Represents an 'assigned' event on any assignable object. */ - ASSIGNED_EVENT = 'ASSIGNED_EVENT', - /** Represents a 'automatic_base_change_failed' event on a given pull request. */ - AUTOMATIC_BASE_CHANGE_FAILED_EVENT = 'AUTOMATIC_BASE_CHANGE_FAILED_EVENT', - /** Represents a 'automatic_base_change_succeeded' event on a given pull request. */ - AUTOMATIC_BASE_CHANGE_SUCCEEDED_EVENT = 'AUTOMATIC_BASE_CHANGE_SUCCEEDED_EVENT', - /** Represents a 'auto_merge_disabled' event on a given pull request. */ - AUTO_MERGE_DISABLED_EVENT = 'AUTO_MERGE_DISABLED_EVENT', - /** Represents a 'auto_merge_enabled' event on a given pull request. */ - AUTO_MERGE_ENABLED_EVENT = 'AUTO_MERGE_ENABLED_EVENT', - /** Represents a 'auto_rebase_enabled' event on a given pull request. */ - AUTO_REBASE_ENABLED_EVENT = 'AUTO_REBASE_ENABLED_EVENT', - /** Represents a 'auto_squash_enabled' event on a given pull request. */ - AUTO_SQUASH_ENABLED_EVENT = 'AUTO_SQUASH_ENABLED_EVENT', - /** Represents a 'base_ref_changed' event on a given issue or pull request. */ - BASE_REF_CHANGED_EVENT = 'BASE_REF_CHANGED_EVENT', - /** Represents a 'base_ref_deleted' event on a given pull request. */ - BASE_REF_DELETED_EVENT = 'BASE_REF_DELETED_EVENT', - /** Represents a 'base_ref_force_pushed' event on a given pull request. */ - BASE_REF_FORCE_PUSHED_EVENT = 'BASE_REF_FORCE_PUSHED_EVENT', - /** Represents a 'closed' event on any `Closable`. */ - CLOSED_EVENT = 'CLOSED_EVENT', - /** Represents a 'comment_deleted' event on a given issue or pull request. */ - COMMENT_DELETED_EVENT = 'COMMENT_DELETED_EVENT', - /** Represents a 'connected' event on a given issue or pull request. */ - CONNECTED_EVENT = 'CONNECTED_EVENT', - /** Represents a 'converted_note_to_issue' event on a given issue or pull request. */ - CONVERTED_NOTE_TO_ISSUE_EVENT = 'CONVERTED_NOTE_TO_ISSUE_EVENT', - /** Represents a 'converted_to_discussion' event on a given issue. */ - CONVERTED_TO_DISCUSSION_EVENT = 'CONVERTED_TO_DISCUSSION_EVENT', - /** Represents a 'convert_to_draft' event on a given pull request. */ - CONVERT_TO_DRAFT_EVENT = 'CONVERT_TO_DRAFT_EVENT', - /** Represents a mention made by one issue or pull request to another. */ - CROSS_REFERENCED_EVENT = 'CROSS_REFERENCED_EVENT', - /** Represents a 'demilestoned' event on a given issue or pull request. */ - DEMILESTONED_EVENT = 'DEMILESTONED_EVENT', - /** Represents a 'deployed' event on a given pull request. */ - DEPLOYED_EVENT = 'DEPLOYED_EVENT', - /** Represents a 'deployment_environment_changed' event on a given pull request. */ - DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT = 'DEPLOYMENT_ENVIRONMENT_CHANGED_EVENT', - /** Represents a 'disconnected' event on a given issue or pull request. */ - DISCONNECTED_EVENT = 'DISCONNECTED_EVENT', - /** Represents a 'head_ref_deleted' event on a given pull request. */ - HEAD_REF_DELETED_EVENT = 'HEAD_REF_DELETED_EVENT', - /** Represents a 'head_ref_force_pushed' event on a given pull request. */ - HEAD_REF_FORCE_PUSHED_EVENT = 'HEAD_REF_FORCE_PUSHED_EVENT', - /** Represents a 'head_ref_restored' event on a given pull request. */ - HEAD_REF_RESTORED_EVENT = 'HEAD_REF_RESTORED_EVENT', - /** Represents a comment on an Issue. */ - ISSUE_COMMENT = 'ISSUE_COMMENT', - /** Represents a 'labeled' event on a given issue or pull request. */ - LABELED_EVENT = 'LABELED_EVENT', - /** Represents a 'locked' event on a given issue or pull request. */ - LOCKED_EVENT = 'LOCKED_EVENT', - /** Represents a 'marked_as_duplicate' event on a given issue or pull request. */ - MARKED_AS_DUPLICATE_EVENT = 'MARKED_AS_DUPLICATE_EVENT', - /** Represents a 'mentioned' event on a given issue or pull request. */ - MENTIONED_EVENT = 'MENTIONED_EVENT', - /** Represents a 'merged' event on a given pull request. */ - MERGED_EVENT = 'MERGED_EVENT', - /** Represents a 'milestoned' event on a given issue or pull request. */ - MILESTONED_EVENT = 'MILESTONED_EVENT', - /** Represents a 'moved_columns_in_project' event on a given issue or pull request. */ - MOVED_COLUMNS_IN_PROJECT_EVENT = 'MOVED_COLUMNS_IN_PROJECT_EVENT', - /** Represents a 'pinned' event on a given issue or pull request. */ - PINNED_EVENT = 'PINNED_EVENT', - /** Represents a Git commit part of a pull request. */ - PULL_REQUEST_COMMIT = 'PULL_REQUEST_COMMIT', - /** Represents a commit comment thread part of a pull request. */ - PULL_REQUEST_COMMIT_COMMENT_THREAD = 'PULL_REQUEST_COMMIT_COMMENT_THREAD', - /** A review object for a given pull request. */ - PULL_REQUEST_REVIEW = 'PULL_REQUEST_REVIEW', - /** A threaded list of comments for a given pull request. */ - PULL_REQUEST_REVIEW_THREAD = 'PULL_REQUEST_REVIEW_THREAD', - /** Represents the latest point in the pull request timeline for which the viewer has seen the pull request's commits. */ - PULL_REQUEST_REVISION_MARKER = 'PULL_REQUEST_REVISION_MARKER', - /** Represents a 'ready_for_review' event on a given pull request. */ - READY_FOR_REVIEW_EVENT = 'READY_FOR_REVIEW_EVENT', - /** Represents a 'referenced' event on a given `ReferencedSubject`. */ - REFERENCED_EVENT = 'REFERENCED_EVENT', - /** Represents a 'removed_from_project' event on a given issue or pull request. */ - REMOVED_FROM_PROJECT_EVENT = 'REMOVED_FROM_PROJECT_EVENT', - /** Represents a 'renamed' event on a given issue or pull request */ - RENAMED_TITLE_EVENT = 'RENAMED_TITLE_EVENT', - /** Represents a 'reopened' event on any `Closable`. */ - REOPENED_EVENT = 'REOPENED_EVENT', - /** Represents a 'review_dismissed' event on a given issue or pull request. */ - REVIEW_DISMISSED_EVENT = 'REVIEW_DISMISSED_EVENT', - /** Represents an 'review_requested' event on a given pull request. */ - REVIEW_REQUESTED_EVENT = 'REVIEW_REQUESTED_EVENT', - /** Represents an 'review_request_removed' event on a given pull request. */ - REVIEW_REQUEST_REMOVED_EVENT = 'REVIEW_REQUEST_REMOVED_EVENT', - /** Represents a 'subscribed' event on a given `Subscribable`. */ - SUBSCRIBED_EVENT = 'SUBSCRIBED_EVENT', - /** Represents a 'transferred' event on a given issue or pull request. */ - TRANSFERRED_EVENT = 'TRANSFERRED_EVENT', - /** Represents an 'unassigned' event on any assignable object. */ - UNASSIGNED_EVENT = 'UNASSIGNED_EVENT', - /** Represents an 'unlabeled' event on a given issue or pull request. */ - UNLABELED_EVENT = 'UNLABELED_EVENT', - /** Represents an 'unlocked' event on a given issue or pull request. */ - UNLOCKED_EVENT = 'UNLOCKED_EVENT', - /** Represents an 'unmarked_as_duplicate' event on a given issue or pull request. */ - UNMARKED_AS_DUPLICATE_EVENT = 'UNMARKED_AS_DUPLICATE_EVENT', - /** Represents an 'unpinned' event on a given issue or pull request. */ - UNPINNED_EVENT = 'UNPINNED_EVENT', - /** Represents an 'unsubscribed' event on a given `Subscribable`. */ - UNSUBSCRIBED_EVENT = 'UNSUBSCRIBED_EVENT', - /** Represents a 'user_blocked' event on a given user. */ - USER_BLOCKED_EVENT = 'USER_BLOCKED_EVENT', -} - -/** The possible target states when updating a pull request. */ -export enum PullRequestUpdateState { - /** A pull request that has been closed without being merged. */ - CLOSED = 'CLOSED', - /** A pull request that is still open. */ - OPEN = 'OPEN', -} - -/** Emojis that can be attached to Issues, Pull Requests and Comments. */ -export enum ReactionContent { - /** Represents the `:confused:` emoji. */ - CONFUSED = 'CONFUSED', - /** Represents the `:eyes:` emoji. */ - EYES = 'EYES', - /** Represents the `:heart:` emoji. */ - HEART = 'HEART', - /** Represents the `:hooray:` emoji. */ - HOORAY = 'HOORAY', - /** Represents the `:laugh:` emoji. */ - LAUGH = 'LAUGH', - /** Represents the `:rocket:` emoji. */ - ROCKET = 'ROCKET', - /** Represents the `:-1:` emoji. */ - THUMBS_DOWN = 'THUMBS_DOWN', - /** Represents the `:+1:` emoji. */ - THUMBS_UP = 'THUMBS_UP', -} - -/** Ways in which lists of reactions can be ordered upon return. */ -export interface ReactionOrder { - /** The direction in which to order reactions by the specified field. */ - direction: OrderDirection; - /** The field in which to order reactions by. */ - field: ReactionOrderField; -} - -/** A list of fields that reactions can be ordered by. */ -export enum ReactionOrderField { - /** Allows ordering a list of reactions by when they were created. */ - CREATED_AT = 'CREATED_AT', -} - -/** Ways in which lists of git refs can be ordered upon return. */ -export interface RefOrder { - /** The direction in which to order refs by the specified field. */ - direction: OrderDirection; - /** The field in which to order refs by. */ - field: RefOrderField; -} - -/** Properties by which ref connections can be ordered. */ -export enum RefOrderField { - /** Order refs by their alphanumeric name */ - ALPHABETICAL = 'ALPHABETICAL', - /** Order refs by underlying commit date if the ref prefix is refs/tags/ */ - TAG_COMMIT_DATE = 'TAG_COMMIT_DATE', -} - -/** Autogenerated input type of RegenerateEnterpriseIdentityProviderRecoveryCodes */ -export interface RegenerateEnterpriseIdentityProviderRecoveryCodesInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set an identity provider. */ - enterpriseId: Scalars['ID']; -} - -/** Autogenerated input type of RegenerateVerifiableDomainToken */ -export interface RegenerateVerifiableDomainTokenInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the verifiable domain to regenerate the verification token of. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of RejectDeployments */ -export interface RejectDeploymentsInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Optional comment for rejecting deployments */ - comment?: InputMaybe; - /** The ids of environments to reject deployments */ - environmentIds: Array; - /** The node ID of the workflow run containing the pending deployments. */ - workflowRunId: Scalars['ID']; -} - -/** Ways in which lists of releases can be ordered upon return. */ -export interface ReleaseOrder { - /** The direction in which to order releases by the specified field. */ - direction: OrderDirection; - /** The field in which to order releases by. */ - field: ReleaseOrderField; -} - -/** Properties by which release connections can be ordered. */ -export enum ReleaseOrderField { - /** Order releases by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order releases alphabetically by name */ - NAME = 'NAME', -} - -/** Autogenerated input type of RemoveAssigneesFromAssignable */ -export interface RemoveAssigneesFromAssignableInput { - /** The id of the assignable object to remove assignees from. */ - assignableId: Scalars['ID']; - /** The id of users to remove as assignees. */ - assigneeIds: Array; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; -} - -/** Autogenerated input type of RemoveEnterpriseAdmin */ -export interface RemoveEnterpriseAdminInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Enterprise ID from which to remove the administrator. */ - enterpriseId: Scalars['ID']; - /** The login of the user to remove as an administrator. */ - login: Scalars['String']; -} - -/** Autogenerated input type of RemoveEnterpriseIdentityProvider */ -export interface RemoveEnterpriseIdentityProviderInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise from which to remove the identity provider. */ - enterpriseId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveEnterpriseOrganization */ -export interface RemoveEnterpriseOrganizationInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise from which the organization should be removed. */ - enterpriseId: Scalars['ID']; - /** The ID of the organization to remove from the enterprise. */ - organizationId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveEnterpriseSupportEntitlement */ -export interface RemoveEnterpriseSupportEntitlementInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Enterprise which the admin belongs to. */ - enterpriseId: Scalars['ID']; - /** The login of a member who will lose the support entitlement. */ - login: Scalars['String']; -} - -/** Autogenerated input type of RemoveLabelsFromLabelable */ -export interface RemoveLabelsFromLabelableInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ids of labels to remove. */ - labelIds: Array; - /** The id of the Labelable to remove labels from. */ - labelableId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveOutsideCollaborator */ -export interface RemoveOutsideCollaboratorInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the organization to remove the outside collaborator from. */ - organizationId: Scalars['ID']; - /** The ID of the outside collaborator to remove. */ - userId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveReaction */ -export interface RemoveReactionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of the emoji reaction to remove. */ - content: ReactionContent; - /** The Node ID of the subject to modify. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveStar */ -export interface RemoveStarInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Starrable ID to unstar. */ - starrableId: Scalars['ID']; -} - -/** Autogenerated input type of RemoveUpvote */ -export interface RemoveUpvoteInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion or comment to remove upvote. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of ReopenIssue */ -export interface ReopenIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the issue to be opened. */ - issueId: Scalars['ID']; -} - -/** Autogenerated input type of ReopenPullRequest */ -export interface ReopenPullRequestInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the pull request to be reopened. */ - pullRequestId: Scalars['ID']; -} - -/** The privacy of a repository */ -export enum RepoAccessAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The privacy of a repository */ -export enum RepoAddMemberAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The privacy of a repository */ -export enum RepoArchivedAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The merge options available for pull requests to this repository. */ -export enum RepoChangeMergeSettingAuditEntryMergeType { - /** The pull request is added to the base branch in a merge commit. */ - MERGE = 'MERGE', - /** Commits from the pull request are added onto the base branch individually without a merge commit. */ - REBASE = 'REBASE', - /** The pull request's commits are squashed into a single commit before they are merged to the base branch. */ - SQUASH = 'SQUASH', -} - -/** The privacy of a repository */ -export enum RepoCreateAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The privacy of a repository */ -export enum RepoDestroyAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The privacy of a repository */ -export enum RepoRemoveMemberAuditEntryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** The reasons a piece of content can be reported or minimized. */ -export enum ReportedContentClassifiers { - /** An abusive or harassing piece of content */ - ABUSE = 'ABUSE', - /** A duplicated piece of content */ - DUPLICATE = 'DUPLICATE', - /** An irrelevant piece of content */ - OFF_TOPIC = 'OFF_TOPIC', - /** An outdated piece of content */ - OUTDATED = 'OUTDATED', - /** The content has been resolved */ - RESOLVED = 'RESOLVED', - /** A spammy piece of content */ - SPAM = 'SPAM', -} - -/** The affiliation of a user to a repository */ -export enum RepositoryAffiliation { - /** Repositories that the user has been added to as a collaborator. */ - COLLABORATOR = 'COLLABORATOR', - /** Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on. */ - ORGANIZATION_MEMBER = 'ORGANIZATION_MEMBER', - /** Repositories that are owned by the authenticated user. */ - OWNER = 'OWNER', -} - -/** The reason a repository is listed as 'contributed'. */ -export enum RepositoryContributionType { - /** Created a commit */ - COMMIT = 'COMMIT', - /** Created an issue */ - ISSUE = 'ISSUE', - /** Created a pull request */ - PULL_REQUEST = 'PULL_REQUEST', - /** Reviewed a pull request */ - PULL_REQUEST_REVIEW = 'PULL_REQUEST_REVIEW', - /** Created the repository */ - REPOSITORY = 'REPOSITORY', -} - -/** A repository interaction limit. */ -export enum RepositoryInteractionLimit { - /** Users that are not collaborators will not be able to interact with the repository. */ - COLLABORATORS_ONLY = 'COLLABORATORS_ONLY', - /** Users that have not previously committed to a repository’s default branch will be unable to interact with the repository. */ - CONTRIBUTORS_ONLY = 'CONTRIBUTORS_ONLY', - /** Users that have recently created their account will be unable to interact with the repository. */ - EXISTING_USERS = 'EXISTING_USERS', - /** No interaction limits are enabled. */ - NO_LIMIT = 'NO_LIMIT', -} - -/** The length for a repository interaction limit to be enabled for. */ -export enum RepositoryInteractionLimitExpiry { - /** The interaction limit will expire after 1 day. */ - ONE_DAY = 'ONE_DAY', - /** The interaction limit will expire after 1 month. */ - ONE_MONTH = 'ONE_MONTH', - /** The interaction limit will expire after 1 week. */ - ONE_WEEK = 'ONE_WEEK', - /** The interaction limit will expire after 6 months. */ - SIX_MONTHS = 'SIX_MONTHS', - /** The interaction limit will expire after 3 days. */ - THREE_DAYS = 'THREE_DAYS', -} - -/** Indicates where an interaction limit is configured. */ -export enum RepositoryInteractionLimitOrigin { - /** A limit that is configured at the organization level. */ - ORGANIZATION = 'ORGANIZATION', - /** A limit that is configured at the repository level. */ - REPOSITORY = 'REPOSITORY', - /** A limit that is configured at the user-wide level. */ - USER = 'USER', -} - -/** Ordering options for repository invitation connections. */ -export interface RepositoryInvitationOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order repository invitations by. */ - field: RepositoryInvitationOrderField; -} - -/** Properties by which repository invitation connections can be ordered. */ -export enum RepositoryInvitationOrderField { - /** Order repository invitations by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order repository invitations by invitee login */ - INVITEE_LOGIN = 'INVITEE_LOGIN', -} - -/** The possible reasons a given repository could be in a locked state. */ -export enum RepositoryLockReason { - /** The repository is locked due to a billing related reason. */ - BILLING = 'BILLING', - /** The repository is locked due to a migration. */ - MIGRATING = 'MIGRATING', - /** The repository is locked due to a move. */ - MOVING = 'MOVING', - /** The repository is locked due to a rename. */ - RENAME = 'RENAME', -} - -/** Ordering options for repository connections */ -export interface RepositoryOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order repositories by. */ - field: RepositoryOrderField; -} - -/** Properties by which repository connections can be ordered. */ -export enum RepositoryOrderField { - /** Order repositories by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order repositories by name */ - NAME = 'NAME', - /** Order repositories by push time */ - PUSHED_AT = 'PUSHED_AT', - /** Order repositories by number of stargazers */ - STARGAZERS = 'STARGAZERS', - /** Order repositories by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The access level to a repository */ -export enum RepositoryPermission { - /** Can read, clone, and push to this repository. Can also manage issues, pull requests, and repository settings, including adding collaborators */ - ADMIN = 'ADMIN', - /** Can read, clone, and push to this repository. They can also manage issues, pull requests, and some repository settings */ - MAINTAIN = 'MAINTAIN', - /** Can read and clone this repository. Can also open and comment on issues and pull requests */ - READ = 'READ', - /** Can read and clone this repository. Can also manage issues and pull requests */ - TRIAGE = 'TRIAGE', - /** Can read, clone, and push to this repository. Can also manage issues and pull requests */ - WRITE = 'WRITE', -} - -/** The privacy of a repository */ -export enum RepositoryPrivacy { - /** Private */ - PRIVATE = 'PRIVATE', - /** Public */ - PUBLIC = 'PUBLIC', -} - -/** The repository's visibility level. */ -export enum RepositoryVisibility { - /** The repository is visible only to users in the same business. */ - INTERNAL = 'INTERNAL', - /** The repository is visible only to those with explicit access. */ - PRIVATE = 'PRIVATE', - /** The repository is visible to everyone. */ - PUBLIC = 'PUBLIC', -} - -/** Autogenerated input type of RequestReviews */ -export interface RequestReviewsInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the pull request to modify. */ - pullRequestId: Scalars['ID']; - /** The Node IDs of the team to request. */ - teamIds?: InputMaybe>; - /** Add users to the set rather than replace. */ - union?: InputMaybe; - /** The Node IDs of the user to request. */ - userIds?: InputMaybe>; -} - -/** The possible states that can be requested when creating a check run. */ -export enum RequestableCheckStatusState { - /** The check suite or run has been completed. */ - COMPLETED = 'COMPLETED', - /** The check suite or run is in progress. */ - IN_PROGRESS = 'IN_PROGRESS', - /** The check suite or run is in pending state. */ - PENDING = 'PENDING', - /** The check suite or run has been queued. */ - QUEUED = 'QUEUED', - /** The check suite or run is in waiting state. */ - WAITING = 'WAITING', -} - -/** Specifies the attributes for a new or updated required status check. */ -export interface RequiredStatusCheckInput { - /** The ID of the App that must set the status in order for it to be accepted. Omit this value to use whichever app has recently been setting this status, or use "any" to allow any app to set the status. */ - appId?: InputMaybe; - /** Status check context that must pass for commits to be accepted to the matching branch. */ - context: Scalars['String']; -} - -/** Autogenerated input type of RerequestCheckSuite */ -export interface RerequestCheckSuiteInput { - /** The Node ID of the check suite. */ - checkSuiteId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of ResolveReviewThread */ -export interface ResolveReviewThreadInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the thread to resolve */ - threadId: Scalars['ID']; -} - -/** Possible roles a user may have in relation to an organization. */ -export enum RoleInOrganization { - /** A user who is a direct member of the organization. */ - DIRECT_MEMBER = 'DIRECT_MEMBER', - /** A user with full administrative access to the organization. */ - OWNER = 'OWNER', - /** A user who is unaffiliated with the organization. */ - UNAFFILIATED = 'UNAFFILIATED', -} - -/** The possible digest algorithms used to sign SAML requests for an identity provider. */ -export enum SamlDigestAlgorithm { - /** SHA1 */ - SHA1 = 'SHA1', - /** SHA256 */ - SHA256 = 'SHA256', - /** SHA384 */ - SHA384 = 'SHA384', - /** SHA512 */ - SHA512 = 'SHA512', -} - -/** The possible signature algorithms used to sign SAML requests for a Identity Provider. */ -export enum SamlSignatureAlgorithm { - /** RSA-SHA1 */ - RSA_SHA1 = 'RSA_SHA1', - /** RSA-SHA256 */ - RSA_SHA256 = 'RSA_SHA256', - /** RSA-SHA384 */ - RSA_SHA384 = 'RSA_SHA384', - /** RSA-SHA512 */ - RSA_SHA512 = 'RSA_SHA512', -} - -/** Ordering options for saved reply connections. */ -export interface SavedReplyOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order saved replies by. */ - field: SavedReplyOrderField; -} - -/** Properties by which saved reply connections can be ordered. */ -export enum SavedReplyOrderField { - /** Order saved reply by when they were updated. */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Represents the individual results of a search. */ -export enum SearchType { - /** Returns matching discussions in repositories. */ - DISCUSSION = 'DISCUSSION', - /** Returns results matching issues in repositories. */ - ISSUE = 'ISSUE', - /** Returns results matching repositories. */ - REPOSITORY = 'REPOSITORY', - /** Returns results matching users and organizations on GitHub. */ - USER = 'USER', -} - -/** The possible ecosystems of a security vulnerability's package. */ -export enum SecurityAdvisoryEcosystem { - /** PHP packages hosted at packagist.org */ - COMPOSER = 'COMPOSER', - /** Go modules */ - GO = 'GO', - /** Java artifacts hosted at the Maven central repository */ - MAVEN = 'MAVEN', - /** JavaScript packages hosted at npmjs.com */ - NPM = 'NPM', - /** .NET packages hosted at the NuGet Gallery */ - NUGET = 'NUGET', - /** Python packages hosted at PyPI.org */ - PIP = 'PIP', - /** Ruby gems hosted at RubyGems.org */ - RUBYGEMS = 'RUBYGEMS', - /** Rust crates */ - RUST = 'RUST', -} - -/** An advisory identifier to filter results on. */ -export interface SecurityAdvisoryIdentifierFilter { - /** The identifier type. */ - type: SecurityAdvisoryIdentifierType; - /** The identifier string. Supports exact or partial matching. */ - value: Scalars['String']; -} - -/** Identifier formats available for advisories. */ -export enum SecurityAdvisoryIdentifierType { - /** Common Vulnerabilities and Exposures Identifier. */ - CVE = 'CVE', - /** GitHub Security Advisory ID. */ - GHSA = 'GHSA', -} - -/** Ordering options for security advisory connections */ -export interface SecurityAdvisoryOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order security advisories by. */ - field: SecurityAdvisoryOrderField; -} - -/** Properties by which security advisory connections can be ordered. */ -export enum SecurityAdvisoryOrderField { - /** Order advisories by publication time */ - PUBLISHED_AT = 'PUBLISHED_AT', - /** Order advisories by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Severity of the vulnerability. */ -export enum SecurityAdvisorySeverity { - /** Critical. */ - CRITICAL = 'CRITICAL', - /** High. */ - HIGH = 'HIGH', - /** Low. */ - LOW = 'LOW', - /** Moderate. */ - MODERATE = 'MODERATE', -} - -/** Ordering options for security vulnerability connections */ -export interface SecurityVulnerabilityOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order security vulnerabilities by. */ - field: SecurityVulnerabilityOrderField; -} - -/** Properties by which security vulnerability connections can be ordered. */ -export enum SecurityVulnerabilityOrderField { - /** Order vulnerability by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Autogenerated input type of SetEnterpriseIdentityProvider */ -export interface SetEnterpriseIdentityProviderInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The digest algorithm used to sign SAML requests for the identity provider. */ - digestMethod: SamlDigestAlgorithm; - /** The ID of the enterprise on which to set an identity provider. */ - enterpriseId: Scalars['ID']; - /** The x509 certificate used by the identity provider to sign assertions and responses. */ - idpCertificate: Scalars['String']; - /** The Issuer Entity ID for the SAML identity provider */ - issuer?: InputMaybe; - /** The signature algorithm used to sign SAML requests for the identity provider. */ - signatureMethod: SamlSignatureAlgorithm; - /** The URL endpoint for the identity provider's SAML SSO. */ - ssoUrl: Scalars['URI']; -} - -/** Autogenerated input type of SetOrganizationInteractionLimit */ -export interface SetOrganizationInteractionLimitInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** When this limit should expire. */ - expiry?: InputMaybe; - /** The limit to set. */ - limit: RepositoryInteractionLimit; - /** The ID of the organization to set a limit for. */ - organizationId: Scalars['ID']; -} - -/** Autogenerated input type of SetRepositoryInteractionLimit */ -export interface SetRepositoryInteractionLimitInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** When this limit should expire. */ - expiry?: InputMaybe; - /** The limit to set. */ - limit: RepositoryInteractionLimit; - /** The ID of the repository to set a limit for. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of SetUserInteractionLimit */ -export interface SetUserInteractionLimitInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** When this limit should expire. */ - expiry?: InputMaybe; - /** The limit to set. */ - limit: RepositoryInteractionLimit; - /** The ID of the user to set a limit for. */ - userId: Scalars['ID']; -} - -/** Ordering options for connections to get sponsor entities for GitHub Sponsors. */ -export interface SponsorOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order sponsor entities by. */ - field: SponsorOrderField; -} - -/** Properties by which sponsor connections can be ordered. */ -export enum SponsorOrderField { - /** Order sponsorable entities by login (username). */ - LOGIN = 'LOGIN', - /** Order sponsors by their relevance to the viewer. */ - RELEVANCE = 'RELEVANCE', -} - -/** Ordering options for connections to get sponsorable entities for GitHub Sponsors. */ -export interface SponsorableOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order sponsorable entities by. */ - field: SponsorableOrderField; -} - -/** Properties by which sponsorable connections can be ordered. */ -export enum SponsorableOrderField { - /** Order sponsorable entities by login (username). */ - LOGIN = 'LOGIN', -} - -/** The possible actions that GitHub Sponsors activities can represent. */ -export enum SponsorsActivityAction { - /** The activity was cancelling a sponsorship. */ - CANCELLED_SPONSORSHIP = 'CANCELLED_SPONSORSHIP', - /** The activity was starting a sponsorship. */ - NEW_SPONSORSHIP = 'NEW_SPONSORSHIP', - /** The activity was scheduling a downgrade or cancellation. */ - PENDING_CHANGE = 'PENDING_CHANGE', - /** The activity was funds being refunded to the sponsor or GitHub. */ - REFUND = 'REFUND', - /** The activity was disabling matching for a previously matched sponsorship. */ - SPONSOR_MATCH_DISABLED = 'SPONSOR_MATCH_DISABLED', - /** The activity was changing the sponsorship tier, either directly by the sponsor or by a scheduled/pending change. */ - TIER_CHANGE = 'TIER_CHANGE', -} - -/** Ordering options for GitHub Sponsors activity connections. */ -export interface SponsorsActivityOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order activity by. */ - field: SponsorsActivityOrderField; -} - -/** Properties by which GitHub Sponsors activity connections can be ordered. */ -export enum SponsorsActivityOrderField { - /** Order activities by when they happened. */ - TIMESTAMP = 'TIMESTAMP', -} - -/** The possible time periods for which Sponsors activities can be requested. */ -export enum SponsorsActivityPeriod { - /** Don't restrict the activity to any date range, include all activity. */ - ALL = 'ALL', - /** The previous calendar day. */ - DAY = 'DAY', - /** The previous thirty days. */ - MONTH = 'MONTH', - /** The previous seven days. */ - WEEK = 'WEEK', -} - -/** The different kinds of goals a GitHub Sponsors member can have. */ -export enum SponsorsGoalKind { - /** The goal is about getting a certain amount in USD from sponsorships each month. */ - MONTHLY_SPONSORSHIP_AMOUNT = 'MONTHLY_SPONSORSHIP_AMOUNT', - /** The goal is about reaching a certain number of sponsors. */ - TOTAL_SPONSORS_COUNT = 'TOTAL_SPONSORS_COUNT', -} - -/** Ordering options for Sponsors tiers connections. */ -export interface SponsorsTierOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order tiers by. */ - field: SponsorsTierOrderField; -} - -/** Properties by which Sponsors tiers connections can be ordered. */ -export enum SponsorsTierOrderField { - /** Order tiers by creation time. */ - CREATED_AT = 'CREATED_AT', - /** Order tiers by their monthly price in cents */ - MONTHLY_PRICE_IN_CENTS = 'MONTHLY_PRICE_IN_CENTS', -} - -/** Ordering options for sponsorship newsletter connections. */ -export interface SponsorshipNewsletterOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order sponsorship newsletters by. */ - field: SponsorshipNewsletterOrderField; -} - -/** Properties by which sponsorship update connections can be ordered. */ -export enum SponsorshipNewsletterOrderField { - /** Order sponsorship newsletters by when they were created. */ - CREATED_AT = 'CREATED_AT', -} - -/** Ordering options for sponsorship connections. */ -export interface SponsorshipOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order sponsorship by. */ - field: SponsorshipOrderField; -} - -/** Properties by which sponsorship connections can be ordered. */ -export enum SponsorshipOrderField { - /** Order sponsorship by creation time. */ - CREATED_AT = 'CREATED_AT', -} - -/** The privacy of a sponsorship */ -export enum SponsorshipPrivacy { - /** Private */ - PRIVATE = 'PRIVATE', - /** Public */ - PUBLIC = 'PUBLIC', -} - -/** Ways in which star connections can be ordered. */ -export interface StarOrder { - /** The direction in which to order nodes. */ - direction: OrderDirection; - /** The field in which to order nodes by. */ - field: StarOrderField; -} - -/** Properties by which star connections can be ordered. */ -export enum StarOrderField { - /** Allows ordering a list of stars by when they were created. */ - STARRED_AT = 'STARRED_AT', -} - -/** The possible commit status states. */ -export enum StatusState { - /** Status is errored. */ - ERROR = 'ERROR', - /** Status is expected. */ - EXPECTED = 'EXPECTED', - /** Status is failing. */ - FAILURE = 'FAILURE', - /** Status is pending. */ - PENDING = 'PENDING', - /** Status is successful. */ - SUCCESS = 'SUCCESS', -} - -/** Autogenerated input type of SubmitPullRequestReview */ -export interface SubmitPullRequestReviewInput { - /** The text field to set on the Pull Request Review. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The event to send to the Pull Request Review. */ - event: PullRequestReviewEvent; - /** The Pull Request ID to submit any pending reviews. */ - pullRequestId?: InputMaybe; - /** The Pull Request Review ID to submit. */ - pullRequestReviewId?: InputMaybe; -} - -/** The possible states of a subscription. */ -export enum SubscriptionState { - /** The User is never notified. */ - IGNORED = 'IGNORED', - /** The User is notified of all conversations. */ - SUBSCRIBED = 'SUBSCRIBED', - /** The User is only notified when participating or @mentioned. */ - UNSUBSCRIBED = 'UNSUBSCRIBED', -} - -/** Ways in which team discussion comment connections can be ordered. */ -export interface TeamDiscussionCommentOrder { - /** The direction in which to order nodes. */ - direction: OrderDirection; - /** The field by which to order nodes. */ - field: TeamDiscussionCommentOrderField; -} - -/** Properties by which team discussion comment connections can be ordered. */ -export enum TeamDiscussionCommentOrderField { - /** Allows sequential ordering of team discussion comments (which is equivalent to chronological ordering). */ - NUMBER = 'NUMBER', -} - -/** Ways in which team discussion connections can be ordered. */ -export interface TeamDiscussionOrder { - /** The direction in which to order nodes. */ - direction: OrderDirection; - /** The field by which to order nodes. */ - field: TeamDiscussionOrderField; -} - -/** Properties by which team discussion connections can be ordered. */ -export enum TeamDiscussionOrderField { - /** Allows chronological ordering of team discussions. */ - CREATED_AT = 'CREATED_AT', -} - -/** Ordering options for team member connections */ -export interface TeamMemberOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order team members by. */ - field: TeamMemberOrderField; -} - -/** Properties by which team member connections can be ordered. */ -export enum TeamMemberOrderField { - /** Order team members by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order team members by login */ - LOGIN = 'LOGIN', -} - -/** The possible team member roles; either 'maintainer' or 'member'. */ -export enum TeamMemberRole { - /** A team maintainer has permission to add and remove team members. */ - MAINTAINER = 'MAINTAINER', - /** A team member has no administrative permissions on the team. */ - MEMBER = 'MEMBER', -} - -/** Defines which types of team members are included in the returned list. Can be one of IMMEDIATE, CHILD_TEAM or ALL. */ -export enum TeamMembershipType { - /** Includes immediate and child team members for the team. */ - ALL = 'ALL', - /** Includes only child team members for the team. */ - CHILD_TEAM = 'CHILD_TEAM', - /** Includes only immediate members of the team. */ - IMMEDIATE = 'IMMEDIATE', -} - -/** Ways in which team connections can be ordered. */ -export interface TeamOrder { - /** The direction in which to order nodes. */ - direction: OrderDirection; - /** The field in which to order nodes by. */ - field: TeamOrderField; -} - -/** Properties by which team connections can be ordered. */ -export enum TeamOrderField { - /** Allows ordering a list of teams by name. */ - NAME = 'NAME', -} - -/** The possible team privacy values. */ -export enum TeamPrivacy { - /** A secret team can only be seen by its members. */ - SECRET = 'SECRET', - /** A visible team can be seen and @mentioned by every member of the organization. */ - VISIBLE = 'VISIBLE', -} - -/** Ordering options for team repository connections */ -export interface TeamRepositoryOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order repositories by. */ - field: TeamRepositoryOrderField; -} - -/** Properties by which team repository connections can be ordered. */ -export enum TeamRepositoryOrderField { - /** Order repositories by creation time */ - CREATED_AT = 'CREATED_AT', - /** Order repositories by name */ - NAME = 'NAME', - /** Order repositories by permission */ - PERMISSION = 'PERMISSION', - /** Order repositories by push time */ - PUSHED_AT = 'PUSHED_AT', - /** Order repositories by number of stargazers */ - STARGAZERS = 'STARGAZERS', - /** Order repositories by update time */ - UPDATED_AT = 'UPDATED_AT', -} - -/** The role of a user on a team. */ -export enum TeamRole { - /** User has admin rights on the team. */ - ADMIN = 'ADMIN', - /** User is a member of the team. */ - MEMBER = 'MEMBER', -} - -/** Reason that the suggested topic is declined. */ -export enum TopicSuggestionDeclineReason { - /** The suggested topic is not relevant to the repository. */ - NOT_RELEVANT = 'NOT_RELEVANT', - /** The viewer does not like the suggested topic. */ - PERSONAL_PREFERENCE = 'PERSONAL_PREFERENCE', - /** The suggested topic is too general for the repository. */ - TOO_GENERAL = 'TOO_GENERAL', - /** The suggested topic is too specific for the repository (e.g. #ruby-on-rails-version-4-2-1). */ - TOO_SPECIFIC = 'TOO_SPECIFIC', -} - -/** Autogenerated input type of TransferIssue */ -export interface TransferIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the issue to be transferred */ - issueId: Scalars['ID']; - /** The Node ID of the repository the issue should be transferred to */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of UnarchiveRepository */ -export interface UnarchiveRepositoryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the repository to unarchive. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of UnfollowUser */ -export interface UnfollowUserInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the user to unfollow. */ - userId: Scalars['ID']; -} - -/** Autogenerated input type of UnlinkRepositoryFromProject */ -export interface UnlinkRepositoryFromProjectInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Project linked to the Repository. */ - projectId: Scalars['ID']; - /** The ID of the Repository linked to the Project. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of UnlockLockable */ -export interface UnlockLockableInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the item to be unlocked. */ - lockableId: Scalars['ID']; -} - -/** Autogenerated input type of UnmarkDiscussionCommentAsAnswer */ -export interface UnmarkDiscussionCommentAsAnswerInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion comment to unmark as an answer. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of UnmarkFileAsViewed */ -export interface UnmarkFileAsViewedInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The path of the file to mark as unviewed */ - path: Scalars['String']; - /** The Node ID of the pull request. */ - pullRequestId: Scalars['ID']; -} - -/** Autogenerated input type of UnmarkIssueAsDuplicate */ -export interface UnmarkIssueAsDuplicateInput { - /** ID of the issue or pull request currently considered canonical/authoritative/original. */ - canonicalId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** ID of the issue or pull request currently marked as a duplicate. */ - duplicateId: Scalars['ID']; -} - -/** Autogenerated input type of UnminimizeComment */ -export interface UnminimizeCommentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the subject to modify. */ - subjectId: Scalars['ID']; -} - -/** Autogenerated input type of UnpinIssue */ -export interface UnpinIssueInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the issue to be unpinned */ - issueId: Scalars['ID']; -} - -/** Autogenerated input type of UnresolveReviewThread */ -export interface UnresolveReviewThreadInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the thread to unresolve */ - threadId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateBranchProtectionRule */ -export interface UpdateBranchProtectionRuleInput { - /** Can this branch be deleted. */ - allowsDeletions?: InputMaybe; - /** Are force pushes allowed on this branch. */ - allowsForcePushes?: InputMaybe; - /** The global relay id of the branch protection rule to be updated. */ - branchProtectionRuleId: Scalars['ID']; - /** A list of User or Team IDs allowed to bypass force push targeting matching branches. */ - bypassForcePushActorIds?: InputMaybe>; - /** A list of User or Team IDs allowed to bypass pull requests targeting matching branches. */ - bypassPullRequestActorIds?: InputMaybe>; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Will new commits pushed to matching branches dismiss pull request review approvals. */ - dismissesStaleReviews?: InputMaybe; - /** Can admins overwrite branch protection. */ - isAdminEnforced?: InputMaybe; - /** The glob-like pattern used to determine matching branches. */ - pattern?: InputMaybe; - /** A list of User, Team or App IDs allowed to push to matching branches. */ - pushActorIds?: InputMaybe>; - /** Number of approving reviews required to update matching branches. */ - requiredApprovingReviewCount?: InputMaybe; - /** List of required status check contexts that must pass for commits to be accepted to matching branches. */ - requiredStatusCheckContexts?: InputMaybe>; - /** The list of required status checks */ - requiredStatusChecks?: InputMaybe>; - /** Are approving reviews required to update matching branches. */ - requiresApprovingReviews?: InputMaybe; - /** Are reviews from code owners required to update matching branches. */ - requiresCodeOwnerReviews?: InputMaybe; - /** Are commits required to be signed. */ - requiresCommitSignatures?: InputMaybe; - /** Are conversations required to be resolved before merging. */ - requiresConversationResolution?: InputMaybe; - /** Are merge commits prohibited from being pushed to this branch. */ - requiresLinearHistory?: InputMaybe; - /** Are status checks required to update matching branches. */ - requiresStatusChecks?: InputMaybe; - /** Are branches required to be up to date before merging. */ - requiresStrictStatusChecks?: InputMaybe; - /** Is pushing to matching branches restricted. */ - restrictsPushes?: InputMaybe; - /** Is dismissal of pull request reviews restricted. */ - restrictsReviewDismissals?: InputMaybe; - /** A list of User or Team IDs allowed to dismiss reviews on pull requests targeting matching branches. */ - reviewDismissalActorIds?: InputMaybe>; -} - -/** Autogenerated input type of UpdateCheckRun */ -export interface UpdateCheckRunInput { - /** Possible further actions the integrator can perform, which a user may trigger. */ - actions?: InputMaybe>; - /** The node of the check. */ - checkRunId: Scalars['ID']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The time that the check run finished. */ - completedAt?: InputMaybe; - /** The final conclusion of the check. */ - conclusion?: InputMaybe; - /** The URL of the integrator's site that has the full details of the check. */ - detailsUrl?: InputMaybe; - /** A reference for the run on the integrator's system. */ - externalId?: InputMaybe; - /** The name of the check. */ - name?: InputMaybe; - /** Descriptive details about the run. */ - output?: InputMaybe; - /** The node ID of the repository. */ - repositoryId: Scalars['ID']; - /** The time that the check run began. */ - startedAt?: InputMaybe; - /** The current status. */ - status?: InputMaybe; -} - -/** Autogenerated input type of UpdateCheckSuitePreferences */ -export interface UpdateCheckSuitePreferencesInput { - /** The check suite preferences to modify. */ - autoTriggerPreferences: Array; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateDiscussionComment */ -export interface UpdateDiscussionCommentInput { - /** The new contents of the comment body. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion comment to update. */ - commentId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateDiscussion */ -export interface UpdateDiscussionInput { - /** The new contents of the discussion body. */ - body?: InputMaybe; - /** The Node ID of a discussion category within the same repository to change this discussion to. */ - categoryId?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion to update. */ - discussionId: Scalars['ID']; - /** The new discussion title. */ - title?: InputMaybe; -} - -/** Autogenerated input type of UpdateEnterpriseAdministratorRole */ -export interface UpdateEnterpriseAdministratorRoleInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Enterprise which the admin belongs to. */ - enterpriseId: Scalars['ID']; - /** The login of a administrator whose role is being changed. */ - login: Scalars['String']; - /** The new role for the Enterprise administrator. */ - role: EnterpriseAdministratorRole; -} - -/** Autogenerated input type of UpdateEnterpriseAllowPrivateRepositoryForkingSetting */ -export interface UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the allow private repository forking setting. */ - enterpriseId: Scalars['ID']; - /** The value for the allow private repository forking setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseDefaultRepositoryPermissionSetting */ -export interface UpdateEnterpriseDefaultRepositoryPermissionSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the base repository permission setting. */ - enterpriseId: Scalars['ID']; - /** The value for the base repository permission setting on the enterprise. */ - settingValue: EnterpriseDefaultRepositoryPermissionSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanChangeRepositoryVisibilitySetting */ -export interface UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can change repository visibility setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can change repository visibility setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanCreateRepositoriesSetting */ -export interface UpdateEnterpriseMembersCanCreateRepositoriesSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can create repositories setting. */ - enterpriseId: Scalars['ID']; - /** Allow members to create internal repositories. Defaults to current value. */ - membersCanCreateInternalRepositories?: InputMaybe; - /** Allow members to create private repositories. Defaults to current value. */ - membersCanCreatePrivateRepositories?: InputMaybe; - /** Allow members to create public repositories. Defaults to current value. */ - membersCanCreatePublicRepositories?: InputMaybe; - /** When false, allow member organizations to set their own repository creation member privileges. */ - membersCanCreateRepositoriesPolicyEnabled?: InputMaybe; - /** Value for the members can create repositories setting on the enterprise. This or the granular public/private/internal allowed fields (but not both) must be provided. */ - settingValue?: InputMaybe; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanDeleteIssuesSetting */ -export interface UpdateEnterpriseMembersCanDeleteIssuesSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can delete issues setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can delete issues setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanDeleteRepositoriesSetting */ -export interface UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can delete repositories setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can delete repositories setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanInviteCollaboratorsSetting */ -export interface UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can invite collaborators setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can invite collaborators setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanMakePurchasesSetting */ -export interface UpdateEnterpriseMembersCanMakePurchasesSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can make purchases setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can make purchases setting on the enterprise. */ - settingValue: EnterpriseMembersCanMakePurchasesSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanUpdateProtectedBranchesSetting */ -export interface UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can update protected branches setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can update protected branches setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseMembersCanViewDependencyInsightsSetting */ -export interface UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the members can view dependency insights setting. */ - enterpriseId: Scalars['ID']; - /** The value for the members can view dependency insights setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseOrganizationProjectsSetting */ -export interface UpdateEnterpriseOrganizationProjectsSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the organization projects setting. */ - enterpriseId: Scalars['ID']; - /** The value for the organization projects setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseProfile */ -export interface UpdateEnterpriseProfileInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The description of the enterprise. */ - description?: InputMaybe; - /** The Enterprise ID to update. */ - enterpriseId: Scalars['ID']; - /** The location of the enterprise. */ - location?: InputMaybe; - /** The name of the enterprise. */ - name?: InputMaybe; - /** The URL of the enterprise's website. */ - websiteUrl?: InputMaybe; -} - -/** Autogenerated input type of UpdateEnterpriseRepositoryProjectsSetting */ -export interface UpdateEnterpriseRepositoryProjectsSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the repository projects setting. */ - enterpriseId: Scalars['ID']; - /** The value for the repository projects setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseTeamDiscussionsSetting */ -export interface UpdateEnterpriseTeamDiscussionsSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the team discussions setting. */ - enterpriseId: Scalars['ID']; - /** The value for the team discussions setting on the enterprise. */ - settingValue: EnterpriseEnabledDisabledSettingValue; -} - -/** Autogenerated input type of UpdateEnterpriseTwoFactorAuthenticationRequiredSetting */ -export interface UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the enterprise on which to set the two factor authentication required setting. */ - enterpriseId: Scalars['ID']; - /** The value for the two factor authentication required setting on the enterprise. */ - settingValue: EnterpriseEnabledSettingValue; -} - -/** Autogenerated input type of UpdateEnvironment */ -export interface UpdateEnvironmentInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The node ID of the environment. */ - environmentId: Scalars['ID']; - /** The ids of users or teams that can approve deployments to this environment */ - reviewers?: InputMaybe>; - /** The wait timer in minutes. */ - waitTimer?: InputMaybe; -} - -/** Autogenerated input type of UpdateIpAllowListEnabledSetting */ -export interface UpdateIpAllowListEnabledSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the owner on which to set the IP allow list enabled setting. */ - ownerId: Scalars['ID']; - /** The value for the IP allow list enabled setting. */ - settingValue: IpAllowListEnabledSettingValue; -} - -/** Autogenerated input type of UpdateIpAllowListEntry */ -export interface UpdateIpAllowListEntryInput { - /** An IP address or range of addresses in CIDR notation. */ - allowListValue: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the IP allow list entry to update. */ - ipAllowListEntryId: Scalars['ID']; - /** Whether the IP allow list entry is active when an IP allow list is enabled. */ - isActive: Scalars['Boolean']; - /** An optional name for the IP allow list entry. */ - name?: InputMaybe; -} - -/** Autogenerated input type of UpdateIpAllowListForInstalledAppsEnabledSetting */ -export interface UpdateIpAllowListForInstalledAppsEnabledSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the owner. */ - ownerId: Scalars['ID']; - /** The value for the IP allow list configuration for installed GitHub Apps setting. */ - settingValue: IpAllowListForInstalledAppsEnabledSettingValue; -} - -/** Autogenerated input type of UpdateIssueComment */ -export interface UpdateIssueCommentInput { - /** The updated text of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the IssueComment to modify. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of UpdateIssue */ -export interface UpdateIssueInput { - /** An array of Node IDs of users for this issue. */ - assigneeIds?: InputMaybe>; - /** The body for the issue description. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the Issue to modify. */ - id: Scalars['ID']; - /** An array of Node IDs of labels for this issue. */ - labelIds?: InputMaybe>; - /** The Node ID of the milestone for this issue. */ - milestoneId?: InputMaybe; - /** An array of Node IDs for projects associated with this issue. */ - projectIds?: InputMaybe>; - /** The desired issue state. */ - state?: InputMaybe; - /** The title for the issue. */ - title?: InputMaybe; -} - -/** Autogenerated input type of UpdateNotificationRestrictionSetting */ -export interface UpdateNotificationRestrictionSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the owner on which to set the restrict notifications setting. */ - ownerId: Scalars['ID']; - /** The value for the restrict notifications setting. */ - settingValue: NotificationRestrictionSettingValue; -} - -/** Autogenerated input type of UpdateOrganizationAllowPrivateRepositoryForkingSetting */ -export interface UpdateOrganizationAllowPrivateRepositoryForkingSettingInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Enable forking of private repositories in the organization? */ - forkingEnabled: Scalars['Boolean']; - /** The ID of the organization on which to set the allow private repository forking setting. */ - organizationId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateProjectCard */ -export interface UpdateProjectCardInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Whether or not the ProjectCard should be archived */ - isArchived?: InputMaybe; - /** The note of ProjectCard. */ - note?: InputMaybe; - /** The ProjectCard ID to update. */ - projectCardId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateProjectColumn */ -export interface UpdateProjectColumnInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of project column. */ - name: Scalars['String']; - /** The ProjectColumn ID to update. */ - projectColumnId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateProject */ -export interface UpdateProjectInput { - /** The description of project. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The name of project. */ - name?: InputMaybe; - /** The Project ID to update. */ - projectId: Scalars['ID']; - /** Whether the project is public or not. */ - public?: InputMaybe; - /** Whether the project is open or closed. */ - state?: InputMaybe; -} - -/** Autogenerated input type of UpdateProjectNextItemField */ -export interface UpdateProjectNextItemFieldInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The id of the field to be updated. Only supports custom fields and status for now. */ - fieldId: Scalars['ID']; - /** The id of the item to be updated. */ - itemId: Scalars['ID']; - /** The ID of the Project. */ - projectId: Scalars['ID']; - /** The value which will be set on the field. */ - value: Scalars['String']; -} - -/** Autogenerated input type of UpdatePullRequestBranch */ -export interface UpdatePullRequestBranchInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The head ref oid for the upstream branch. */ - expectedHeadOid?: InputMaybe; - /** The Node ID of the pull request. */ - pullRequestId: Scalars['ID']; -} - -/** Autogenerated input type of UpdatePullRequest */ -export interface UpdatePullRequestInput { - /** An array of Node IDs of users for this pull request. */ - assigneeIds?: InputMaybe>; - /** - * The name of the branch you want your changes pulled into. This should be an existing branch - * on the current repository. - */ - baseRefName?: InputMaybe; - /** The contents of the pull request. */ - body?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** An array of Node IDs of labels for this pull request. */ - labelIds?: InputMaybe>; - /** Indicates whether maintainers can modify the pull request. */ - maintainerCanModify?: InputMaybe; - /** The Node ID of the milestone for this pull request. */ - milestoneId?: InputMaybe; - /** An array of Node IDs for projects associated with this pull request. */ - projectIds?: InputMaybe>; - /** The Node ID of the pull request. */ - pullRequestId: Scalars['ID']; - /** The target state of the pull request. */ - state?: InputMaybe; - /** The title of the pull request. */ - title?: InputMaybe; -} - -/** Autogenerated input type of UpdatePullRequestReviewComment */ -export interface UpdatePullRequestReviewCommentInput { - /** The text of the comment. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the comment to modify. */ - pullRequestReviewCommentId: Scalars['ID']; -} - -/** Autogenerated input type of UpdatePullRequestReview */ -export interface UpdatePullRequestReviewInput { - /** The contents of the pull request review body. */ - body: Scalars['String']; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the pull request review to modify. */ - pullRequestReviewId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateRef */ -export interface UpdateRefInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Permit updates of branch Refs that are not fast-forwards? */ - force?: InputMaybe; - /** The GitObjectID that the Ref shall be updated to target. */ - oid: Scalars['GitObjectID']; - /** The Node ID of the Ref to be updated. */ - refId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateRepository */ -export interface UpdateRepositoryInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** A new description for the repository. Pass an empty string to erase the existing description. */ - description?: InputMaybe; - /** Indicates if the repository should have the issues feature enabled. */ - hasIssuesEnabled?: InputMaybe; - /** Indicates if the repository should have the project boards feature enabled. */ - hasProjectsEnabled?: InputMaybe; - /** Indicates if the repository should have the wiki feature enabled. */ - hasWikiEnabled?: InputMaybe; - /** The URL for a web page about this repository. Pass an empty string to erase the existing URL. */ - homepageUrl?: InputMaybe; - /** The new name of the repository. */ - name?: InputMaybe; - /** The ID of the repository to update. */ - repositoryId: Scalars['ID']; - /** Whether this repository should be marked as a template such that anyone who can access it can create new repositories with the same files and directory structure. */ - template?: InputMaybe; -} - -/** Autogenerated input type of UpdateSponsorshipPreferences */ -export interface UpdateSponsorshipPreferencesInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** Specify whether others should be able to see that the sponsor is sponsoring the sponsorable. Public visibility still does not reveal which tier is used. */ - privacyLevel?: InputMaybe; - /** Whether the sponsor should receive email updates from the sponsorable. */ - receiveEmails?: InputMaybe; - /** The ID of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorLogin is not given. */ - sponsorId?: InputMaybe; - /** The username of the user or organization who is acting as the sponsor, paying for the sponsorship. Required if sponsorId is not given. */ - sponsorLogin?: InputMaybe; - /** The ID of the user or organization who is receiving the sponsorship. Required if sponsorableLogin is not given. */ - sponsorableId?: InputMaybe; - /** The username of the user or organization who is receiving the sponsorship. Required if sponsorableId is not given. */ - sponsorableLogin?: InputMaybe; -} - -/** Autogenerated input type of UpdateSubscription */ -export interface UpdateSubscriptionInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The new state of the subscription. */ - state: SubscriptionState; - /** The Node ID of the subscribable object to modify. */ - subscribableId: Scalars['ID']; -} - -/** Autogenerated input type of UpdateTeamDiscussionComment */ -export interface UpdateTeamDiscussionCommentInput { - /** The updated text of the comment. */ - body: Scalars['String']; - /** The current version of the body content. */ - bodyVersion?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the comment to modify. */ - id: Scalars['ID']; -} - -/** Autogenerated input type of UpdateTeamDiscussion */ -export interface UpdateTeamDiscussionInput { - /** The updated text of the discussion. */ - body?: InputMaybe; - /** The current version of the body content. If provided, this update operation will be rejected if the given version does not match the latest version on the server. */ - bodyVersion?: InputMaybe; - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the discussion to modify. */ - id: Scalars['ID']; - /** If provided, sets the pinned state of the updated discussion. */ - pinned?: InputMaybe; - /** The updated title of the discussion. */ - title?: InputMaybe; -} - -/** Autogenerated input type of UpdateTopics */ -export interface UpdateTopicsInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The Node ID of the repository. */ - repositoryId: Scalars['ID']; - /** An array of topic names. */ - topicNames: Array; -} - -/** The possible durations that a user can be blocked for. */ -export enum UserBlockDuration { - /** The user was blocked for 1 day */ - ONE_DAY = 'ONE_DAY', - /** The user was blocked for 30 days */ - ONE_MONTH = 'ONE_MONTH', - /** The user was blocked for 7 days */ - ONE_WEEK = 'ONE_WEEK', - /** The user was blocked permanently */ - PERMANENT = 'PERMANENT', - /** The user was blocked for 3 days */ - THREE_DAYS = 'THREE_DAYS', -} - -/** Ordering options for user status connections. */ -export interface UserStatusOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order user statuses by. */ - field: UserStatusOrderField; -} - -/** Properties by which user status connections can be ordered. */ -export enum UserStatusOrderField { - /** Order user statuses by when they were updated. */ - UPDATED_AT = 'UPDATED_AT', -} - -/** Ordering options for verifiable domain connections. */ -export interface VerifiableDomainOrder { - /** The ordering direction. */ - direction: OrderDirection; - /** The field to order verifiable domains by. */ - field: VerifiableDomainOrderField; -} - -/** Properties by which verifiable domain connections can be ordered. */ -export enum VerifiableDomainOrderField { - /** Order verifiable domains by their creation date. */ - CREATED_AT = 'CREATED_AT', - /** Order verifiable domains by the domain name. */ - DOMAIN = 'DOMAIN', -} - -/** Autogenerated input type of VerifyVerifiableDomain */ -export interface VerifyVerifiableDomainInput { - /** A unique identifier for the client performing the mutation. */ - clientMutationId?: InputMaybe; - /** The ID of the verifiable domain to verify. */ - id: Scalars['ID']; -} - -export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { - AuditLogOrderField: true, - Base64String: true, - Boolean: true, - CheckAnnotationLevel: true, - CheckConclusionState: true, - CheckRunType: true, - CheckStatusState: true, - CollaboratorAffiliation: true, - CommentAuthorAssociation: true, - CommentCannotUpdateReason: true, - CommitContributionOrderField: true, - ContributionLevel: true, - Date: true, - DateTime: true, - DefaultRepositoryPermissionField: true, - DeploymentOrderField: true, - DeploymentProtectionRuleType: true, - DeploymentReviewState: true, - DeploymentState: true, - DeploymentStatusState: true, - DiffSide: true, - DiscussionOrderField: true, - DismissReason: true, - EnterpriseAdministratorInvitationOrderField: true, - EnterpriseAdministratorRole: true, - EnterpriseDefaultRepositoryPermissionSettingValue: true, - EnterpriseEnabledDisabledSettingValue: true, - EnterpriseEnabledSettingValue: true, - EnterpriseMemberOrderField: true, - EnterpriseMembersCanCreateRepositoriesSettingValue: true, - EnterpriseMembersCanMakePurchasesSettingValue: true, - EnterpriseServerInstallationOrderField: true, - EnterpriseServerUserAccountEmailOrderField: true, - EnterpriseServerUserAccountOrderField: true, - EnterpriseServerUserAccountsUploadOrderField: true, - EnterpriseServerUserAccountsUploadSyncState: true, - EnterpriseUserAccountMembershipRole: true, - EnterpriseUserDeployment: true, - FileViewedState: true, - Float: true, - FundingPlatform: true, - GistOrderField: true, - GistPrivacy: true, - GitObjectID: true, - GitSSHRemote: true, - GitSignatureState: true, - GitTimestamp: true, - HTML: true, - ID: true, - IdentityProviderConfigurationState: true, - Int: true, - IpAllowListEnabledSettingValue: true, - IpAllowListEntryOrderField: true, - IpAllowListForInstalledAppsEnabledSettingValue: true, - IssueCommentOrderField: true, - IssueOrderField: true, - IssueState: true, - IssueTimelineItemsItemType: true, - LabelOrderField: true, - LanguageOrderField: true, - LockReason: true, - MergeableState: true, - MilestoneOrderField: true, - MilestoneState: true, - NotificationRestrictionSettingValue: true, - OIDCProviderType: true, - OauthApplicationCreateAuditEntryState: true, - OperationType: true, - OrderDirection: true, - OrgAddMemberAuditEntryPermission: true, - OrgCreateAuditEntryBillingPlan: true, - OrgRemoveBillingManagerAuditEntryReason: true, - OrgRemoveMemberAuditEntryMembershipType: true, - OrgRemoveMemberAuditEntryReason: true, - OrgRemoveOutsideCollaboratorAuditEntryMembershipType: true, - OrgRemoveOutsideCollaboratorAuditEntryReason: true, - OrgUpdateDefaultRepositoryPermissionAuditEntryPermission: true, - OrgUpdateMemberAuditEntryPermission: true, - OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility: true, - OrganizationInvitationRole: true, - OrganizationInvitationType: true, - OrganizationMemberRole: true, - OrganizationMembersCanCreateRepositoriesSettingValue: true, - OrganizationOrderField: true, - PackageFileOrderField: true, - PackageOrderField: true, - PackageType: true, - PackageVersionOrderField: true, - PinnableItemType: true, - PinnedDiscussionGradient: true, - PinnedDiscussionPattern: true, - PreciseDateTime: true, - ProjectCardArchivedState: true, - ProjectCardState: true, - ProjectColumnPurpose: true, - ProjectNextOrderField: true, - ProjectOrderField: true, - ProjectState: true, - ProjectTemplate: true, - PullRequestMergeMethod: true, - PullRequestOrderField: true, - PullRequestReviewCommentState: true, - PullRequestReviewDecision: true, - PullRequestReviewEvent: true, - PullRequestReviewState: true, - PullRequestState: true, - PullRequestTimelineItemsItemType: true, - PullRequestUpdateState: true, - ReactionContent: true, - ReactionOrderField: true, - RefOrderField: true, - ReleaseOrderField: true, - RepoAccessAuditEntryVisibility: true, - RepoAddMemberAuditEntryVisibility: true, - RepoArchivedAuditEntryVisibility: true, - RepoChangeMergeSettingAuditEntryMergeType: true, - RepoCreateAuditEntryVisibility: true, - RepoDestroyAuditEntryVisibility: true, - RepoRemoveMemberAuditEntryVisibility: true, - ReportedContentClassifiers: true, - RepositoryAffiliation: true, - RepositoryContributionType: true, - RepositoryInteractionLimit: true, - RepositoryInteractionLimitExpiry: true, - RepositoryInteractionLimitOrigin: true, - RepositoryInvitationOrderField: true, - RepositoryLockReason: true, - RepositoryOrderField: true, - RepositoryPermission: true, - RepositoryPrivacy: true, - RepositoryVisibility: true, - RequestableCheckStatusState: true, - RoleInOrganization: true, - SamlDigestAlgorithm: true, - SamlSignatureAlgorithm: true, - SavedReplyOrderField: true, - SearchType: true, - SecurityAdvisoryEcosystem: true, - SecurityAdvisoryIdentifierType: true, - SecurityAdvisoryOrderField: true, - SecurityAdvisorySeverity: true, - SecurityVulnerabilityOrderField: true, - SponsorOrderField: true, - SponsorableOrderField: true, - SponsorsActivityAction: true, - SponsorsActivityOrderField: true, - SponsorsActivityPeriod: true, - SponsorsGoalKind: true, - SponsorsTierOrderField: true, - SponsorshipNewsletterOrderField: true, - SponsorshipOrderField: true, - SponsorshipPrivacy: true, - StarOrderField: true, - StatusState: true, - String: true, - SubscriptionState: true, - TeamDiscussionCommentOrderField: true, - TeamDiscussionOrderField: true, - TeamMemberOrderField: true, - TeamMemberRole: true, - TeamMembershipType: true, - TeamOrderField: true, - TeamPrivacy: true, - TeamRepositoryOrderField: true, - TeamRole: true, - TopicSuggestionDeclineReason: true, - URI: true, - UserBlockDuration: true, - UserStatusOrderField: true, - VerifiableDomainOrderField: true, - X509Certificate: true, -}; -export const generatedSchema = { - AcceptEnterpriseAdministratorInvitationInput: { - clientMutationId: { __type: 'String' }, - invitationId: { __type: 'ID!' }, - }, - AcceptEnterpriseAdministratorInvitationPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - invitation: { __type: 'EnterpriseAdministratorInvitation' }, - message: { __type: 'String' }, - }, - AcceptTopicSuggestionInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - repositoryId: { __type: 'ID!' }, - }, - AcceptTopicSuggestionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - topic: { __type: 'Topic' }, - }, - Actor: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - login: { __type: 'String!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - $on: { __type: '$Actor!' }, - }, - ActorLocation: { - __typename: { __type: 'String!' }, - city: { __type: 'String' }, - country: { __type: 'String' }, - countryCode: { __type: 'String' }, - region: { __type: 'String' }, - regionCode: { __type: 'String' }, - }, - AddAssigneesToAssignableInput: { - assignableId: { __type: 'ID!' }, - assigneeIds: { __type: '[ID!]!' }, - clientMutationId: { __type: 'String' }, - }, - AddAssigneesToAssignablePayload: { - __typename: { __type: 'String!' }, - assignable: { __type: 'Assignable' }, - clientMutationId: { __type: 'String' }, - }, - AddCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - subjectId: { __type: 'ID!' }, - }, - AddCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - commentEdge: { __type: 'IssueCommentEdge' }, - subject: { __type: 'Node' }, - timelineEdge: { __type: 'IssueTimelineItemEdge' }, - }, - AddDiscussionCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussionId: { __type: 'ID!' }, - replyToId: { __type: 'ID' }, - }, - AddDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - comment: { __type: 'DiscussionComment' }, - }, - AddEnterpriseSupportEntitlementInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - login: { __type: 'String!' }, - }, - AddEnterpriseSupportEntitlementPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - message: { __type: 'String' }, - }, - AddLabelsToLabelableInput: { - clientMutationId: { __type: 'String' }, - labelIds: { __type: '[ID!]!' }, - labelableId: { __type: 'ID!' }, - }, - AddLabelsToLabelablePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - labelable: { __type: 'Labelable' }, - }, - AddProjectCardInput: { - clientMutationId: { __type: 'String' }, - contentId: { __type: 'ID' }, - note: { __type: 'String' }, - projectColumnId: { __type: 'ID!' }, - }, - AddProjectCardPayload: { - __typename: { __type: 'String!' }, - cardEdge: { __type: 'ProjectCardEdge' }, - clientMutationId: { __type: 'String' }, - projectColumn: { __type: 'ProjectColumn' }, - }, - AddProjectColumnInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - projectId: { __type: 'ID!' }, - }, - AddProjectColumnPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - columnEdge: { __type: 'ProjectColumnEdge' }, - project: { __type: 'Project' }, - }, - AddProjectNextItemInput: { - clientMutationId: { __type: 'String' }, - contentId: { __type: 'ID!' }, - projectId: { __type: 'ID!' }, - }, - AddProjectNextItemPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - projectNextItem: { __type: 'ProjectNextItem' }, - }, - AddPullRequestReviewCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - commitOID: { __type: 'GitObjectID' }, - inReplyTo: { __type: 'ID' }, - path: { __type: 'String' }, - position: { __type: 'Int' }, - pullRequestId: { __type: 'ID' }, - pullRequestReviewId: { __type: 'ID' }, - }, - AddPullRequestReviewCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - comment: { __type: 'PullRequestReviewComment' }, - commentEdge: { __type: 'PullRequestReviewCommentEdge' }, - }, - AddPullRequestReviewInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - comments: { __type: '[DraftPullRequestReviewComment]' }, - commitOID: { __type: 'GitObjectID' }, - event: { __type: 'PullRequestReviewEvent' }, - pullRequestId: { __type: 'ID!' }, - threads: { __type: '[DraftPullRequestReviewThread]' }, - }, - AddPullRequestReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - reviewEdge: { __type: 'PullRequestReviewEdge' }, - }, - AddPullRequestReviewThreadInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - line: { __type: 'Int!' }, - path: { __type: 'String!' }, - pullRequestId: { __type: 'ID' }, - pullRequestReviewId: { __type: 'ID' }, - side: { __type: 'DiffSide' }, - startLine: { __type: 'Int' }, - startSide: { __type: 'DiffSide' }, - }, - AddPullRequestReviewThreadPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - thread: { __type: 'PullRequestReviewThread' }, - }, - AddReactionInput: { - clientMutationId: { __type: 'String' }, - content: { __type: 'ReactionContent!' }, - subjectId: { __type: 'ID!' }, - }, - AddReactionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - reaction: { __type: 'Reaction' }, - subject: { __type: 'Reactable' }, - }, - AddStarInput: { - clientMutationId: { __type: 'String' }, - starrableId: { __type: 'ID!' }, - }, - AddStarPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - starrable: { __type: 'Starrable' }, - }, - AddUpvoteInput: { - clientMutationId: { __type: 'String' }, - subjectId: { __type: 'ID!' }, - }, - AddUpvotePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - subject: { __type: 'Votable' }, - }, - AddVerifiableDomainInput: { - clientMutationId: { __type: 'String' }, - domain: { __type: 'URI!' }, - ownerId: { __type: 'ID!' }, - }, - AddVerifiableDomainPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - domain: { __type: 'VerifiableDomain' }, - }, - AddedToProjectEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - }, - App: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - id: { __type: 'ID!' }, - ipAllowListEntries: { - __type: 'IpAllowListEntryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IpAllowListEntryOrder', - }, - }, - logoBackgroundColor: { __type: 'String!' }, - logoUrl: { __type: 'URI!', __args: { size: 'Int' } }, - name: { __type: 'String!' }, - slug: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - ApproveDeploymentsInput: { - clientMutationId: { __type: 'String' }, - comment: { __type: 'String' }, - environmentIds: { __type: '[ID!]!' }, - workflowRunId: { __type: 'ID!' }, - }, - ApproveDeploymentsPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - deployments: { __type: '[Deployment!]' }, - }, - ApproveVerifiableDomainInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - ApproveVerifiableDomainPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - domain: { __type: 'VerifiableDomain' }, - }, - ArchiveRepositoryInput: { - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - }, - ArchiveRepositoryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - Assignable: { - __typename: { __type: 'String!' }, - assignees: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - $on: { __type: '$Assignable!' }, - }, - AssignedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - assignable: { __type: 'Assignable!' }, - assignee: { __type: 'Assignee' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - user: { __type: 'User' }, - }, - Assignee: { - __typename: { __type: 'String!' }, - $on: { __type: '$Assignee!' }, - }, - AuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - operationType: { __type: 'OperationType' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - $on: { __type: '$AuditEntry!' }, - }, - AuditEntryActor: { - __typename: { __type: 'String!' }, - $on: { __type: '$AuditEntryActor!' }, - }, - AuditLogOrder: { - direction: { __type: 'OrderDirection' }, - field: { __type: 'AuditLogOrderField' }, - }, - AutoMergeDisabledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - disabler: { __type: 'User' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest' }, - reason: { __type: 'String' }, - reasonCode: { __type: 'String' }, - }, - AutoMergeEnabledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - enabler: { __type: 'User' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest' }, - }, - AutoMergeRequest: { - __typename: { __type: 'String!' }, - authorEmail: { __type: 'String' }, - commitBody: { __type: 'String' }, - commitHeadline: { __type: 'String' }, - enabledAt: { __type: 'DateTime' }, - enabledBy: { __type: 'Actor' }, - mergeMethod: { __type: 'PullRequestMergeMethod!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - AutoRebaseEnabledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - enabler: { __type: 'User' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest' }, - }, - AutoSquashEnabledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - enabler: { __type: 'User' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest' }, - }, - AutomaticBaseChangeFailedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - newBase: { __type: 'String!' }, - oldBase: { __type: 'String!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - AutomaticBaseChangeSucceededEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - newBase: { __type: 'String!' }, - oldBase: { __type: 'String!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - BaseRefChangedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - currentRefName: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - previousRefName: { __type: 'String!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - BaseRefDeletedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - baseRefName: { __type: 'String' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest' }, - }, - BaseRefForcePushedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - afterCommit: { __type: 'Commit' }, - beforeCommit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - ref: { __type: 'Ref' }, - }, - Blame: { - __typename: { __type: 'String!' }, - ranges: { __type: '[BlameRange!]!' }, - }, - BlameRange: { - __typename: { __type: 'String!' }, - age: { __type: 'Int!' }, - commit: { __type: 'Commit!' }, - endingLine: { __type: 'Int!' }, - startingLine: { __type: 'Int!' }, - }, - Blob: { - __typename: { __type: 'String!' }, - abbreviatedOid: { __type: 'String!' }, - byteSize: { __type: 'Int!' }, - commitResourcePath: { __type: 'URI!' }, - commitUrl: { __type: 'URI!' }, - id: { __type: 'ID!' }, - isBinary: { __type: 'Boolean' }, - isTruncated: { __type: 'Boolean!' }, - oid: { __type: 'GitObjectID!' }, - repository: { __type: 'Repository!' }, - text: { __type: 'String' }, - }, - Bot: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - login: { __type: 'String!' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - BranchActorAllowanceActor: { - __typename: { __type: 'String!' }, - $on: { __type: '$BranchActorAllowanceActor!' }, - }, - BranchProtectionRule: { - __typename: { __type: 'String!' }, - allowsDeletions: { __type: 'Boolean!' }, - allowsForcePushes: { __type: 'Boolean!' }, - branchProtectionRuleConflicts: { - __type: 'BranchProtectionRuleConflictConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - bypassForcePushAllowances: { - __type: 'BypassForcePushAllowanceConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - bypassPullRequestAllowances: { - __type: 'BypassPullRequestAllowanceConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - dismissesStaleReviews: { __type: 'Boolean!' }, - id: { __type: 'ID!' }, - isAdminEnforced: { __type: 'Boolean!' }, - matchingRefs: { - __type: 'RefConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - }, - }, - pattern: { __type: 'String!' }, - pushAllowances: { - __type: 'PushAllowanceConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - repository: { __type: 'Repository' }, - requiredApprovingReviewCount: { __type: 'Int' }, - requiredStatusCheckContexts: { __type: '[String]' }, - requiredStatusChecks: { __type: '[RequiredStatusCheckDescription!]' }, - requiresApprovingReviews: { __type: 'Boolean!' }, - requiresCodeOwnerReviews: { __type: 'Boolean!' }, - requiresCommitSignatures: { __type: 'Boolean!' }, - requiresConversationResolution: { __type: 'Boolean!' }, - requiresLinearHistory: { __type: 'Boolean!' }, - requiresStatusChecks: { __type: 'Boolean!' }, - requiresStrictStatusChecks: { __type: 'Boolean!' }, - restrictsPushes: { __type: 'Boolean!' }, - restrictsReviewDismissals: { __type: 'Boolean!' }, - reviewDismissalAllowances: { - __type: 'ReviewDismissalAllowanceConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - }, - BranchProtectionRuleConflict: { - __typename: { __type: 'String!' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - conflictingBranchProtectionRule: { __type: 'BranchProtectionRule' }, - ref: { __type: 'Ref' }, - }, - BranchProtectionRuleConflictConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[BranchProtectionRuleConflictEdge]' }, - nodes: { __type: '[BranchProtectionRuleConflict]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - BranchProtectionRuleConflictEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'BranchProtectionRuleConflict' }, - }, - BranchProtectionRuleConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[BranchProtectionRuleEdge]' }, - nodes: { __type: '[BranchProtectionRule]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - BranchProtectionRuleEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'BranchProtectionRule' }, - }, - BypassForcePushAllowance: { - __typename: { __type: 'String!' }, - actor: { __type: 'BranchActorAllowanceActor' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - id: { __type: 'ID!' }, - }, - BypassForcePushAllowanceConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[BypassForcePushAllowanceEdge]' }, - nodes: { __type: '[BypassForcePushAllowance]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - BypassForcePushAllowanceEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'BypassForcePushAllowance' }, - }, - BypassPullRequestAllowance: { - __typename: { __type: 'String!' }, - actor: { __type: 'BranchActorAllowanceActor' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - id: { __type: 'ID!' }, - }, - BypassPullRequestAllowanceConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[BypassPullRequestAllowanceEdge]' }, - nodes: { __type: '[BypassPullRequestAllowance]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - BypassPullRequestAllowanceEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'BypassPullRequestAllowance' }, - }, - CVSS: { - __typename: { __type: 'String!' }, - score: { __type: 'Float!' }, - vectorString: { __type: 'String' }, - }, - CWE: { - __typename: { __type: 'String!' }, - cweId: { __type: 'String!' }, - description: { __type: 'String!' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - }, - CWEConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CWEEdge]' }, - nodes: { __type: '[CWE]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CWEEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CWE' }, - }, - CancelEnterpriseAdminInvitationInput: { - clientMutationId: { __type: 'String' }, - invitationId: { __type: 'ID!' }, - }, - CancelEnterpriseAdminInvitationPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - invitation: { __type: 'EnterpriseAdministratorInvitation' }, - message: { __type: 'String' }, - }, - CancelSponsorshipInput: { - clientMutationId: { __type: 'String' }, - sponsorId: { __type: 'ID' }, - sponsorLogin: { __type: 'String' }, - sponsorableId: { __type: 'ID' }, - sponsorableLogin: { __type: 'String' }, - }, - CancelSponsorshipPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - sponsorsTier: { __type: 'SponsorsTier' }, - }, - ChangeUserStatusInput: { - clientMutationId: { __type: 'String' }, - emoji: { __type: 'String' }, - expiresAt: { __type: 'DateTime' }, - limitedAvailability: { __type: 'Boolean' }, - message: { __type: 'String' }, - organizationId: { __type: 'ID' }, - }, - ChangeUserStatusPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - status: { __type: 'UserStatus' }, - }, - CheckAnnotation: { - __typename: { __type: 'String!' }, - annotationLevel: { __type: 'CheckAnnotationLevel' }, - blobUrl: { __type: 'URI!' }, - databaseId: { __type: 'Int' }, - location: { __type: 'CheckAnnotationSpan!' }, - message: { __type: 'String!' }, - path: { __type: 'String!' }, - rawDetails: { __type: 'String' }, - title: { __type: 'String' }, - }, - CheckAnnotationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CheckAnnotationEdge]' }, - nodes: { __type: '[CheckAnnotation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CheckAnnotationData: { - annotationLevel: { __type: 'CheckAnnotationLevel!' }, - location: { __type: 'CheckAnnotationRange!' }, - message: { __type: 'String!' }, - path: { __type: 'String!' }, - rawDetails: { __type: 'String' }, - title: { __type: 'String' }, - }, - CheckAnnotationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CheckAnnotation' }, - }, - CheckAnnotationPosition: { - __typename: { __type: 'String!' }, - column: { __type: 'Int' }, - line: { __type: 'Int!' }, - }, - CheckAnnotationRange: { - endColumn: { __type: 'Int' }, - endLine: { __type: 'Int!' }, - startColumn: { __type: 'Int' }, - startLine: { __type: 'Int!' }, - }, - CheckAnnotationSpan: { - __typename: { __type: 'String!' }, - end: { __type: 'CheckAnnotationPosition!' }, - start: { __type: 'CheckAnnotationPosition!' }, - }, - CheckRun: { - __typename: { __type: 'String!' }, - annotations: { - __type: 'CheckAnnotationConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - checkSuite: { __type: 'CheckSuite!' }, - completedAt: { __type: 'DateTime' }, - conclusion: { __type: 'CheckConclusionState' }, - databaseId: { __type: 'Int' }, - deployment: { __type: 'Deployment' }, - detailsUrl: { __type: 'URI' }, - externalId: { __type: 'String' }, - id: { __type: 'ID!' }, - isRequired: { - __type: 'Boolean!', - __args: { pullRequestId: 'ID', pullRequestNumber: 'Int' }, - }, - name: { __type: 'String!' }, - pendingDeploymentRequest: { __type: 'DeploymentRequest' }, - permalink: { __type: 'URI!' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - startedAt: { __type: 'DateTime' }, - status: { __type: 'CheckStatusState!' }, - steps: { - __type: 'CheckStepConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - number: 'Int', - }, - }, - summary: { __type: 'String' }, - text: { __type: 'String' }, - title: { __type: 'String' }, - url: { __type: 'URI!' }, - }, - CheckRunAction: { - description: { __type: 'String!' }, - identifier: { __type: 'String!' }, - label: { __type: 'String!' }, - }, - CheckRunConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CheckRunEdge]' }, - nodes: { __type: '[CheckRun]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CheckRunEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CheckRun' }, - }, - CheckRunFilter: { - appId: { __type: 'Int' }, - checkName: { __type: 'String' }, - checkType: { __type: 'CheckRunType' }, - status: { __type: 'CheckStatusState' }, - }, - CheckRunOutput: { - annotations: { __type: '[CheckAnnotationData!]' }, - images: { __type: '[CheckRunOutputImage!]' }, - summary: { __type: 'String!' }, - text: { __type: 'String' }, - title: { __type: 'String!' }, - }, - CheckRunOutputImage: { - alt: { __type: 'String!' }, - caption: { __type: 'String' }, - imageUrl: { __type: 'URI!' }, - }, - CheckStep: { - __typename: { __type: 'String!' }, - completedAt: { __type: 'DateTime' }, - conclusion: { __type: 'CheckConclusionState' }, - externalId: { __type: 'String' }, - name: { __type: 'String!' }, - number: { __type: 'Int!' }, - secondsToCompletion: { __type: 'Int' }, - startedAt: { __type: 'DateTime' }, - status: { __type: 'CheckStatusState!' }, - }, - CheckStepConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CheckStepEdge]' }, - nodes: { __type: '[CheckStep]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CheckStepEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CheckStep' }, - }, - CheckSuite: { - __typename: { __type: 'String!' }, - app: { __type: 'App' }, - branch: { __type: 'Ref' }, - checkRuns: { - __type: 'CheckRunConnection', - __args: { - after: 'String', - before: 'String', - filterBy: 'CheckRunFilter', - first: 'Int', - last: 'Int', - }, - }, - commit: { __type: 'Commit!' }, - conclusion: { __type: 'CheckConclusionState' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'User' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - matchingPullRequests: { - __type: 'PullRequestConnection', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - push: { __type: 'Push' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - status: { __type: 'CheckStatusState!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - workflowRun: { __type: 'WorkflowRun' }, - }, - CheckSuiteAutoTriggerPreference: { - appId: { __type: 'ID!' }, - setting: { __type: 'Boolean!' }, - }, - CheckSuiteConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CheckSuiteEdge]' }, - nodes: { __type: '[CheckSuite]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CheckSuiteEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CheckSuite' }, - }, - CheckSuiteFilter: { - appId: { __type: 'Int' }, - checkName: { __type: 'String' }, - }, - ClearLabelsFromLabelableInput: { - clientMutationId: { __type: 'String' }, - labelableId: { __type: 'ID!' }, - }, - ClearLabelsFromLabelablePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - labelable: { __type: 'Labelable' }, - }, - CloneProjectInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - includeWorkflows: { __type: 'Boolean!' }, - name: { __type: 'String!' }, - public: { __type: 'Boolean' }, - sourceId: { __type: 'ID!' }, - targetOwnerId: { __type: 'ID!' }, - }, - CloneProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - jobStatusId: { __type: 'String' }, - project: { __type: 'Project' }, - }, - CloneTemplateRepositoryInput: { - clientMutationId: { __type: 'String' }, - description: { __type: 'String' }, - includeAllBranches: { __type: 'Boolean' }, - name: { __type: 'String!' }, - ownerId: { __type: 'ID!' }, - repositoryId: { __type: 'ID!' }, - visibility: { __type: 'RepositoryVisibility!' }, - }, - CloneTemplateRepositoryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - Closable: { - __typename: { __type: 'String!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - $on: { __type: '$Closable!' }, - }, - CloseIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - }, - CloseIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - ClosePullRequestInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - }, - ClosePullRequestPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - ClosedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - closable: { __type: 'Closable!' }, - closer: { __type: 'Closer' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - Closer: { __typename: { __type: 'String!' }, $on: { __type: '$Closer!' } }, - CodeOfConduct: { - __typename: { __type: 'String!' }, - body: { __type: 'String' }, - id: { __type: 'ID!' }, - key: { __type: 'String!' }, - name: { __type: 'String!' }, - resourcePath: { __type: 'URI' }, - url: { __type: 'URI' }, - }, - Comment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - publishedAt: { __type: 'DateTime' }, - updatedAt: { __type: 'DateTime!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerDidAuthor: { __type: 'Boolean!' }, - $on: { __type: '$Comment!' }, - }, - CommentDeletedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - deletedCommentAuthor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - }, - Commit: { - __typename: { __type: 'String!' }, - abbreviatedOid: { __type: 'String!' }, - additions: { __type: 'Int!' }, - associatedPullRequests: { - __type: 'PullRequestConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'PullRequestOrder', - }, - }, - author: { __type: 'GitActor' }, - authoredByCommitter: { __type: 'Boolean!' }, - authoredDate: { __type: 'DateTime!' }, - authors: { - __type: 'GitActorConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - blame: { __type: 'Blame!', __args: { path: 'String!' } }, - changedFiles: { __type: 'Int!' }, - checkSuites: { - __type: 'CheckSuiteConnection', - __args: { - after: 'String', - before: 'String', - filterBy: 'CheckSuiteFilter', - first: 'Int', - last: 'Int', - }, - }, - comments: { - __type: 'CommitCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - commitResourcePath: { __type: 'URI!' }, - commitUrl: { __type: 'URI!' }, - committedDate: { __type: 'DateTime!' }, - committedViaWeb: { __type: 'Boolean!' }, - committer: { __type: 'GitActor' }, - deletions: { __type: 'Int!' }, - deployments: { - __type: 'DeploymentConnection', - __args: { - after: 'String', - before: 'String', - environments: '[String!]', - first: 'Int', - last: 'Int', - orderBy: 'DeploymentOrder', - }, - }, - file: { __type: 'TreeEntry', __args: { path: 'String!' } }, - history: { - __type: 'CommitHistoryConnection!', - __args: { - after: 'String', - author: 'CommitAuthor', - before: 'String', - first: 'Int', - last: 'Int', - path: 'String', - since: 'GitTimestamp', - until: 'GitTimestamp', - }, - }, - id: { __type: 'ID!' }, - message: { __type: 'String!' }, - messageBody: { __type: 'String!' }, - messageBodyHTML: { __type: 'HTML!' }, - messageHeadline: { __type: 'String!' }, - messageHeadlineHTML: { __type: 'HTML!' }, - oid: { __type: 'GitObjectID!' }, - onBehalfOf: { __type: 'Organization' }, - parents: { - __type: 'CommitConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - pushedDate: { __type: 'DateTime' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - signature: { __type: 'GitSignature' }, - status: { __type: 'Status' }, - statusCheckRollup: { __type: 'StatusCheckRollup' }, - submodules: { - __type: 'SubmoduleConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - tarballUrl: { __type: 'URI!' }, - tree: { __type: 'Tree!' }, - treeResourcePath: { __type: 'URI!' }, - treeUrl: { __type: 'URI!' }, - url: { __type: 'URI!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - zipballUrl: { __type: 'URI!' }, - }, - CommitAuthor: { emails: { __type: '[String!]' }, id: { __type: 'ID' } }, - CommitComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - commit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isMinimized: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - minimizedReason: { __type: 'String' }, - path: { __type: 'String' }, - position: { __type: 'Int' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanMinimize: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - CommitCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CommitCommentEdge]' }, - nodes: { __type: '[CommitComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CommitCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CommitComment' }, - }, - CommitCommentThread: { - __typename: { __type: 'String!' }, - comments: { - __type: 'CommitCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - commit: { __type: 'Commit' }, - id: { __type: 'ID!' }, - path: { __type: 'String' }, - position: { __type: 'Int' }, - repository: { __type: 'Repository!' }, - }, - CommitConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CommitEdge]' }, - nodes: { __type: '[Commit]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CommitContributionOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'CommitContributionOrderField!' }, - }, - CommitContributionsByRepository: { - __typename: { __type: 'String!' }, - contributions: { - __type: 'CreatedCommitContributionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'CommitContributionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - CommitEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Commit' }, - }, - CommitHistoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CommitEdge]' }, - nodes: { __type: '[Commit]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CommitMessage: { - body: { __type: 'String' }, - headline: { __type: 'String!' }, - }, - CommittableBranch: { - branchName: { __type: 'String' }, - id: { __type: 'ID' }, - repositoryNameWithOwner: { __type: 'String' }, - }, - ConnectedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - source: { __type: 'ReferencedSubject!' }, - subject: { __type: 'ReferencedSubject!' }, - }, - Contribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - $on: { __type: '$Contribution!' }, - }, - ContributionCalendar: { - __typename: { __type: 'String!' }, - colors: { __type: '[String!]!' }, - isHalloween: { __type: 'Boolean!' }, - months: { __type: '[ContributionCalendarMonth!]!' }, - totalContributions: { __type: 'Int!' }, - weeks: { __type: '[ContributionCalendarWeek!]!' }, - }, - ContributionCalendarDay: { - __typename: { __type: 'String!' }, - color: { __type: 'String!' }, - contributionCount: { __type: 'Int!' }, - contributionLevel: { __type: 'ContributionLevel!' }, - date: { __type: 'Date!' }, - weekday: { __type: 'Int!' }, - }, - ContributionCalendarMonth: { - __typename: { __type: 'String!' }, - firstDay: { __type: 'Date!' }, - name: { __type: 'String!' }, - totalWeeks: { __type: 'Int!' }, - year: { __type: 'Int!' }, - }, - ContributionCalendarWeek: { - __typename: { __type: 'String!' }, - contributionDays: { __type: '[ContributionCalendarDay!]!' }, - firstDay: { __type: 'Date!' }, - }, - ContributionOrder: { direction: { __type: 'OrderDirection!' } }, - ContributionsCollection: { - __typename: { __type: 'String!' }, - commitContributionsByRepository: { - __type: '[CommitContributionsByRepository!]!', - __args: { maxRepositories: 'Int' }, - }, - contributionCalendar: { __type: 'ContributionCalendar!' }, - contributionYears: { __type: '[Int!]!' }, - doesEndInCurrentMonth: { __type: 'Boolean!' }, - earliestRestrictedContributionDate: { __type: 'Date' }, - endedAt: { __type: 'DateTime!' }, - firstIssueContribution: { __type: 'CreatedIssueOrRestrictedContribution' }, - firstPullRequestContribution: { - __type: 'CreatedPullRequestOrRestrictedContribution', - }, - firstRepositoryContribution: { - __type: 'CreatedRepositoryOrRestrictedContribution', - }, - hasActivityInThePast: { __type: 'Boolean!' }, - hasAnyContributions: { __type: 'Boolean!' }, - hasAnyRestrictedContributions: { __type: 'Boolean!' }, - isSingleDay: { __type: 'Boolean!' }, - issueContributions: { - __type: 'CreatedIssueContributionConnection!', - __args: { - after: 'String', - before: 'String', - excludeFirst: 'Boolean', - excludePopular: 'Boolean', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - issueContributionsByRepository: { - __type: '[IssueContributionsByRepository!]!', - __args: { - excludeFirst: 'Boolean', - excludePopular: 'Boolean', - maxRepositories: 'Int', - }, - }, - joinedGitHubContribution: { __type: 'JoinedGitHubContribution' }, - latestRestrictedContributionDate: { __type: 'Date' }, - mostRecentCollectionWithActivity: { __type: 'ContributionsCollection' }, - mostRecentCollectionWithoutActivity: { __type: 'ContributionsCollection' }, - popularIssueContribution: { __type: 'CreatedIssueContribution' }, - popularPullRequestContribution: { - __type: 'CreatedPullRequestContribution', - }, - pullRequestContributions: { - __type: 'CreatedPullRequestContributionConnection!', - __args: { - after: 'String', - before: 'String', - excludeFirst: 'Boolean', - excludePopular: 'Boolean', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - pullRequestContributionsByRepository: { - __type: '[PullRequestContributionsByRepository!]!', - __args: { - excludeFirst: 'Boolean', - excludePopular: 'Boolean', - maxRepositories: 'Int', - }, - }, - pullRequestReviewContributions: { - __type: 'CreatedPullRequestReviewContributionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - pullRequestReviewContributionsByRepository: { - __type: '[PullRequestReviewContributionsByRepository!]!', - __args: { maxRepositories: 'Int' }, - }, - repositoryContributions: { - __type: 'CreatedRepositoryContributionConnection!', - __args: { - after: 'String', - before: 'String', - excludeFirst: 'Boolean', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - restrictedContributionsCount: { __type: 'Int!' }, - startedAt: { __type: 'DateTime!' }, - totalCommitContributions: { __type: 'Int!' }, - totalIssueContributions: { - __type: 'Int!', - __args: { excludeFirst: 'Boolean', excludePopular: 'Boolean' }, - }, - totalPullRequestContributions: { - __type: 'Int!', - __args: { excludeFirst: 'Boolean', excludePopular: 'Boolean' }, - }, - totalPullRequestReviewContributions: { __type: 'Int!' }, - totalRepositoriesWithContributedCommits: { __type: 'Int!' }, - totalRepositoriesWithContributedIssues: { - __type: 'Int!', - __args: { excludeFirst: 'Boolean', excludePopular: 'Boolean' }, - }, - totalRepositoriesWithContributedPullRequestReviews: { __type: 'Int!' }, - totalRepositoriesWithContributedPullRequests: { - __type: 'Int!', - __args: { excludeFirst: 'Boolean', excludePopular: 'Boolean' }, - }, - totalRepositoryContributions: { - __type: 'Int!', - __args: { excludeFirst: 'Boolean' }, - }, - user: { __type: 'User!' }, - }, - ConvertProjectCardNoteToIssueInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - projectCardId: { __type: 'ID!' }, - repositoryId: { __type: 'ID!' }, - title: { __type: 'String' }, - }, - ConvertProjectCardNoteToIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - projectCard: { __type: 'ProjectCard' }, - }, - ConvertPullRequestToDraftInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - }, - ConvertPullRequestToDraftPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - ConvertToDraftEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - ConvertedNoteToIssueEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - }, - ConvertedToDiscussionEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - discussion: { __type: 'Discussion' }, - id: { __type: 'ID!' }, - }, - CreateBranchProtectionRuleInput: { - allowsDeletions: { __type: 'Boolean' }, - allowsForcePushes: { __type: 'Boolean' }, - bypassForcePushActorIds: { __type: '[ID!]' }, - bypassPullRequestActorIds: { __type: '[ID!]' }, - clientMutationId: { __type: 'String' }, - dismissesStaleReviews: { __type: 'Boolean' }, - isAdminEnforced: { __type: 'Boolean' }, - pattern: { __type: 'String!' }, - pushActorIds: { __type: '[ID!]' }, - repositoryId: { __type: 'ID!' }, - requiredApprovingReviewCount: { __type: 'Int' }, - requiredStatusCheckContexts: { __type: '[String!]' }, - requiredStatusChecks: { __type: '[RequiredStatusCheckInput!]' }, - requiresApprovingReviews: { __type: 'Boolean' }, - requiresCodeOwnerReviews: { __type: 'Boolean' }, - requiresCommitSignatures: { __type: 'Boolean' }, - requiresConversationResolution: { __type: 'Boolean' }, - requiresLinearHistory: { __type: 'Boolean' }, - requiresStatusChecks: { __type: 'Boolean' }, - requiresStrictStatusChecks: { __type: 'Boolean' }, - restrictsPushes: { __type: 'Boolean' }, - restrictsReviewDismissals: { __type: 'Boolean' }, - reviewDismissalActorIds: { __type: '[ID!]' }, - }, - CreateBranchProtectionRulePayload: { - __typename: { __type: 'String!' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - clientMutationId: { __type: 'String' }, - }, - CreateCheckRunInput: { - actions: { __type: '[CheckRunAction!]' }, - clientMutationId: { __type: 'String' }, - completedAt: { __type: 'DateTime' }, - conclusion: { __type: 'CheckConclusionState' }, - detailsUrl: { __type: 'URI' }, - externalId: { __type: 'String' }, - headSha: { __type: 'GitObjectID!' }, - name: { __type: 'String!' }, - output: { __type: 'CheckRunOutput' }, - repositoryId: { __type: 'ID!' }, - startedAt: { __type: 'DateTime' }, - status: { __type: 'RequestableCheckStatusState' }, - }, - CreateCheckRunPayload: { - __typename: { __type: 'String!' }, - checkRun: { __type: 'CheckRun' }, - clientMutationId: { __type: 'String' }, - }, - CreateCheckSuiteInput: { - clientMutationId: { __type: 'String' }, - headSha: { __type: 'GitObjectID!' }, - repositoryId: { __type: 'ID!' }, - }, - CreateCheckSuitePayload: { - __typename: { __type: 'String!' }, - checkSuite: { __type: 'CheckSuite' }, - clientMutationId: { __type: 'String' }, - }, - CreateCommitOnBranchInput: { - branch: { __type: 'CommittableBranch!' }, - clientMutationId: { __type: 'String' }, - expectedHeadOid: { __type: 'GitObjectID!' }, - fileChanges: { __type: 'FileChanges' }, - message: { __type: 'CommitMessage!' }, - }, - CreateCommitOnBranchPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - commit: { __type: 'Commit' }, - ref: { __type: 'Ref' }, - }, - CreateDiscussionInput: { - body: { __type: 'String!' }, - categoryId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - title: { __type: 'String!' }, - }, - CreateDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussion: { __type: 'Discussion' }, - }, - CreateEnterpriseOrganizationInput: { - adminLogins: { __type: '[String!]!' }, - billingEmail: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - login: { __type: 'String!' }, - profileName: { __type: 'String!' }, - }, - CreateEnterpriseOrganizationPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - organization: { __type: 'Organization' }, - }, - CreateEnvironmentInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - repositoryId: { __type: 'ID!' }, - }, - CreateEnvironmentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - environment: { __type: 'Environment' }, - }, - CreateIpAllowListEntryInput: { - allowListValue: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - isActive: { __type: 'Boolean!' }, - name: { __type: 'String' }, - ownerId: { __type: 'ID!' }, - }, - CreateIpAllowListEntryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ipAllowListEntry: { __type: 'IpAllowListEntry' }, - }, - CreateIssueInput: { - assigneeIds: { __type: '[ID!]' }, - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - issueTemplate: { __type: 'String' }, - labelIds: { __type: '[ID!]' }, - milestoneId: { __type: 'ID' }, - projectIds: { __type: '[ID!]' }, - repositoryId: { __type: 'ID!' }, - title: { __type: 'String!' }, - }, - CreateIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - CreateProjectInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - ownerId: { __type: 'ID!' }, - repositoryIds: { __type: '[ID!]' }, - template: { __type: 'ProjectTemplate' }, - }, - CreateProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - project: { __type: 'Project' }, - }, - CreatePullRequestInput: { - baseRefName: { __type: 'String!' }, - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - draft: { __type: 'Boolean' }, - headRefName: { __type: 'String!' }, - maintainerCanModify: { __type: 'Boolean' }, - repositoryId: { __type: 'ID!' }, - title: { __type: 'String!' }, - }, - CreatePullRequestPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - CreateRefInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - oid: { __type: 'GitObjectID!' }, - repositoryId: { __type: 'ID!' }, - }, - CreateRefPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ref: { __type: 'Ref' }, - }, - CreateRepositoryInput: { - clientMutationId: { __type: 'String' }, - description: { __type: 'String' }, - hasIssuesEnabled: { __type: 'Boolean' }, - hasWikiEnabled: { __type: 'Boolean' }, - homepageUrl: { __type: 'URI' }, - name: { __type: 'String!' }, - ownerId: { __type: 'ID' }, - teamId: { __type: 'ID' }, - template: { __type: 'Boolean' }, - visibility: { __type: 'RepositoryVisibility!' }, - }, - CreateRepositoryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - CreateSponsorshipInput: { - amount: { __type: 'Int' }, - clientMutationId: { __type: 'String' }, - isRecurring: { __type: 'Boolean' }, - privacyLevel: { __type: 'SponsorshipPrivacy' }, - receiveEmails: { __type: 'Boolean' }, - sponsorId: { __type: 'ID' }, - sponsorLogin: { __type: 'String' }, - sponsorableId: { __type: 'ID' }, - sponsorableLogin: { __type: 'String' }, - tierId: { __type: 'ID' }, - }, - CreateSponsorshipPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - sponsorship: { __type: 'Sponsorship' }, - }, - CreateTeamDiscussionCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussionId: { __type: 'ID!' }, - }, - CreateTeamDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - teamDiscussionComment: { __type: 'TeamDiscussionComment' }, - }, - CreateTeamDiscussionInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - private: { __type: 'Boolean' }, - teamId: { __type: 'ID!' }, - title: { __type: 'String!' }, - }, - CreateTeamDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - teamDiscussion: { __type: 'TeamDiscussion' }, - }, - CreatedCommitContribution: { - __typename: { __type: 'String!' }, - commitCount: { __type: 'Int!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - CreatedCommitContributionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CreatedCommitContributionEdge]' }, - nodes: { __type: '[CreatedCommitContribution]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CreatedCommitContributionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CreatedCommitContribution' }, - }, - CreatedIssueContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - issue: { __type: 'Issue!' }, - occurredAt: { __type: 'DateTime!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - CreatedIssueContributionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CreatedIssueContributionEdge]' }, - nodes: { __type: '[CreatedIssueContribution]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CreatedIssueContributionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CreatedIssueContribution' }, - }, - CreatedIssueOrRestrictedContribution: { - __typename: { __type: 'String!' }, - $on: { __type: '$CreatedIssueOrRestrictedContribution!' }, - }, - CreatedPullRequestContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - pullRequest: { __type: 'PullRequest!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - CreatedPullRequestContributionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CreatedPullRequestContributionEdge]' }, - nodes: { __type: '[CreatedPullRequestContribution]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CreatedPullRequestContributionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CreatedPullRequestContribution' }, - }, - CreatedPullRequestOrRestrictedContribution: { - __typename: { __type: 'String!' }, - $on: { __type: '$CreatedPullRequestOrRestrictedContribution!' }, - }, - CreatedPullRequestReviewContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - pullRequest: { __type: 'PullRequest!' }, - pullRequestReview: { __type: 'PullRequestReview!' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - CreatedPullRequestReviewContributionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CreatedPullRequestReviewContributionEdge]' }, - nodes: { __type: '[CreatedPullRequestReviewContribution]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CreatedPullRequestReviewContributionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CreatedPullRequestReviewContribution' }, - }, - CreatedRepositoryContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - CreatedRepositoryContributionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[CreatedRepositoryContributionEdge]' }, - nodes: { __type: '[CreatedRepositoryContribution]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - CreatedRepositoryContributionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'CreatedRepositoryContribution' }, - }, - CreatedRepositoryOrRestrictedContribution: { - __typename: { __type: 'String!' }, - $on: { __type: '$CreatedRepositoryOrRestrictedContribution!' }, - }, - CrossReferencedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - referencedAt: { __type: 'DateTime!' }, - resourcePath: { __type: 'URI!' }, - source: { __type: 'ReferencedSubject!' }, - target: { __type: 'ReferencedSubject!' }, - url: { __type: 'URI!' }, - willCloseTarget: { __type: 'Boolean!' }, - }, - DeclineTopicSuggestionInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - reason: { __type: 'TopicSuggestionDeclineReason!' }, - repositoryId: { __type: 'ID!' }, - }, - DeclineTopicSuggestionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - topic: { __type: 'Topic' }, - }, - Deletable: { - __typename: { __type: 'String!' }, - viewerCanDelete: { __type: 'Boolean!' }, - $on: { __type: '$Deletable!' }, - }, - DeleteBranchProtectionRuleInput: { - branchProtectionRuleId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteBranchProtectionRulePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteDeploymentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteDeploymentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteDiscussionCommentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - comment: { __type: 'DiscussionComment' }, - }, - DeleteDiscussionInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussion: { __type: 'Discussion' }, - }, - DeleteEnvironmentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteEnvironmentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteIpAllowListEntryInput: { - clientMutationId: { __type: 'String' }, - ipAllowListEntryId: { __type: 'ID!' }, - }, - DeleteIpAllowListEntryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ipAllowListEntry: { __type: 'IpAllowListEntry' }, - }, - DeleteIssueCommentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteIssueCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - }, - DeleteIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - DeleteProjectCardInput: { - cardId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteProjectCardPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - column: { __type: 'ProjectColumn' }, - deletedCardId: { __type: 'ID' }, - }, - DeleteProjectColumnInput: { - clientMutationId: { __type: 'String' }, - columnId: { __type: 'ID!' }, - }, - DeleteProjectColumnPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - deletedColumnId: { __type: 'ID' }, - project: { __type: 'Project' }, - }, - DeleteProjectInput: { - clientMutationId: { __type: 'String' }, - projectId: { __type: 'ID!' }, - }, - DeleteProjectNextItemInput: { - clientMutationId: { __type: 'String' }, - itemId: { __type: 'ID!' }, - projectId: { __type: 'ID!' }, - }, - DeleteProjectNextItemPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - deletedItemId: { __type: 'ID' }, - }, - DeleteProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - owner: { __type: 'ProjectOwner' }, - }, - DeletePullRequestReviewCommentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeletePullRequestReviewCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - }, - DeletePullRequestReviewInput: { - clientMutationId: { __type: 'String' }, - pullRequestReviewId: { __type: 'ID!' }, - }, - DeletePullRequestReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - }, - DeleteRefInput: { - clientMutationId: { __type: 'String' }, - refId: { __type: 'ID!' }, - }, - DeleteRefPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteTeamDiscussionCommentInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteTeamDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteTeamDiscussionInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteTeamDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - }, - DeleteVerifiableDomainInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - DeleteVerifiableDomainPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - owner: { __type: 'VerifiableDomainOwner' }, - }, - DemilestonedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - milestoneTitle: { __type: 'String!' }, - subject: { __type: 'MilestoneItem!' }, - }, - DeployKey: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - key: { __type: 'String!' }, - readOnly: { __type: 'Boolean!' }, - title: { __type: 'String!' }, - verified: { __type: 'Boolean!' }, - }, - DeployKeyConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeployKeyEdge]' }, - nodes: { __type: '[DeployKey]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeployKeyEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeployKey' }, - }, - DeployedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - deployment: { __type: 'Deployment!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - ref: { __type: 'Ref' }, - }, - Deployment: { - __typename: { __type: 'String!' }, - commit: { __type: 'Commit' }, - commitOid: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - environment: { __type: 'String' }, - id: { __type: 'ID!' }, - latestEnvironment: { __type: 'String' }, - latestStatus: { __type: 'DeploymentStatus' }, - originalEnvironment: { __type: 'String' }, - payload: { __type: 'String' }, - ref: { __type: 'Ref' }, - repository: { __type: 'Repository!' }, - state: { __type: 'DeploymentState' }, - statuses: { - __type: 'DeploymentStatusConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - task: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - }, - DeploymentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentEdge]' }, - nodes: { __type: '[Deployment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Deployment' }, - }, - DeploymentEnvironmentChangedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - deploymentStatus: { __type: 'DeploymentStatus!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - DeploymentOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'DeploymentOrderField!' }, - }, - DeploymentProtectionRule: { - __typename: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - reviewers: { - __type: 'DeploymentReviewerConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - timeout: { __type: 'Int!' }, - type: { __type: 'DeploymentProtectionRuleType!' }, - }, - DeploymentProtectionRuleConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentProtectionRuleEdge]' }, - nodes: { __type: '[DeploymentProtectionRule]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentProtectionRuleEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeploymentProtectionRule' }, - }, - DeploymentRequest: { - __typename: { __type: 'String!' }, - currentUserCanApprove: { __type: 'Boolean!' }, - environment: { __type: 'Environment!' }, - reviewers: { - __type: 'DeploymentReviewerConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - waitTimer: { __type: 'Int!' }, - waitTimerStartedAt: { __type: 'DateTime' }, - }, - DeploymentRequestConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentRequestEdge]' }, - nodes: { __type: '[DeploymentRequest]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentRequestEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeploymentRequest' }, - }, - DeploymentReview: { - __typename: { __type: 'String!' }, - comment: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - environments: { - __type: 'EnvironmentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - id: { __type: 'ID!' }, - state: { __type: 'DeploymentReviewState!' }, - user: { __type: 'User!' }, - }, - DeploymentReviewConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentReviewEdge]' }, - nodes: { __type: '[DeploymentReview]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentReviewEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeploymentReview' }, - }, - DeploymentReviewer: { - __typename: { __type: 'String!' }, - $on: { __type: '$DeploymentReviewer!' }, - }, - DeploymentReviewerConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentReviewerEdge]' }, - nodes: { __type: '[DeploymentReviewer]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentReviewerEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeploymentReviewer' }, - }, - DeploymentStatus: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor!' }, - deployment: { __type: 'Deployment!' }, - description: { __type: 'String' }, - environmentUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - logUrl: { __type: 'URI' }, - state: { __type: 'DeploymentStatusState!' }, - updatedAt: { __type: 'DateTime!' }, - }, - DeploymentStatusConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DeploymentStatusEdge]' }, - nodes: { __type: '[DeploymentStatus]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DeploymentStatusEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DeploymentStatus' }, - }, - DisablePullRequestAutoMergeInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - }, - DisablePullRequestAutoMergePayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - DisconnectedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - source: { __type: 'ReferencedSubject!' }, - subject: { __type: 'ReferencedSubject!' }, - }, - Discussion: { - __typename: { __type: 'String!' }, - activeLockReason: { __type: 'LockReason' }, - answer: { __type: 'DiscussionComment' }, - answerChosenAt: { __type: 'DateTime' }, - answerChosenBy: { __type: 'Actor' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - category: { __type: 'DiscussionCategory!' }, - comments: { - __type: 'DiscussionCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - labels: { - __type: 'LabelConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LabelOrder', - }, - }, - lastEditedAt: { __type: 'DateTime' }, - locked: { __type: 'Boolean!' }, - number: { __type: 'Int!' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - title: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - upvoteCount: { __type: 'Int!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCanUpvote: { __type: 'Boolean!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - viewerHasUpvoted: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - }, - DiscussionCategory: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - description: { __type: 'String' }, - emoji: { __type: 'String!' }, - emojiHTML: { __type: 'HTML!' }, - id: { __type: 'ID!' }, - isAnswerable: { __type: 'Boolean!' }, - name: { __type: 'String!' }, - repository: { __type: 'Repository!' }, - updatedAt: { __type: 'DateTime!' }, - }, - DiscussionCategoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DiscussionCategoryEdge]' }, - nodes: { __type: '[DiscussionCategory]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DiscussionCategoryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DiscussionCategory' }, - }, - DiscussionComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - deletedAt: { __type: 'DateTime' }, - discussion: { __type: 'Discussion' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isAnswer: { __type: 'Boolean!' }, - isMinimized: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - minimizedReason: { __type: 'String' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - replies: { - __type: 'DiscussionCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - replyTo: { __type: 'DiscussionComment' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - upvoteCount: { __type: 'Int!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanMarkAsAnswer: { __type: 'Boolean!' }, - viewerCanMinimize: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUnmarkAsAnswer: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCanUpvote: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - viewerHasUpvoted: { __type: 'Boolean!' }, - }, - DiscussionCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DiscussionCommentEdge]' }, - nodes: { __type: '[DiscussionComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DiscussionCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'DiscussionComment' }, - }, - DiscussionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[DiscussionEdge]' }, - nodes: { __type: '[Discussion]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - DiscussionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Discussion' }, - }, - DiscussionOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'DiscussionOrderField!' }, - }, - DismissPullRequestReviewInput: { - clientMutationId: { __type: 'String' }, - message: { __type: 'String!' }, - pullRequestReviewId: { __type: 'ID!' }, - }, - DismissPullRequestReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - }, - DismissRepositoryVulnerabilityAlertInput: { - clientMutationId: { __type: 'String' }, - dismissReason: { __type: 'DismissReason!' }, - repositoryVulnerabilityAlertId: { __type: 'ID!' }, - }, - DismissRepositoryVulnerabilityAlertPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repositoryVulnerabilityAlert: { __type: 'RepositoryVulnerabilityAlert' }, - }, - DraftPullRequestReviewComment: { - body: { __type: 'String!' }, - path: { __type: 'String!' }, - position: { __type: 'Int!' }, - }, - DraftPullRequestReviewThread: { - body: { __type: 'String!' }, - line: { __type: 'Int!' }, - path: { __type: 'String!' }, - side: { __type: 'DiffSide' }, - startLine: { __type: 'Int' }, - startSide: { __type: 'DiffSide' }, - }, - EnablePullRequestAutoMergeInput: { - authorEmail: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - commitBody: { __type: 'String' }, - commitHeadline: { __type: 'String' }, - mergeMethod: { __type: 'PullRequestMergeMethod' }, - pullRequestId: { __type: 'ID!' }, - }, - EnablePullRequestAutoMergePayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - Enterprise: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - billingInfo: { __type: 'EnterpriseBillingInfo' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - descriptionHTML: { __type: 'HTML!' }, - id: { __type: 'ID!' }, - location: { __type: 'String' }, - members: { - __type: 'EnterpriseMemberConnection!', - __args: { - after: 'String', - before: 'String', - deployment: 'EnterpriseUserDeployment', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseMemberOrder', - organizationLogins: '[String!]', - query: 'String', - role: 'EnterpriseUserAccountMembershipRole', - }, - }, - name: { __type: 'String!' }, - organizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - query: 'String', - viewerOrganizationRole: 'RoleInOrganization', - }, - }, - ownerInfo: { __type: 'EnterpriseOwnerInfo' }, - resourcePath: { __type: 'URI!' }, - slug: { __type: 'String!' }, - url: { __type: 'URI!' }, - userAccounts: { - __type: 'EnterpriseUserAccountConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerIsAdmin: { __type: 'Boolean!' }, - websiteUrl: { __type: 'URI' }, - }, - EnterpriseAdministratorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseAdministratorEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseAdministratorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'User' }, - role: { __type: 'EnterpriseAdministratorRole!' }, - }, - EnterpriseAdministratorInvitation: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - email: { __type: 'String' }, - enterprise: { __type: 'Enterprise!' }, - id: { __type: 'ID!' }, - invitee: { __type: 'User' }, - inviter: { __type: 'User' }, - role: { __type: 'EnterpriseAdministratorRole!' }, - }, - EnterpriseAdministratorInvitationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseAdministratorInvitationEdge]' }, - nodes: { __type: '[EnterpriseAdministratorInvitation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseAdministratorInvitationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseAdministratorInvitation' }, - }, - EnterpriseAdministratorInvitationOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseAdministratorInvitationOrderField!' }, - }, - EnterpriseAuditEntryData: { - __typename: { __type: 'String!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - $on: { __type: '$EnterpriseAuditEntryData!' }, - }, - EnterpriseBillingInfo: { - __typename: { __type: 'String!' }, - allLicensableUsersCount: { __type: 'Int!' }, - assetPacks: { __type: 'Int!' }, - availableSeats: { __type: 'Int!' }, - bandwidthQuota: { __type: 'Float!' }, - bandwidthUsage: { __type: 'Float!' }, - bandwidthUsagePercentage: { __type: 'Int!' }, - seats: { __type: 'Int!' }, - storageQuota: { __type: 'Float!' }, - storageUsage: { __type: 'Float!' }, - storageUsagePercentage: { __type: 'Int!' }, - totalAvailableLicenses: { __type: 'Int!' }, - totalLicenses: { __type: 'Int!' }, - }, - EnterpriseIdentityProvider: { - __typename: { __type: 'String!' }, - digestMethod: { __type: 'SamlDigestAlgorithm' }, - enterprise: { __type: 'Enterprise' }, - externalIdentities: { - __type: 'ExternalIdentityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - membersOnly: 'Boolean', - }, - }, - id: { __type: 'ID!' }, - idpCertificate: { __type: 'X509Certificate' }, - issuer: { __type: 'String' }, - recoveryCodes: { __type: '[String!]' }, - signatureMethod: { __type: 'SamlSignatureAlgorithm' }, - ssoUrl: { __type: 'URI' }, - }, - EnterpriseMember: { - __typename: { __type: 'String!' }, - $on: { __type: '$EnterpriseMember!' }, - }, - EnterpriseMemberConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseMemberEdge]' }, - nodes: { __type: '[EnterpriseMember]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseMemberEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - isUnlicensed: { __type: 'Boolean!' }, - node: { __type: 'EnterpriseMember' }, - }, - EnterpriseMemberOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseMemberOrderField!' }, - }, - EnterpriseOrganizationMembershipConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseOrganizationMembershipEdge]' }, - nodes: { __type: '[Organization]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseOrganizationMembershipEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Organization' }, - role: { __type: 'EnterpriseUserAccountMembershipRole!' }, - }, - EnterpriseOutsideCollaboratorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseOutsideCollaboratorEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseOutsideCollaboratorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - isUnlicensed: { __type: 'Boolean!' }, - node: { __type: 'User' }, - repositories: { - __type: 'EnterpriseRepositoryInfoConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'RepositoryOrder', - }, - }, - }, - EnterpriseOwnerInfo: { - __typename: { __type: 'String!' }, - admins: { - __type: 'EnterpriseAdministratorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseMemberOrder', - query: 'String', - role: 'EnterpriseAdministratorRole', - }, - }, - affiliatedUsersWithTwoFactorDisabled: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - affiliatedUsersWithTwoFactorDisabledExist: { __type: 'Boolean!' }, - allowPrivateRepositoryForkingSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - allowPrivateRepositoryForkingSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - defaultRepositoryPermissionSetting: { - __type: 'EnterpriseDefaultRepositoryPermissionSettingValue!', - }, - defaultRepositoryPermissionSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'DefaultRepositoryPermissionField!', - }, - }, - domains: { - __type: 'VerifiableDomainConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - isApproved: 'Boolean', - isVerified: 'Boolean', - last: 'Int', - orderBy: 'VerifiableDomainOrder', - }, - }, - enterpriseServerInstallations: { - __type: 'EnterpriseServerInstallationConnection!', - __args: { - after: 'String', - before: 'String', - connectedOnly: 'Boolean', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseServerInstallationOrder', - }, - }, - ipAllowListEnabledSetting: { __type: 'IpAllowListEnabledSettingValue!' }, - ipAllowListEntries: { - __type: 'IpAllowListEntryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IpAllowListEntryOrder', - }, - }, - ipAllowListForInstalledAppsEnabledSetting: { - __type: 'IpAllowListForInstalledAppsEnabledSettingValue!', - }, - isUpdatingDefaultRepositoryPermission: { __type: 'Boolean!' }, - isUpdatingTwoFactorRequirement: { __type: 'Boolean!' }, - membersCanChangeRepositoryVisibilitySetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanChangeRepositoryVisibilitySettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - membersCanCreateInternalRepositoriesSetting: { __type: 'Boolean' }, - membersCanCreatePrivateRepositoriesSetting: { __type: 'Boolean' }, - membersCanCreatePublicRepositoriesSetting: { __type: 'Boolean' }, - membersCanCreateRepositoriesSetting: { - __type: 'EnterpriseMembersCanCreateRepositoriesSettingValue', - }, - membersCanCreateRepositoriesSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'OrganizationMembersCanCreateRepositoriesSettingValue!', - }, - }, - membersCanDeleteIssuesSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanDeleteIssuesSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - membersCanDeleteRepositoriesSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanDeleteRepositoriesSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - membersCanInviteCollaboratorsSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanInviteCollaboratorsSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - membersCanMakePurchasesSetting: { - __type: 'EnterpriseMembersCanMakePurchasesSettingValue!', - }, - membersCanUpdateProtectedBranchesSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanUpdateProtectedBranchesSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - membersCanViewDependencyInsightsSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - membersCanViewDependencyInsightsSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - notificationDeliveryRestrictionEnabledSetting: { - __type: 'NotificationRestrictionSettingValue!', - }, - oidcProvider: { __type: 'OIDCProvider' }, - organizationProjectsSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - organizationProjectsSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - outsideCollaborators: { - __type: 'EnterpriseOutsideCollaboratorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - login: 'String', - orderBy: 'EnterpriseMemberOrder', - query: 'String', - visibility: 'RepositoryVisibility', - }, - }, - pendingAdminInvitations: { - __type: 'EnterpriseAdministratorInvitationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseAdministratorInvitationOrder', - query: 'String', - role: 'EnterpriseAdministratorRole', - }, - }, - pendingCollaboratorInvitations: { - __type: 'RepositoryInvitationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'RepositoryInvitationOrder', - query: 'String', - }, - }, - pendingCollaborators: { - __type: 'EnterprisePendingCollaboratorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'RepositoryInvitationOrder', - query: 'String', - }, - }, - pendingMemberInvitations: { - __type: 'EnterprisePendingMemberInvitationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - }, - }, - repositoryProjectsSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - repositoryProjectsSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - samlIdentityProvider: { __type: 'EnterpriseIdentityProvider' }, - samlIdentityProviderSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'IdentityProviderConfigurationState!', - }, - }, - supportEntitlements: { - __type: 'EnterpriseMemberConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseMemberOrder', - }, - }, - teamDiscussionsSetting: { - __type: 'EnterpriseEnabledDisabledSettingValue!', - }, - teamDiscussionsSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - twoFactorRequiredSetting: { __type: 'EnterpriseEnabledSettingValue!' }, - twoFactorRequiredSettingOrganizations: { - __type: 'OrganizationConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - value: 'Boolean!', - }, - }, - }, - EnterprisePendingCollaboratorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterprisePendingCollaboratorEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterprisePendingCollaboratorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - isUnlicensed: { __type: 'Boolean!' }, - node: { __type: 'User' }, - repositories: { - __type: 'EnterpriseRepositoryInfoConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'RepositoryOrder', - }, - }, - }, - EnterprisePendingMemberInvitationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterprisePendingMemberInvitationEdge]' }, - nodes: { __type: '[OrganizationInvitation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - totalUniqueUserCount: { __type: 'Int!' }, - }, - EnterprisePendingMemberInvitationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - isUnlicensed: { __type: 'Boolean!' }, - node: { __type: 'OrganizationInvitation' }, - }, - EnterpriseRepositoryInfo: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - isPrivate: { __type: 'Boolean!' }, - name: { __type: 'String!' }, - nameWithOwner: { __type: 'String!' }, - }, - EnterpriseRepositoryInfoConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseRepositoryInfoEdge]' }, - nodes: { __type: '[EnterpriseRepositoryInfo]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseRepositoryInfoEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseRepositoryInfo' }, - }, - EnterpriseServerInstallation: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - customerName: { __type: 'String!' }, - hostName: { __type: 'String!' }, - id: { __type: 'ID!' }, - isConnected: { __type: 'Boolean!' }, - updatedAt: { __type: 'DateTime!' }, - userAccounts: { - __type: 'EnterpriseServerUserAccountConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseServerUserAccountOrder', - }, - }, - userAccountsUploads: { - __type: 'EnterpriseServerUserAccountsUploadConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseServerUserAccountsUploadOrder', - }, - }, - }, - EnterpriseServerInstallationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseServerInstallationEdge]' }, - nodes: { __type: '[EnterpriseServerInstallation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseServerInstallationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseServerInstallation' }, - }, - EnterpriseServerInstallationOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseServerInstallationOrderField!' }, - }, - EnterpriseServerUserAccount: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - emails: { - __type: 'EnterpriseServerUserAccountEmailConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'EnterpriseServerUserAccountEmailOrder', - }, - }, - enterpriseServerInstallation: { __type: 'EnterpriseServerInstallation!' }, - id: { __type: 'ID!' }, - isSiteAdmin: { __type: 'Boolean!' }, - login: { __type: 'String!' }, - profileName: { __type: 'String' }, - remoteCreatedAt: { __type: 'DateTime!' }, - remoteUserId: { __type: 'Int!' }, - updatedAt: { __type: 'DateTime!' }, - }, - EnterpriseServerUserAccountConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseServerUserAccountEdge]' }, - nodes: { __type: '[EnterpriseServerUserAccount]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseServerUserAccountEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseServerUserAccount' }, - }, - EnterpriseServerUserAccountEmail: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - email: { __type: 'String!' }, - id: { __type: 'ID!' }, - isPrimary: { __type: 'Boolean!' }, - updatedAt: { __type: 'DateTime!' }, - userAccount: { __type: 'EnterpriseServerUserAccount!' }, - }, - EnterpriseServerUserAccountEmailConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseServerUserAccountEmailEdge]' }, - nodes: { __type: '[EnterpriseServerUserAccountEmail]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseServerUserAccountEmailEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseServerUserAccountEmail' }, - }, - EnterpriseServerUserAccountEmailOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseServerUserAccountEmailOrderField!' }, - }, - EnterpriseServerUserAccountOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseServerUserAccountOrderField!' }, - }, - EnterpriseServerUserAccountsUpload: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - enterprise: { __type: 'Enterprise!' }, - enterpriseServerInstallation: { __type: 'EnterpriseServerInstallation!' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - syncState: { __type: 'EnterpriseServerUserAccountsUploadSyncState!' }, - updatedAt: { __type: 'DateTime!' }, - }, - EnterpriseServerUserAccountsUploadConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseServerUserAccountsUploadEdge]' }, - nodes: { __type: '[EnterpriseServerUserAccountsUpload]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseServerUserAccountsUploadEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseServerUserAccountsUpload' }, - }, - EnterpriseServerUserAccountsUploadOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'EnterpriseServerUserAccountsUploadOrderField!' }, - }, - EnterpriseUserAccount: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - createdAt: { __type: 'DateTime!' }, - enterprise: { __type: 'Enterprise!' }, - id: { __type: 'ID!' }, - login: { __type: 'String!' }, - name: { __type: 'String' }, - organizations: { - __type: 'EnterpriseOrganizationMembershipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'OrganizationOrder', - query: 'String', - role: 'EnterpriseUserAccountMembershipRole', - }, - }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - user: { __type: 'User' }, - }, - EnterpriseUserAccountConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnterpriseUserAccountEdge]' }, - nodes: { __type: '[EnterpriseUserAccount]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnterpriseUserAccountEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'EnterpriseUserAccount' }, - }, - Environment: { - __typename: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - protectionRules: { - __type: 'DeploymentProtectionRuleConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - }, - EnvironmentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[EnvironmentEdge]' }, - nodes: { __type: '[Environment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - EnvironmentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Environment' }, - }, - ExternalIdentity: { - __typename: { __type: 'String!' }, - guid: { __type: 'String!' }, - id: { __type: 'ID!' }, - organizationInvitation: { __type: 'OrganizationInvitation' }, - samlIdentity: { __type: 'ExternalIdentitySamlAttributes' }, - scimIdentity: { __type: 'ExternalIdentityScimAttributes' }, - user: { __type: 'User' }, - }, - ExternalIdentityConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ExternalIdentityEdge]' }, - nodes: { __type: '[ExternalIdentity]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ExternalIdentityEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ExternalIdentity' }, - }, - ExternalIdentitySamlAttributes: { - __typename: { __type: 'String!' }, - emails: { __type: '[UserEmailMetadata!]' }, - familyName: { __type: 'String' }, - givenName: { __type: 'String' }, - groups: { __type: '[String!]' }, - nameId: { __type: 'String' }, - username: { __type: 'String' }, - }, - ExternalIdentityScimAttributes: { - __typename: { __type: 'String!' }, - emails: { __type: '[UserEmailMetadata!]' }, - familyName: { __type: 'String' }, - givenName: { __type: 'String' }, - groups: { __type: '[String!]' }, - username: { __type: 'String' }, - }, - FileAddition: { - contents: { __type: 'Base64String!' }, - path: { __type: 'String!' }, - }, - FileChanges: { - additions: { __type: '[FileAddition!]' }, - deletions: { __type: '[FileDeletion!]' }, - }, - FileDeletion: { path: { __type: 'String!' } }, - FollowUserInput: { - clientMutationId: { __type: 'String' }, - userId: { __type: 'ID!' }, - }, - FollowUserPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - user: { __type: 'User' }, - }, - FollowerConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[UserEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - FollowingConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[UserEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - FundingLink: { - __typename: { __type: 'String!' }, - platform: { __type: 'FundingPlatform!' }, - url: { __type: 'URI!' }, - }, - GenericHovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - }, - Gist: { - __typename: { __type: 'String!' }, - comments: { - __type: 'GistCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - createdAt: { __type: 'DateTime!' }, - description: { __type: 'String' }, - files: { - __type: '[GistFile]', - __args: { limit: 'Int', oid: 'GitObjectID' }, - }, - forks: { - __type: 'GistConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'GistOrder', - }, - }, - id: { __type: 'ID!' }, - isFork: { __type: 'Boolean!' }, - isPublic: { __type: 'Boolean!' }, - name: { __type: 'String!' }, - owner: { __type: 'RepositoryOwner' }, - pushedAt: { __type: 'DateTime' }, - resourcePath: { __type: 'URI!' }, - stargazerCount: { __type: 'Int!' }, - stargazers: { - __type: 'StargazerConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'StarOrder', - }, - }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerHasStarred: { __type: 'Boolean!' }, - }, - GistComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - gist: { __type: 'Gist!' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isMinimized: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - minimizedReason: { __type: 'String' }, - publishedAt: { __type: 'DateTime' }, - updatedAt: { __type: 'DateTime!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanMinimize: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - GistCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[GistCommentEdge]' }, - nodes: { __type: '[GistComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - GistCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'GistComment' }, - }, - GistConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[GistEdge]' }, - nodes: { __type: '[Gist]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - GistEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Gist' }, - }, - GistFile: { - __typename: { __type: 'String!' }, - encodedName: { __type: 'String' }, - encoding: { __type: 'String' }, - extension: { __type: 'String' }, - isImage: { __type: 'Boolean!' }, - isTruncated: { __type: 'Boolean!' }, - language: { __type: 'Language' }, - name: { __type: 'String' }, - size: { __type: 'Int' }, - text: { __type: 'String', __args: { truncate: 'Int' } }, - }, - GistOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'GistOrderField!' }, - }, - GitActor: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - date: { __type: 'GitTimestamp' }, - email: { __type: 'String' }, - name: { __type: 'String' }, - user: { __type: 'User' }, - }, - GitActorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[GitActorEdge]' }, - nodes: { __type: '[GitActor]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - GitActorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'GitActor' }, - }, - GitHubMetadata: { - __typename: { __type: 'String!' }, - gitHubServicesSha: { __type: 'GitObjectID!' }, - gitIpAddresses: { __type: '[String!]' }, - hookIpAddresses: { __type: '[String!]' }, - importerIpAddresses: { __type: '[String!]' }, - isPasswordAuthenticationVerifiable: { __type: 'Boolean!' }, - pagesIpAddresses: { __type: '[String!]' }, - }, - GitObject: { - __typename: { __type: 'String!' }, - abbreviatedOid: { __type: 'String!' }, - commitResourcePath: { __type: 'URI!' }, - commitUrl: { __type: 'URI!' }, - id: { __type: 'ID!' }, - oid: { __type: 'GitObjectID!' }, - repository: { __type: 'Repository!' }, - $on: { __type: '$GitObject!' }, - }, - GitSignature: { - __typename: { __type: 'String!' }, - email: { __type: 'String!' }, - isValid: { __type: 'Boolean!' }, - payload: { __type: 'String!' }, - signature: { __type: 'String!' }, - signer: { __type: 'User' }, - state: { __type: 'GitSignatureState!' }, - wasSignedByGitHub: { __type: 'Boolean!' }, - $on: { __type: '$GitSignature!' }, - }, - GpgSignature: { - __typename: { __type: 'String!' }, - email: { __type: 'String!' }, - isValid: { __type: 'Boolean!' }, - keyId: { __type: 'String' }, - payload: { __type: 'String!' }, - signature: { __type: 'String!' }, - signer: { __type: 'User' }, - state: { __type: 'GitSignatureState!' }, - wasSignedByGitHub: { __type: 'Boolean!' }, - }, - HeadRefDeletedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - headRef: { __type: 'Ref' }, - headRefName: { __type: 'String!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - HeadRefForcePushedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - afterCommit: { __type: 'Commit' }, - beforeCommit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - ref: { __type: 'Ref' }, - }, - HeadRefRestoredEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - Hovercard: { - __typename: { __type: 'String!' }, - contexts: { __type: '[HovercardContext!]!' }, - }, - HovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - $on: { __type: '$HovercardContext!' }, - }, - InviteEnterpriseAdminInput: { - clientMutationId: { __type: 'String' }, - email: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - invitee: { __type: 'String' }, - role: { __type: 'EnterpriseAdministratorRole' }, - }, - InviteEnterpriseAdminPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - invitation: { __type: 'EnterpriseAdministratorInvitation' }, - }, - IpAllowListEntry: { - __typename: { __type: 'String!' }, - allowListValue: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isActive: { __type: 'Boolean!' }, - name: { __type: 'String' }, - owner: { __type: 'IpAllowListOwner!' }, - updatedAt: { __type: 'DateTime!' }, - }, - IpAllowListEntryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[IpAllowListEntryEdge]' }, - nodes: { __type: '[IpAllowListEntry]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - IpAllowListEntryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'IpAllowListEntry' }, - }, - IpAllowListEntryOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'IpAllowListEntryOrderField!' }, - }, - IpAllowListOwner: { - __typename: { __type: 'String!' }, - $on: { __type: '$IpAllowListOwner!' }, - }, - Issue: { - __typename: { __type: 'String!' }, - activeLockReason: { __type: 'LockReason' }, - assignees: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyResourcePath: { __type: 'URI!' }, - bodyText: { __type: 'String!' }, - bodyUrl: { __type: 'URI!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - comments: { - __type: 'IssueCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IssueCommentOrder', - }, - }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - hovercard: { - __type: 'Hovercard!', - __args: { includeNotificationContexts: 'Boolean' }, - }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isPinned: { __type: 'Boolean' }, - isReadByViewer: { __type: 'Boolean' }, - labels: { - __type: 'LabelConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LabelOrder', - }, - }, - lastEditedAt: { __type: 'DateTime' }, - locked: { __type: 'Boolean!' }, - milestone: { __type: 'Milestone' }, - number: { __type: 'Int!' }, - participants: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - projectCards: { - __type: 'ProjectCardConnection!', - __args: { - after: 'String', - archivedStates: '[ProjectCardArchivedState]', - before: 'String', - first: 'Int', - last: 'Int', - }, - }, - projectNext: { __type: 'ProjectNext', __args: { number: 'Int!' } }, - projectsNext: { - __type: 'ProjectNextConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - sortBy: 'ProjectNextOrderField', - }, - }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'IssueState!' }, - timeline: { - __type: 'IssueTimelineConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - since: 'DateTime', - }, - }, - timelineItems: { - __type: 'IssueTimelineItemsConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - itemTypes: '[IssueTimelineItemsItemType!]', - last: 'Int', - since: 'DateTime', - skip: 'Int', - }, - }, - title: { __type: 'String!' }, - titleHTML: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - }, - IssueComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isMinimized: { __type: 'Boolean!' }, - issue: { __type: 'Issue!' }, - lastEditedAt: { __type: 'DateTime' }, - minimizedReason: { __type: 'String' }, - publishedAt: { __type: 'DateTime' }, - pullRequest: { __type: 'PullRequest' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanMinimize: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - IssueCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[IssueCommentEdge]' }, - nodes: { __type: '[IssueComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - IssueCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'IssueComment' }, - }, - IssueCommentOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'IssueCommentOrderField!' }, - }, - IssueConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[IssueEdge]' }, - nodes: { __type: '[Issue]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - IssueContributionsByRepository: { - __typename: { __type: 'String!' }, - contributions: { - __type: 'CreatedIssueContributionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - repository: { __type: 'Repository!' }, - }, - IssueEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Issue' }, - }, - IssueFilters: { - assignee: { __type: 'String' }, - createdBy: { __type: 'String' }, - labels: { __type: '[String!]' }, - mentioned: { __type: 'String' }, - milestone: { __type: 'String' }, - since: { __type: 'DateTime' }, - states: { __type: '[IssueState!]' }, - viewerSubscribed: { __type: 'Boolean' }, - }, - IssueOrPullRequest: { - __typename: { __type: 'String!' }, - $on: { __type: '$IssueOrPullRequest!' }, - }, - IssueOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'IssueOrderField!' }, - }, - IssueTemplate: { - __typename: { __type: 'String!' }, - about: { __type: 'String' }, - body: { __type: 'String' }, - name: { __type: 'String!' }, - title: { __type: 'String' }, - }, - IssueTimelineConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[IssueTimelineItemEdge]' }, - nodes: { __type: '[IssueTimelineItem]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - IssueTimelineItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$IssueTimelineItem!' }, - }, - IssueTimelineItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'IssueTimelineItem' }, - }, - IssueTimelineItems: { - __typename: { __type: 'String!' }, - $on: { __type: '$IssueTimelineItems!' }, - }, - IssueTimelineItemsConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[IssueTimelineItemsEdge]' }, - filteredCount: { __type: 'Int!' }, - nodes: { __type: '[IssueTimelineItems]' }, - pageCount: { __type: 'Int!' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - updatedAt: { __type: 'DateTime!' }, - }, - IssueTimelineItemsEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'IssueTimelineItems' }, - }, - JoinedGitHubContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - Label: { - __typename: { __type: 'String!' }, - color: { __type: 'String!' }, - createdAt: { __type: 'DateTime' }, - description: { __type: 'String' }, - id: { __type: 'ID!' }, - isDefault: { __type: 'Boolean!' }, - issues: { - __type: 'IssueConnection!', - __args: { - after: 'String', - before: 'String', - filterBy: 'IssueFilters', - first: 'Int', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[IssueState!]', - }, - }, - name: { __type: 'String!' }, - pullRequests: { - __type: 'PullRequestConnection!', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime' }, - url: { __type: 'URI!' }, - }, - LabelConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[LabelEdge]' }, - nodes: { __type: '[Label]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - LabelEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Label' }, - }, - LabelOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'LabelOrderField!' }, - }, - Labelable: { - __typename: { __type: 'String!' }, - labels: { - __type: 'LabelConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LabelOrder', - }, - }, - $on: { __type: '$Labelable!' }, - }, - LabeledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - label: { __type: 'Label!' }, - labelable: { __type: 'Labelable!' }, - }, - Language: { - __typename: { __type: 'String!' }, - color: { __type: 'String' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - }, - LanguageConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[LanguageEdge]' }, - nodes: { __type: '[Language]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - totalSize: { __type: 'Int!' }, - }, - LanguageEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Language!' }, - size: { __type: 'Int!' }, - }, - LanguageOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'LanguageOrderField!' }, - }, - License: { - __typename: { __type: 'String!' }, - body: { __type: 'String!' }, - conditions: { __type: '[LicenseRule]!' }, - description: { __type: 'String' }, - featured: { __type: 'Boolean!' }, - hidden: { __type: 'Boolean!' }, - id: { __type: 'ID!' }, - implementation: { __type: 'String' }, - key: { __type: 'String!' }, - limitations: { __type: '[LicenseRule]!' }, - name: { __type: 'String!' }, - nickname: { __type: 'String' }, - permissions: { __type: '[LicenseRule]!' }, - pseudoLicense: { __type: 'Boolean!' }, - spdxId: { __type: 'String' }, - url: { __type: 'URI' }, - }, - LicenseRule: { - __typename: { __type: 'String!' }, - description: { __type: 'String!' }, - key: { __type: 'String!' }, - label: { __type: 'String!' }, - }, - LinkRepositoryToProjectInput: { - clientMutationId: { __type: 'String' }, - projectId: { __type: 'ID!' }, - repositoryId: { __type: 'ID!' }, - }, - LinkRepositoryToProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - project: { __type: 'Project' }, - repository: { __type: 'Repository' }, - }, - LockLockableInput: { - clientMutationId: { __type: 'String' }, - lockReason: { __type: 'LockReason' }, - lockableId: { __type: 'ID!' }, - }, - LockLockablePayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - lockedRecord: { __type: 'Lockable' }, - }, - Lockable: { - __typename: { __type: 'String!' }, - activeLockReason: { __type: 'LockReason' }, - locked: { __type: 'Boolean!' }, - $on: { __type: '$Lockable!' }, - }, - LockedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - lockReason: { __type: 'LockReason' }, - lockable: { __type: 'Lockable!' }, - }, - Mannequin: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - claimant: { __type: 'User' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - email: { __type: 'String' }, - id: { __type: 'ID!' }, - login: { __type: 'String!' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - MarkDiscussionCommentAsAnswerInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - MarkDiscussionCommentAsAnswerPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussion: { __type: 'Discussion' }, - }, - MarkFileAsViewedInput: { - clientMutationId: { __type: 'String' }, - path: { __type: 'String!' }, - pullRequestId: { __type: 'ID!' }, - }, - MarkFileAsViewedPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - MarkPullRequestReadyForReviewInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - }, - MarkPullRequestReadyForReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - MarkedAsDuplicateEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - canonical: { __type: 'IssueOrPullRequest' }, - createdAt: { __type: 'DateTime!' }, - duplicate: { __type: 'IssueOrPullRequest' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - }, - MarketplaceCategory: { - __typename: { __type: 'String!' }, - description: { __type: 'String' }, - howItWorks: { __type: 'String' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - primaryListingCount: { __type: 'Int!' }, - resourcePath: { __type: 'URI!' }, - secondaryListingCount: { __type: 'Int!' }, - slug: { __type: 'String!' }, - url: { __type: 'URI!' }, - }, - MarketplaceListing: { - __typename: { __type: 'String!' }, - app: { __type: 'App' }, - companyUrl: { __type: 'URI' }, - configurationResourcePath: { __type: 'URI!' }, - configurationUrl: { __type: 'URI!' }, - documentationUrl: { __type: 'URI' }, - extendedDescription: { __type: 'String' }, - extendedDescriptionHTML: { __type: 'HTML!' }, - fullDescription: { __type: 'String!' }, - fullDescriptionHTML: { __type: 'HTML!' }, - hasPublishedFreeTrialPlans: { __type: 'Boolean!' }, - hasTermsOfService: { __type: 'Boolean!' }, - hasVerifiedOwner: { __type: 'Boolean!' }, - howItWorks: { __type: 'String' }, - howItWorksHTML: { __type: 'HTML!' }, - id: { __type: 'ID!' }, - installationUrl: { __type: 'URI' }, - installedForViewer: { __type: 'Boolean!' }, - isArchived: { __type: 'Boolean!' }, - isDraft: { __type: 'Boolean!' }, - isPaid: { __type: 'Boolean!' }, - isPublic: { __type: 'Boolean!' }, - isRejected: { __type: 'Boolean!' }, - isUnverified: { __type: 'Boolean!' }, - isUnverifiedPending: { __type: 'Boolean!' }, - isVerificationPendingFromDraft: { __type: 'Boolean!' }, - isVerificationPendingFromUnverified: { __type: 'Boolean!' }, - isVerified: { __type: 'Boolean!' }, - logoBackgroundColor: { __type: 'String!' }, - logoUrl: { __type: 'URI', __args: { size: 'Int' } }, - name: { __type: 'String!' }, - normalizedShortDescription: { __type: 'String!' }, - pricingUrl: { __type: 'URI' }, - primaryCategory: { __type: 'MarketplaceCategory!' }, - privacyPolicyUrl: { __type: 'URI!' }, - resourcePath: { __type: 'URI!' }, - screenshotUrls: { __type: '[String]!' }, - secondaryCategory: { __type: 'MarketplaceCategory' }, - shortDescription: { __type: 'String!' }, - slug: { __type: 'String!' }, - statusUrl: { __type: 'URI' }, - supportEmail: { __type: 'String' }, - supportUrl: { __type: 'URI!' }, - termsOfServiceUrl: { __type: 'URI' }, - url: { __type: 'URI!' }, - viewerCanAddPlans: { __type: 'Boolean!' }, - viewerCanApprove: { __type: 'Boolean!' }, - viewerCanDelist: { __type: 'Boolean!' }, - viewerCanEdit: { __type: 'Boolean!' }, - viewerCanEditCategories: { __type: 'Boolean!' }, - viewerCanEditPlans: { __type: 'Boolean!' }, - viewerCanRedraft: { __type: 'Boolean!' }, - viewerCanReject: { __type: 'Boolean!' }, - viewerCanRequestApproval: { __type: 'Boolean!' }, - viewerHasPurchased: { __type: 'Boolean!' }, - viewerHasPurchasedForAllOrganizations: { __type: 'Boolean!' }, - viewerIsListingAdmin: { __type: 'Boolean!' }, - }, - MarketplaceListingConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[MarketplaceListingEdge]' }, - nodes: { __type: '[MarketplaceListing]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - MarketplaceListingEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'MarketplaceListing' }, - }, - MemberStatusable: { - __typename: { __type: 'String!' }, - memberStatuses: { - __type: 'UserStatusConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'UserStatusOrder', - }, - }, - $on: { __type: '$MemberStatusable!' }, - }, - MembersCanDeleteReposClearAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - MembersCanDeleteReposDisableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - MembersCanDeleteReposEnableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - MentionedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - }, - MergeBranchInput: { - authorEmail: { __type: 'String' }, - base: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - commitMessage: { __type: 'String' }, - head: { __type: 'String!' }, - repositoryId: { __type: 'ID!' }, - }, - MergeBranchPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - mergeCommit: { __type: 'Commit' }, - }, - MergePullRequestInput: { - authorEmail: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - commitBody: { __type: 'String' }, - commitHeadline: { __type: 'String' }, - expectedHeadOid: { __type: 'GitObjectID' }, - mergeMethod: { __type: 'PullRequestMergeMethod' }, - pullRequestId: { __type: 'ID!' }, - }, - MergePullRequestPayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - MergedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - commit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - mergeRef: { __type: 'Ref' }, - mergeRefName: { __type: 'String!' }, - pullRequest: { __type: 'PullRequest!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - Milestone: { - __typename: { __type: 'String!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - description: { __type: 'String' }, - dueOn: { __type: 'DateTime' }, - id: { __type: 'ID!' }, - issues: { - __type: 'IssueConnection!', - __args: { - after: 'String', - before: 'String', - filterBy: 'IssueFilters', - first: 'Int', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[IssueState!]', - }, - }, - number: { __type: 'Int!' }, - progressPercentage: { __type: 'Float!' }, - pullRequests: { - __type: 'PullRequestConnection!', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'MilestoneState!' }, - title: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - MilestoneConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[MilestoneEdge]' }, - nodes: { __type: '[Milestone]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - MilestoneEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Milestone' }, - }, - MilestoneItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$MilestoneItem!' }, - }, - MilestoneOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'MilestoneOrderField!' }, - }, - MilestonedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - milestoneTitle: { __type: 'String!' }, - subject: { __type: 'MilestoneItem!' }, - }, - Minimizable: { - __typename: { __type: 'String!' }, - isMinimized: { __type: 'Boolean!' }, - minimizedReason: { __type: 'String' }, - viewerCanMinimize: { __type: 'Boolean!' }, - $on: { __type: '$Minimizable!' }, - }, - MinimizeCommentInput: { - classifier: { __type: 'ReportedContentClassifiers!' }, - clientMutationId: { __type: 'String' }, - subjectId: { __type: 'ID!' }, - }, - MinimizeCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - minimizedComment: { __type: 'Minimizable' }, - }, - MoveProjectCardInput: { - afterCardId: { __type: 'ID' }, - cardId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - columnId: { __type: 'ID!' }, - }, - MoveProjectCardPayload: { - __typename: { __type: 'String!' }, - cardEdge: { __type: 'ProjectCardEdge' }, - clientMutationId: { __type: 'String' }, - }, - MoveProjectColumnInput: { - afterColumnId: { __type: 'ID' }, - clientMutationId: { __type: 'String' }, - columnId: { __type: 'ID!' }, - }, - MoveProjectColumnPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - columnEdge: { __type: 'ProjectColumnEdge' }, - }, - MovedColumnsInProjectEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - }, - Node: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - $on: { __type: '$Node!' }, - }, - OIDCProvider: { - __typename: { __type: 'String!' }, - enterprise: { __type: 'Enterprise' }, - externalIdentities: { - __type: 'ExternalIdentityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - membersOnly: 'Boolean', - }, - }, - id: { __type: 'ID!' }, - providerType: { __type: 'OIDCProviderType!' }, - tenantId: { __type: 'String!' }, - }, - OauthApplicationAuditEntryData: { - __typename: { __type: 'String!' }, - oauthApplicationName: { __type: 'String' }, - oauthApplicationResourcePath: { __type: 'URI' }, - oauthApplicationUrl: { __type: 'URI' }, - $on: { __type: '$OauthApplicationAuditEntryData!' }, - }, - OauthApplicationCreateAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - applicationUrl: { __type: 'URI' }, - callbackUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - oauthApplicationName: { __type: 'String' }, - oauthApplicationResourcePath: { __type: 'URI' }, - oauthApplicationUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - rateLimit: { __type: 'Int' }, - state: { __type: 'OauthApplicationCreateAuditEntryState' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgAddBillingManagerAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - invitationEmail: { __type: 'String' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgAddMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - permission: { __type: 'OrgAddMemberAuditEntryPermission' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgBlockUserAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - blockedUser: { __type: 'User' }, - blockedUserName: { __type: 'String' }, - blockedUserResourcePath: { __type: 'URI' }, - blockedUserUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgConfigDisableCollaboratorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgConfigEnableCollaboratorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgCreateAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - billingPlan: { __type: 'OrgCreateAuditEntryBillingPlan' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgDisableOauthAppRestrictionsAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgDisableSamlAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - digestMethodUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - issuerUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - signatureMethodUrl: { __type: 'URI' }, - singleSignOnUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgDisableTwoFactorRequirementAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgEnableOauthAppRestrictionsAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgEnableSamlAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - digestMethodUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - issuerUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - signatureMethodUrl: { __type: 'URI' }, - singleSignOnUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgEnableTwoFactorRequirementAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgInviteMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - email: { __type: 'String' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationInvitation: { __type: 'OrganizationInvitation' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgInviteToBusinessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgOauthAppAccessApprovedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - oauthApplicationName: { __type: 'String' }, - oauthApplicationResourcePath: { __type: 'URI' }, - oauthApplicationUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgOauthAppAccessDeniedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - oauthApplicationName: { __type: 'String' }, - oauthApplicationResourcePath: { __type: 'URI' }, - oauthApplicationUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgOauthAppAccessRequestedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - oauthApplicationName: { __type: 'String' }, - oauthApplicationResourcePath: { __type: 'URI' }, - oauthApplicationUrl: { __type: 'URI' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgRemoveBillingManagerAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - reason: { __type: 'OrgRemoveBillingManagerAuditEntryReason' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgRemoveMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - membershipTypes: { __type: '[OrgRemoveMemberAuditEntryMembershipType!]' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - reason: { __type: 'OrgRemoveMemberAuditEntryReason' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgRemoveOutsideCollaboratorAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - membershipTypes: { - __type: '[OrgRemoveOutsideCollaboratorAuditEntryMembershipType!]', - }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - reason: { __type: 'OrgRemoveOutsideCollaboratorAuditEntryReason' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgRestoreMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - restoredCustomEmailRoutingsCount: { __type: 'Int' }, - restoredIssueAssignmentsCount: { __type: 'Int' }, - restoredMemberships: { __type: '[OrgRestoreMemberAuditEntryMembership!]' }, - restoredMembershipsCount: { __type: 'Int' }, - restoredRepositoriesCount: { __type: 'Int' }, - restoredRepositoryStarsCount: { __type: 'Int' }, - restoredRepositoryWatchesCount: { __type: 'Int' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgRestoreMemberAuditEntryMembership: { - __typename: { __type: 'String!' }, - $on: { __type: '$OrgRestoreMemberAuditEntryMembership!' }, - }, - OrgRestoreMemberMembershipOrganizationAuditEntryData: { - __typename: { __type: 'String!' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - }, - OrgRestoreMemberMembershipRepositoryAuditEntryData: { - __typename: { __type: 'String!' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - }, - OrgRestoreMemberMembershipTeamAuditEntryData: { - __typename: { __type: 'String!' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - }, - OrgUnblockUserAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - blockedUser: { __type: 'User' }, - blockedUserName: { __type: 'String' }, - blockedUserResourcePath: { __type: 'URI' }, - blockedUserUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgUpdateDefaultRepositoryPermissionAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - permission: { - __type: 'OrgUpdateDefaultRepositoryPermissionAuditEntryPermission', - }, - permissionWas: { - __type: 'OrgUpdateDefaultRepositoryPermissionAuditEntryPermission', - }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgUpdateMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - permission: { __type: 'OrgUpdateMemberAuditEntryPermission' }, - permissionWas: { __type: 'OrgUpdateMemberAuditEntryPermission' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - OrgUpdateMemberRepositoryCreationPermissionAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - canCreateRepositories: { __type: 'Boolean' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { - __type: 'OrgUpdateMemberRepositoryCreationPermissionAuditEntryVisibility', - }, - }, - OrgUpdateMemberRepositoryInvitationPermissionAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - canInviteOutsideCollaboratorsToRepositories: { __type: 'Boolean' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - Organization: { - __typename: { __type: 'String!' }, - anyPinnableItems: { - __type: 'Boolean!', - __args: { type: 'PinnableItemType' }, - }, - auditLog: { - __type: 'OrganizationAuditEntryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'AuditLogOrder', - query: 'String', - }, - }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - descriptionHTML: { __type: 'String' }, - domains: { - __type: 'VerifiableDomainConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - isApproved: 'Boolean', - isVerified: 'Boolean', - last: 'Int', - orderBy: 'VerifiableDomainOrder', - }, - }, - email: { __type: 'String' }, - estimatedNextSponsorsPayoutInCents: { __type: 'Int!' }, - hasSponsorsListing: { __type: 'Boolean!' }, - id: { __type: 'ID!' }, - interactionAbility: { __type: 'RepositoryInteractionAbility' }, - ipAllowListEnabledSetting: { __type: 'IpAllowListEnabledSettingValue!' }, - ipAllowListEntries: { - __type: 'IpAllowListEntryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IpAllowListEntryOrder', - }, - }, - ipAllowListForInstalledAppsEnabledSetting: { - __type: 'IpAllowListForInstalledAppsEnabledSettingValue!', - }, - isSponsoredBy: { __type: 'Boolean!', __args: { accountLogin: 'String!' } }, - isSponsoringViewer: { __type: 'Boolean!' }, - isVerified: { __type: 'Boolean!' }, - itemShowcase: { __type: 'ProfileItemShowcase!' }, - location: { __type: 'String' }, - login: { __type: 'String!' }, - memberStatuses: { - __type: 'UserStatusConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'UserStatusOrder', - }, - }, - membersCanForkPrivateRepositories: { __type: 'Boolean!' }, - membersWithRole: { - __type: 'OrganizationMemberConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - monthlyEstimatedSponsorsIncomeInCents: { __type: 'Int!' }, - name: { __type: 'String' }, - newTeamResourcePath: { __type: 'URI!' }, - newTeamUrl: { __type: 'URI!' }, - notificationDeliveryRestrictionEnabledSetting: { - __type: 'NotificationRestrictionSettingValue!', - }, - organizationBillingEmail: { __type: 'String' }, - packages: { - __type: 'PackageConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - names: '[String]', - orderBy: 'PackageOrder', - packageType: 'PackageType', - repositoryId: 'ID', - }, - }, - pendingMembers: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - pinnableItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItemsRemaining: { __type: 'Int!' }, - project: { __type: 'Project', __args: { number: 'Int!' } }, - projectNext: { __type: 'ProjectNext', __args: { number: 'Int!' } }, - projects: { - __type: 'ProjectConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ProjectOrder', - search: 'String', - states: '[ProjectState!]', - }, - }, - projectsNext: { - __type: 'ProjectNextConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - sortBy: 'ProjectNextOrderField', - }, - }, - projectsResourcePath: { __type: 'URI!' }, - projectsUrl: { __type: 'URI!' }, - repositories: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isFork: 'Boolean', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - }, - }, - repository: { - __type: 'Repository', - __args: { followRenames: 'Boolean', name: 'String!' }, - }, - repositoryDiscussionComments: { - __type: 'DiscussionCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - onlyAnswers: 'Boolean', - repositoryId: 'ID', - }, - }, - repositoryDiscussions: { - __type: 'DiscussionConnection!', - __args: { - after: 'String', - answered: 'Boolean', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'DiscussionOrder', - repositoryId: 'ID', - }, - }, - requiresTwoFactorAuthentication: { __type: 'Boolean' }, - resourcePath: { __type: 'URI!' }, - samlIdentityProvider: { __type: 'OrganizationIdentityProvider' }, - sponsoring: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - }, - }, - sponsors: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - tierId: 'ID', - }, - }, - sponsorsActivities: { - __type: 'SponsorsActivityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorsActivityOrder', - period: 'SponsorsActivityPeriod', - }, - }, - sponsorsListing: { __type: 'SponsorsListing' }, - sponsorshipForViewerAsSponsor: { __type: 'Sponsorship' }, - sponsorshipForViewerAsSponsorable: { __type: 'Sponsorship' }, - sponsorshipNewsletters: { - __type: 'SponsorshipNewsletterConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipNewsletterOrder', - }, - }, - sponsorshipsAsMaintainer: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - includePrivate: 'Boolean', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - sponsorshipsAsSponsor: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - team: { __type: 'Team', __args: { slug: 'String!' } }, - teams: { - __type: 'TeamConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - ldapMapped: 'Boolean', - orderBy: 'TeamOrder', - privacy: 'TeamPrivacy', - query: 'String', - role: 'TeamRole', - rootTeamsOnly: 'Boolean', - userLogins: '[String!]', - }, - }, - teamsResourcePath: { __type: 'URI!' }, - teamsUrl: { __type: 'URI!' }, - twitterUsername: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanAdminister: { __type: 'Boolean!' }, - viewerCanChangePinnedItems: { __type: 'Boolean!' }, - viewerCanCreateProjects: { __type: 'Boolean!' }, - viewerCanCreateRepositories: { __type: 'Boolean!' }, - viewerCanCreateTeams: { __type: 'Boolean!' }, - viewerCanSponsor: { __type: 'Boolean!' }, - viewerIsAMember: { __type: 'Boolean!' }, - viewerIsSponsoring: { __type: 'Boolean!' }, - websiteUrl: { __type: 'URI' }, - }, - OrganizationAuditEntry: { - __typename: { __type: 'String!' }, - $on: { __type: '$OrganizationAuditEntry!' }, - }, - OrganizationAuditEntryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[OrganizationAuditEntryEdge]' }, - nodes: { __type: '[OrganizationAuditEntry]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - OrganizationAuditEntryData: { - __typename: { __type: 'String!' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - $on: { __type: '$OrganizationAuditEntryData!' }, - }, - OrganizationAuditEntryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'OrganizationAuditEntry' }, - }, - OrganizationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[OrganizationEdge]' }, - nodes: { __type: '[Organization]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - OrganizationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Organization' }, - }, - OrganizationIdentityProvider: { - __typename: { __type: 'String!' }, - digestMethod: { __type: 'URI' }, - externalIdentities: { - __type: 'ExternalIdentityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - membersOnly: 'Boolean', - }, - }, - id: { __type: 'ID!' }, - idpCertificate: { __type: 'X509Certificate' }, - issuer: { __type: 'String' }, - organization: { __type: 'Organization' }, - signatureMethod: { __type: 'URI' }, - ssoUrl: { __type: 'URI' }, - }, - OrganizationInvitation: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - email: { __type: 'String' }, - id: { __type: 'ID!' }, - invitationType: { __type: 'OrganizationInvitationType!' }, - invitee: { __type: 'User' }, - inviter: { __type: 'User!' }, - organization: { __type: 'Organization!' }, - role: { __type: 'OrganizationInvitationRole!' }, - }, - OrganizationInvitationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[OrganizationInvitationEdge]' }, - nodes: { __type: '[OrganizationInvitation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - OrganizationInvitationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'OrganizationInvitation' }, - }, - OrganizationMemberConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[OrganizationMemberEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - OrganizationMemberEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - hasTwoFactorEnabled: { __type: 'Boolean' }, - node: { __type: 'User' }, - role: { __type: 'OrganizationMemberRole' }, - }, - OrganizationOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'OrganizationOrderField!' }, - }, - OrganizationTeamsHovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - relevantTeams: { - __type: 'TeamConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - teamsResourcePath: { __type: 'URI!' }, - teamsUrl: { __type: 'URI!' }, - totalTeamCount: { __type: 'Int!' }, - }, - OrganizationsHovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - relevantOrganizations: { - __type: 'OrganizationConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - totalOrganizationCount: { __type: 'Int!' }, - }, - Package: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - latestVersion: { __type: 'PackageVersion' }, - name: { __type: 'String!' }, - packageType: { __type: 'PackageType!' }, - repository: { __type: 'Repository' }, - statistics: { __type: 'PackageStatistics' }, - version: { __type: 'PackageVersion', __args: { version: 'String!' } }, - versions: { - __type: 'PackageVersionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'PackageVersionOrder', - }, - }, - }, - PackageConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PackageEdge]' }, - nodes: { __type: '[Package]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PackageEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Package' }, - }, - PackageFile: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - md5: { __type: 'String' }, - name: { __type: 'String!' }, - packageVersion: { __type: 'PackageVersion' }, - sha1: { __type: 'String' }, - sha256: { __type: 'String' }, - size: { __type: 'Int' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI' }, - }, - PackageFileConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PackageFileEdge]' }, - nodes: { __type: '[PackageFile]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PackageFileEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PackageFile' }, - }, - PackageFileOrder: { - direction: { __type: 'OrderDirection' }, - field: { __type: 'PackageFileOrderField' }, - }, - PackageOrder: { - direction: { __type: 'OrderDirection' }, - field: { __type: 'PackageOrderField' }, - }, - PackageOwner: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - packages: { - __type: 'PackageConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - names: '[String]', - orderBy: 'PackageOrder', - packageType: 'PackageType', - repositoryId: 'ID', - }, - }, - $on: { __type: '$PackageOwner!' }, - }, - PackageStatistics: { - __typename: { __type: 'String!' }, - downloadsTotalCount: { __type: 'Int!' }, - }, - PackageTag: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - version: { __type: 'PackageVersion' }, - }, - PackageVersion: { - __typename: { __type: 'String!' }, - files: { - __type: 'PackageFileConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'PackageFileOrder', - }, - }, - id: { __type: 'ID!' }, - package: { __type: 'Package' }, - platform: { __type: 'String' }, - preRelease: { __type: 'Boolean!' }, - readme: { __type: 'String' }, - release: { __type: 'Release' }, - statistics: { __type: 'PackageVersionStatistics' }, - summary: { __type: 'String' }, - version: { __type: 'String!' }, - }, - PackageVersionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PackageVersionEdge]' }, - nodes: { __type: '[PackageVersion]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PackageVersionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PackageVersion' }, - }, - PackageVersionOrder: { - direction: { __type: 'OrderDirection' }, - field: { __type: 'PackageVersionOrderField' }, - }, - PackageVersionStatistics: { - __typename: { __type: 'String!' }, - downloadsTotalCount: { __type: 'Int!' }, - }, - PageInfo: { - __typename: { __type: 'String!' }, - endCursor: { __type: 'String' }, - hasNextPage: { __type: 'Boolean!' }, - hasPreviousPage: { __type: 'Boolean!' }, - startCursor: { __type: 'String' }, - }, - PermissionGranter: { - __typename: { __type: 'String!' }, - $on: { __type: '$PermissionGranter!' }, - }, - PermissionSource: { - __typename: { __type: 'String!' }, - organization: { __type: 'Organization!' }, - permission: { __type: 'DefaultRepositoryPermissionField!' }, - source: { __type: 'PermissionGranter!' }, - }, - PinIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - }, - PinIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - PinnableItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$PinnableItem!' }, - }, - PinnableItemConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PinnableItemEdge]' }, - nodes: { __type: '[PinnableItem]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PinnableItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PinnableItem' }, - }, - PinnedDiscussion: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - discussion: { __type: 'Discussion!' }, - gradientStopColors: { __type: '[String!]!' }, - id: { __type: 'ID!' }, - pattern: { __type: 'PinnedDiscussionPattern!' }, - pinnedBy: { __type: 'Actor!' }, - preconfiguredGradient: { __type: 'PinnedDiscussionGradient' }, - repository: { __type: 'Repository!' }, - updatedAt: { __type: 'DateTime!' }, - }, - PinnedDiscussionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PinnedDiscussionEdge]' }, - nodes: { __type: '[PinnedDiscussion]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PinnedDiscussionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PinnedDiscussion' }, - }, - PinnedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - issue: { __type: 'Issue!' }, - }, - PinnedIssue: { - __typename: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - issue: { __type: 'Issue!' }, - pinnedBy: { __type: 'Actor!' }, - repository: { __type: 'Repository!' }, - }, - PinnedIssueConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PinnedIssueEdge]' }, - nodes: { __type: '[PinnedIssue]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PinnedIssueEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PinnedIssue' }, - }, - PrivateRepositoryForkingDisableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - PrivateRepositoryForkingEnableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - ProfileItemShowcase: { - __typename: { __type: 'String!' }, - hasPinnedItems: { __type: 'Boolean!' }, - items: { - __type: 'PinnableItemConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - }, - ProfileOwner: { - __typename: { __type: 'String!' }, - anyPinnableItems: { - __type: 'Boolean!', - __args: { type: 'PinnableItemType' }, - }, - email: { __type: 'String' }, - id: { __type: 'ID!' }, - itemShowcase: { __type: 'ProfileItemShowcase!' }, - location: { __type: 'String' }, - login: { __type: 'String!' }, - name: { __type: 'String' }, - pinnableItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItemsRemaining: { __type: 'Int!' }, - viewerCanChangePinnedItems: { __type: 'Boolean!' }, - websiteUrl: { __type: 'URI' }, - $on: { __type: '$ProfileOwner!' }, - }, - Project: { - __typename: { __type: 'String!' }, - body: { __type: 'String' }, - bodyHTML: { __type: 'HTML!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - columns: { - __type: 'ProjectColumnConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - number: { __type: 'Int!' }, - owner: { __type: 'ProjectOwner!' }, - pendingCards: { - __type: 'ProjectCardConnection!', - __args: { - after: 'String', - archivedStates: '[ProjectCardArchivedState]', - before: 'String', - first: 'Int', - last: 'Int', - }, - }, - progress: { __type: 'ProjectProgress!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'ProjectState!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - }, - ProjectCard: { - __typename: { __type: 'String!' }, - column: { __type: 'ProjectColumn' }, - content: { __type: 'ProjectCardItem' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - isArchived: { __type: 'Boolean!' }, - note: { __type: 'String' }, - project: { __type: 'Project!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'ProjectCardState' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - ProjectCardConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectCardEdge]' }, - nodes: { __type: '[ProjectCard]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectCardEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectCard' }, - }, - ProjectCardItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$ProjectCardItem!' }, - }, - ProjectColumn: { - __typename: { __type: 'String!' }, - cards: { - __type: 'ProjectCardConnection!', - __args: { - after: 'String', - archivedStates: '[ProjectCardArchivedState]', - before: 'String', - first: 'Int', - last: 'Int', - }, - }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - project: { __type: 'Project!' }, - purpose: { __type: 'ProjectColumnPurpose' }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - }, - ProjectColumnConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectColumnEdge]' }, - nodes: { __type: '[ProjectColumn]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectColumnEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectColumn' }, - }, - ProjectConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectEdge]' }, - nodes: { __type: '[Project]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Project' }, - }, - ProjectNext: { - __typename: { __type: 'String!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - fields: { - __type: 'ProjectNextFieldConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - id: { __type: 'ID!' }, - items: { - __type: 'ProjectNextItemConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - number: { __type: 'Int!' }, - owner: { __type: 'ProjectNextOwner!' }, - resourcePath: { __type: 'URI!' }, - title: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - }, - ProjectNextConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectNextEdge]' }, - nodes: { __type: '[ProjectNext]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectNextEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectNext' }, - }, - ProjectNextField: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - project: { __type: 'ProjectNext!' }, - settings: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - }, - ProjectNextFieldConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectNextFieldEdge]' }, - nodes: { __type: '[ProjectNextField]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectNextFieldEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectNextField' }, - }, - ProjectNextItem: { - __typename: { __type: 'String!' }, - content: { __type: 'ProjectNextItemContent' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - fieldValues: { - __type: 'ProjectNextItemFieldValueConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - id: { __type: 'ID!' }, - project: { __type: 'ProjectNext!' }, - title: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - }, - ProjectNextItemConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectNextItemEdge]' }, - nodes: { __type: '[ProjectNextItem]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectNextItemContent: { - __typename: { __type: 'String!' }, - $on: { __type: '$ProjectNextItemContent!' }, - }, - ProjectNextItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectNextItem' }, - }, - ProjectNextItemFieldValue: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - projectField: { __type: 'ProjectNextField!' }, - projectItem: { __type: 'ProjectNextItem!' }, - updatedAt: { __type: 'DateTime!' }, - value: { __type: 'String' }, - }, - ProjectNextItemFieldValueConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ProjectNextItemFieldValueEdge]' }, - nodes: { __type: '[ProjectNextItemFieldValue]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ProjectNextItemFieldValueEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ProjectNextItemFieldValue' }, - }, - ProjectNextOwner: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - projectNext: { __type: 'ProjectNext', __args: { number: 'Int!' } }, - projectsNext: { - __type: 'ProjectNextConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - sortBy: 'ProjectNextOrderField', - }, - }, - $on: { __type: '$ProjectNextOwner!' }, - }, - ProjectOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'ProjectOrderField!' }, - }, - ProjectOwner: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - project: { __type: 'Project', __args: { number: 'Int!' } }, - projects: { - __type: 'ProjectConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ProjectOrder', - search: 'String', - states: '[ProjectState!]', - }, - }, - projectsResourcePath: { __type: 'URI!' }, - projectsUrl: { __type: 'URI!' }, - viewerCanCreateProjects: { __type: 'Boolean!' }, - $on: { __type: '$ProjectOwner!' }, - }, - ProjectProgress: { - __typename: { __type: 'String!' }, - doneCount: { __type: 'Int!' }, - donePercentage: { __type: 'Float!' }, - enabled: { __type: 'Boolean!' }, - inProgressCount: { __type: 'Int!' }, - inProgressPercentage: { __type: 'Float!' }, - todoCount: { __type: 'Int!' }, - todoPercentage: { __type: 'Float!' }, - }, - PublicKey: { - __typename: { __type: 'String!' }, - accessedAt: { __type: 'DateTime' }, - createdAt: { __type: 'DateTime' }, - fingerprint: { __type: 'String!' }, - id: { __type: 'ID!' }, - isReadOnly: { __type: 'Boolean' }, - key: { __type: 'String!' }, - updatedAt: { __type: 'DateTime' }, - }, - PublicKeyConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PublicKeyEdge]' }, - nodes: { __type: '[PublicKey]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PublicKeyEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PublicKey' }, - }, - PullRequest: { - __typename: { __type: 'String!' }, - activeLockReason: { __type: 'LockReason' }, - additions: { __type: 'Int!' }, - assignees: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - autoMergeRequest: { __type: 'AutoMergeRequest' }, - baseRef: { __type: 'Ref' }, - baseRefName: { __type: 'String!' }, - baseRefOid: { __type: 'GitObjectID!' }, - baseRepository: { __type: 'Repository' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - changedFiles: { __type: 'Int!' }, - checksResourcePath: { __type: 'URI!' }, - checksUrl: { __type: 'URI!' }, - closed: { __type: 'Boolean!' }, - closedAt: { __type: 'DateTime' }, - closingIssuesReferences: { - __type: 'IssueConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IssueOrder', - }, - }, - comments: { - __type: 'IssueCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IssueCommentOrder', - }, - }, - commits: { - __type: 'PullRequestCommitConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - deletions: { __type: 'Int!' }, - editor: { __type: 'Actor' }, - files: { - __type: 'PullRequestChangedFileConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - headRef: { __type: 'Ref' }, - headRefName: { __type: 'String!' }, - headRefOid: { __type: 'GitObjectID!' }, - headRepository: { __type: 'Repository' }, - headRepositoryOwner: { __type: 'RepositoryOwner' }, - hovercard: { - __type: 'Hovercard!', - __args: { includeNotificationContexts: 'Boolean' }, - }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isCrossRepository: { __type: 'Boolean!' }, - isDraft: { __type: 'Boolean!' }, - isReadByViewer: { __type: 'Boolean' }, - labels: { - __type: 'LabelConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LabelOrder', - }, - }, - lastEditedAt: { __type: 'DateTime' }, - latestOpinionatedReviews: { - __type: 'PullRequestReviewConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - writersOnly: 'Boolean', - }, - }, - latestReviews: { - __type: 'PullRequestReviewConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - locked: { __type: 'Boolean!' }, - maintainerCanModify: { __type: 'Boolean!' }, - mergeCommit: { __type: 'Commit' }, - mergeable: { __type: 'MergeableState!' }, - merged: { __type: 'Boolean!' }, - mergedAt: { __type: 'DateTime' }, - mergedBy: { __type: 'Actor' }, - milestone: { __type: 'Milestone' }, - number: { __type: 'Int!' }, - participants: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - permalink: { __type: 'URI!' }, - potentialMergeCommit: { __type: 'Commit' }, - projectCards: { - __type: 'ProjectCardConnection!', - __args: { - after: 'String', - archivedStates: '[ProjectCardArchivedState]', - before: 'String', - first: 'Int', - last: 'Int', - }, - }, - projectNext: { __type: 'ProjectNext', __args: { number: 'Int!' } }, - projectsNext: { - __type: 'ProjectNextConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - sortBy: 'ProjectNextOrderField', - }, - }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - revertResourcePath: { __type: 'URI!' }, - revertUrl: { __type: 'URI!' }, - reviewDecision: { __type: 'PullRequestReviewDecision' }, - reviewRequests: { - __type: 'ReviewRequestConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - reviewThreads: { - __type: 'PullRequestReviewThreadConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - reviews: { - __type: 'PullRequestReviewConnection', - __args: { - after: 'String', - author: 'String', - before: 'String', - first: 'Int', - last: 'Int', - states: '[PullRequestReviewState!]', - }, - }, - state: { __type: 'PullRequestState!' }, - suggestedReviewers: { __type: '[SuggestedReviewer]!' }, - timeline: { - __type: 'PullRequestTimelineConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - since: 'DateTime', - }, - }, - timelineItems: { - __type: 'PullRequestTimelineItemsConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - itemTypes: '[PullRequestTimelineItemsItemType!]', - last: 'Int', - since: 'DateTime', - skip: 'Int', - }, - }, - title: { __type: 'String!' }, - titleHTML: { __type: 'HTML!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanApplySuggestion: { __type: 'Boolean!' }, - viewerCanDeleteHeadRef: { __type: 'Boolean!' }, - viewerCanDisableAutoMerge: { __type: 'Boolean!' }, - viewerCanEnableAutoMerge: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - viewerLatestReview: { __type: 'PullRequestReview' }, - viewerLatestReviewRequest: { __type: 'ReviewRequest' }, - viewerMergeBodyText: { - __type: 'String!', - __args: { mergeType: 'PullRequestMergeMethod' }, - }, - viewerMergeHeadlineText: { - __type: 'String!', - __args: { mergeType: 'PullRequestMergeMethod' }, - }, - viewerSubscription: { __type: 'SubscriptionState' }, - }, - PullRequestChangedFile: { - __typename: { __type: 'String!' }, - additions: { __type: 'Int!' }, - deletions: { __type: 'Int!' }, - path: { __type: 'String!' }, - viewerViewedState: { __type: 'FileViewedState!' }, - }, - PullRequestChangedFileConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestChangedFileEdge]' }, - nodes: { __type: '[PullRequestChangedFile]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestChangedFileEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestChangedFile' }, - }, - PullRequestCommit: { - __typename: { __type: 'String!' }, - commit: { __type: 'Commit!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - PullRequestCommitCommentThread: { - __typename: { __type: 'String!' }, - comments: { - __type: 'CommitCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - commit: { __type: 'Commit!' }, - id: { __type: 'ID!' }, - path: { __type: 'String' }, - position: { __type: 'Int' }, - pullRequest: { __type: 'PullRequest!' }, - repository: { __type: 'Repository!' }, - }, - PullRequestCommitConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestCommitEdge]' }, - nodes: { __type: '[PullRequestCommit]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestCommitEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestCommit' }, - }, - PullRequestConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestEdge]' }, - nodes: { __type: '[PullRequest]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestContributionsByRepository: { - __typename: { __type: 'String!' }, - contributions: { - __type: 'CreatedPullRequestContributionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - repository: { __type: 'Repository!' }, - }, - PullRequestEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequest' }, - }, - PullRequestOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'PullRequestOrderField!' }, - }, - PullRequestReview: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - authorCanPushToRepository: { __type: 'Boolean!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - comments: { - __type: 'PullRequestReviewCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - commit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - onBehalfOf: { - __type: 'TeamConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - publishedAt: { __type: 'DateTime' }, - pullRequest: { __type: 'PullRequest!' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'PullRequestReviewState!' }, - submittedAt: { __type: 'DateTime' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - PullRequestReviewComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - commit: { __type: 'Commit' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - diffHunk: { __type: 'String!' }, - draftedAt: { __type: 'DateTime!' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isMinimized: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - minimizedReason: { __type: 'String' }, - originalCommit: { __type: 'Commit' }, - originalPosition: { __type: 'Int!' }, - outdated: { __type: 'Boolean!' }, - path: { __type: 'String!' }, - position: { __type: 'Int' }, - publishedAt: { __type: 'DateTime' }, - pullRequest: { __type: 'PullRequest!' }, - pullRequestReview: { __type: 'PullRequestReview' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - replyTo: { __type: 'PullRequestReviewComment' }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - state: { __type: 'PullRequestReviewCommentState!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanMinimize: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - PullRequestReviewCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestReviewCommentEdge]' }, - nodes: { __type: '[PullRequestReviewComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestReviewCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestReviewComment' }, - }, - PullRequestReviewConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestReviewEdge]' }, - nodes: { __type: '[PullRequestReview]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestReviewContributionsByRepository: { - __typename: { __type: 'String!' }, - contributions: { - __type: 'CreatedPullRequestReviewContributionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ContributionOrder', - }, - }, - repository: { __type: 'Repository!' }, - }, - PullRequestReviewEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestReview' }, - }, - PullRequestReviewThread: { - __typename: { __type: 'String!' }, - comments: { - __type: 'PullRequestReviewCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - skip: 'Int', - }, - }, - diffSide: { __type: 'DiffSide!' }, - id: { __type: 'ID!' }, - isCollapsed: { __type: 'Boolean!' }, - isOutdated: { __type: 'Boolean!' }, - isResolved: { __type: 'Boolean!' }, - line: { __type: 'Int' }, - originalLine: { __type: 'Int' }, - originalStartLine: { __type: 'Int' }, - path: { __type: 'String!' }, - pullRequest: { __type: 'PullRequest!' }, - repository: { __type: 'Repository!' }, - resolvedBy: { __type: 'User' }, - startDiffSide: { __type: 'DiffSide' }, - startLine: { __type: 'Int' }, - viewerCanReply: { __type: 'Boolean!' }, - viewerCanResolve: { __type: 'Boolean!' }, - viewerCanUnresolve: { __type: 'Boolean!' }, - }, - PullRequestReviewThreadConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestReviewThreadEdge]' }, - nodes: { __type: '[PullRequestReviewThread]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestReviewThreadEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestReviewThread' }, - }, - PullRequestRevisionMarker: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - lastSeenCommit: { __type: 'Commit!' }, - pullRequest: { __type: 'PullRequest!' }, - }, - PullRequestTemplate: { - __typename: { __type: 'String!' }, - body: { __type: 'String' }, - filename: { __type: 'String' }, - repository: { __type: 'Repository!' }, - }, - PullRequestTimelineConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestTimelineItemEdge]' }, - nodes: { __type: '[PullRequestTimelineItem]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PullRequestTimelineItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$PullRequestTimelineItem!' }, - }, - PullRequestTimelineItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestTimelineItem' }, - }, - PullRequestTimelineItems: { - __typename: { __type: 'String!' }, - $on: { __type: '$PullRequestTimelineItems!' }, - }, - PullRequestTimelineItemsConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PullRequestTimelineItemsEdge]' }, - filteredCount: { __type: 'Int!' }, - nodes: { __type: '[PullRequestTimelineItems]' }, - pageCount: { __type: 'Int!' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - updatedAt: { __type: 'DateTime!' }, - }, - PullRequestTimelineItemsEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PullRequestTimelineItems' }, - }, - Push: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - nextSha: { __type: 'GitObjectID' }, - permalink: { __type: 'URI!' }, - previousSha: { __type: 'GitObjectID' }, - pusher: { __type: 'Actor!' }, - repository: { __type: 'Repository!' }, - }, - PushAllowance: { - __typename: { __type: 'String!' }, - actor: { __type: 'PushAllowanceActor' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - id: { __type: 'ID!' }, - }, - PushAllowanceActor: { - __typename: { __type: 'String!' }, - $on: { __type: '$PushAllowanceActor!' }, - }, - PushAllowanceConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[PushAllowanceEdge]' }, - nodes: { __type: '[PushAllowance]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - PushAllowanceEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'PushAllowance' }, - }, - RateLimit: { - __typename: { __type: 'String!' }, - cost: { __type: 'Int!' }, - limit: { __type: 'Int!' }, - nodeCount: { __type: 'Int!' }, - remaining: { __type: 'Int!' }, - resetAt: { __type: 'DateTime!' }, - used: { __type: 'Int!' }, - }, - Reactable: { - __typename: { __type: 'String!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - viewerCanReact: { __type: 'Boolean!' }, - $on: { __type: '$Reactable!' }, - }, - ReactingUserConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReactingUserEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReactingUserEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'User!' }, - reactedAt: { __type: 'DateTime!' }, - }, - Reaction: { - __typename: { __type: 'String!' }, - content: { __type: 'ReactionContent!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - reactable: { __type: 'Reactable!' }, - user: { __type: 'User' }, - }, - ReactionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReactionEdge]' }, - nodes: { __type: '[Reaction]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - viewerHasReacted: { __type: 'Boolean!' }, - }, - ReactionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Reaction' }, - }, - ReactionGroup: { - __typename: { __type: 'String!' }, - content: { __type: 'ReactionContent!' }, - createdAt: { __type: 'DateTime' }, - reactors: { - __type: 'ReactorConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - subject: { __type: 'Reactable!' }, - users: { - __type: 'ReactingUserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerHasReacted: { __type: 'Boolean!' }, - }, - ReactionOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'ReactionOrderField!' }, - }, - Reactor: { __typename: { __type: 'String!' }, $on: { __type: '$Reactor!' } }, - ReactorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReactorEdge]' }, - nodes: { __type: '[Reactor]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReactorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Reactor!' }, - reactedAt: { __type: 'DateTime!' }, - }, - ReadyForReviewEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - }, - Ref: { - __typename: { __type: 'String!' }, - associatedPullRequests: { - __type: 'PullRequestConnection!', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - prefix: { __type: 'String!' }, - refUpdateRule: { __type: 'RefUpdateRule' }, - repository: { __type: 'Repository!' }, - target: { __type: 'GitObject' }, - }, - RefConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RefEdge]' }, - nodes: { __type: '[Ref]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - RefEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Ref' }, - }, - RefOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'RefOrderField!' }, - }, - RefUpdateRule: { - __typename: { __type: 'String!' }, - allowsDeletions: { __type: 'Boolean!' }, - allowsForcePushes: { __type: 'Boolean!' }, - pattern: { __type: 'String!' }, - requiredApprovingReviewCount: { __type: 'Int' }, - requiredStatusCheckContexts: { __type: '[String]' }, - requiresCodeOwnerReviews: { __type: 'Boolean!' }, - requiresConversationResolution: { __type: 'Boolean!' }, - requiresLinearHistory: { __type: 'Boolean!' }, - requiresSignatures: { __type: 'Boolean!' }, - viewerAllowedToDismissReviews: { __type: 'Boolean!' }, - viewerCanPush: { __type: 'Boolean!' }, - }, - ReferencedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - commit: { __type: 'Commit' }, - commitRepository: { __type: 'Repository!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - isDirectReference: { __type: 'Boolean!' }, - subject: { __type: 'ReferencedSubject!' }, - }, - ReferencedSubject: { - __typename: { __type: 'String!' }, - $on: { __type: '$ReferencedSubject!' }, - }, - RegenerateEnterpriseIdentityProviderRecoveryCodesInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - }, - RegenerateEnterpriseIdentityProviderRecoveryCodesPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - identityProvider: { __type: 'EnterpriseIdentityProvider' }, - }, - RegenerateVerifiableDomainTokenInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - RegenerateVerifiableDomainTokenPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - verificationToken: { __type: 'String' }, - }, - RejectDeploymentsInput: { - clientMutationId: { __type: 'String' }, - comment: { __type: 'String' }, - environmentIds: { __type: '[ID!]!' }, - workflowRunId: { __type: 'ID!' }, - }, - RejectDeploymentsPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - deployments: { __type: '[Deployment!]' }, - }, - Release: { - __typename: { __type: 'String!' }, - author: { __type: 'User' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - descriptionHTML: { __type: 'HTML' }, - id: { __type: 'ID!' }, - isDraft: { __type: 'Boolean!' }, - isLatest: { __type: 'Boolean!' }, - isPrerelease: { __type: 'Boolean!' }, - mentions: { - __type: 'UserConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - name: { __type: 'String' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - releaseAssets: { - __type: 'ReleaseAssetConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - name: 'String', - }, - }, - repository: { __type: 'Repository!' }, - resourcePath: { __type: 'URI!' }, - shortDescriptionHTML: { __type: 'HTML', __args: { limit: 'Int' } }, - tag: { __type: 'Ref' }, - tagCommit: { __type: 'Commit' }, - tagName: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanReact: { __type: 'Boolean!' }, - }, - ReleaseAsset: { - __typename: { __type: 'String!' }, - contentType: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - downloadCount: { __type: 'Int!' }, - downloadUrl: { __type: 'URI!' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - release: { __type: 'Release' }, - size: { __type: 'Int!' }, - updatedAt: { __type: 'DateTime!' }, - uploadedBy: { __type: 'User!' }, - url: { __type: 'URI!' }, - }, - ReleaseAssetConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReleaseAssetEdge]' }, - nodes: { __type: '[ReleaseAsset]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReleaseAssetEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ReleaseAsset' }, - }, - ReleaseConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReleaseEdge]' }, - nodes: { __type: '[Release]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReleaseEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Release' }, - }, - ReleaseOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'ReleaseOrderField!' }, - }, - RemoveAssigneesFromAssignableInput: { - assignableId: { __type: 'ID!' }, - assigneeIds: { __type: '[ID!]!' }, - clientMutationId: { __type: 'String' }, - }, - RemoveAssigneesFromAssignablePayload: { - __typename: { __type: 'String!' }, - assignable: { __type: 'Assignable' }, - clientMutationId: { __type: 'String' }, - }, - RemoveEnterpriseAdminInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - login: { __type: 'String!' }, - }, - RemoveEnterpriseAdminPayload: { - __typename: { __type: 'String!' }, - admin: { __type: 'User' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - viewer: { __type: 'User' }, - }, - RemoveEnterpriseIdentityProviderInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - }, - RemoveEnterpriseIdentityProviderPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - identityProvider: { __type: 'EnterpriseIdentityProvider' }, - }, - RemoveEnterpriseOrganizationInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - organizationId: { __type: 'ID!' }, - }, - RemoveEnterpriseOrganizationPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - organization: { __type: 'Organization' }, - viewer: { __type: 'User' }, - }, - RemoveEnterpriseSupportEntitlementInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - login: { __type: 'String!' }, - }, - RemoveEnterpriseSupportEntitlementPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - message: { __type: 'String' }, - }, - RemoveLabelsFromLabelableInput: { - clientMutationId: { __type: 'String' }, - labelIds: { __type: '[ID!]!' }, - labelableId: { __type: 'ID!' }, - }, - RemoveLabelsFromLabelablePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - labelable: { __type: 'Labelable' }, - }, - RemoveOutsideCollaboratorInput: { - clientMutationId: { __type: 'String' }, - organizationId: { __type: 'ID!' }, - userId: { __type: 'ID!' }, - }, - RemoveOutsideCollaboratorPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - removedUser: { __type: 'User' }, - }, - RemoveReactionInput: { - clientMutationId: { __type: 'String' }, - content: { __type: 'ReactionContent!' }, - subjectId: { __type: 'ID!' }, - }, - RemoveReactionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - reaction: { __type: 'Reaction' }, - subject: { __type: 'Reactable' }, - }, - RemoveStarInput: { - clientMutationId: { __type: 'String' }, - starrableId: { __type: 'ID!' }, - }, - RemoveStarPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - starrable: { __type: 'Starrable' }, - }, - RemoveUpvoteInput: { - clientMutationId: { __type: 'String' }, - subjectId: { __type: 'ID!' }, - }, - RemoveUpvotePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - subject: { __type: 'Votable' }, - }, - RemovedFromProjectEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - }, - RenamedTitleEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - currentTitle: { __type: 'String!' }, - id: { __type: 'ID!' }, - previousTitle: { __type: 'String!' }, - subject: { __type: 'RenamedTitleSubject!' }, - }, - RenamedTitleSubject: { - __typename: { __type: 'String!' }, - $on: { __type: '$RenamedTitleSubject!' }, - }, - ReopenIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - }, - ReopenIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - ReopenPullRequestInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - }, - ReopenPullRequestPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - ReopenedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - closable: { __type: 'Closable!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - }, - RepoAccessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoAccessAuditEntryVisibility' }, - }, - RepoAddMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoAddMemberAuditEntryVisibility' }, - }, - RepoAddTopicAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - topic: { __type: 'Topic' }, - topicName: { __type: 'String' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoArchivedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoArchivedAuditEntryVisibility' }, - }, - RepoChangeMergeSettingAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isEnabled: { __type: 'Boolean' }, - mergeType: { __type: 'RepoChangeMergeSettingAuditEntryMergeType' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigDisableAnonymousGitAccessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigDisableCollaboratorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigDisableContributorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigDisableSockpuppetDisallowedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigEnableAnonymousGitAccessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigEnableCollaboratorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigEnableContributorsOnlyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigEnableSockpuppetDisallowedAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigLockAnonymousGitAccessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoConfigUnlockAnonymousGitAccessAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepoCreateAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - forkParentName: { __type: 'String' }, - forkSourceName: { __type: 'String' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoCreateAuditEntryVisibility' }, - }, - RepoDestroyAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoDestroyAuditEntryVisibility' }, - }, - RepoRemoveMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - visibility: { __type: 'RepoRemoveMemberAuditEntryVisibility' }, - }, - RepoRemoveTopicAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - topic: { __type: 'Topic' }, - topicName: { __type: 'String' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - Repository: { - __typename: { __type: 'String!' }, - assignableUsers: { - __type: 'UserConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - }, - }, - autoMergeAllowed: { __type: 'Boolean!' }, - branchProtectionRules: { - __type: 'BranchProtectionRuleConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - codeOfConduct: { __type: 'CodeOfConduct' }, - collaborators: { - __type: 'RepositoryCollaboratorConnection', - __args: { - affiliation: 'CollaboratorAffiliation', - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - }, - }, - commitComments: { - __type: 'CommitCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - contactLinks: { __type: '[RepositoryContactLink!]' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - defaultBranchRef: { __type: 'Ref' }, - deleteBranchOnMerge: { __type: 'Boolean!' }, - deployKeys: { - __type: 'DeployKeyConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - deployments: { - __type: 'DeploymentConnection!', - __args: { - after: 'String', - before: 'String', - environments: '[String!]', - first: 'Int', - last: 'Int', - orderBy: 'DeploymentOrder', - }, - }, - description: { __type: 'String' }, - descriptionHTML: { __type: 'HTML!' }, - discussion: { __type: 'Discussion', __args: { number: 'Int!' } }, - discussionCategories: { - __type: 'DiscussionCategoryConnection!', - __args: { - after: 'String', - before: 'String', - filterByAssignable: 'Boolean', - first: 'Int', - last: 'Int', - }, - }, - discussions: { - __type: 'DiscussionConnection!', - __args: { - after: 'String', - before: 'String', - categoryId: 'ID', - first: 'Int', - last: 'Int', - orderBy: 'DiscussionOrder', - }, - }, - diskUsage: { __type: 'Int' }, - environment: { __type: 'Environment', __args: { name: 'String!' } }, - environments: { - __type: 'EnvironmentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - forkCount: { __type: 'Int!' }, - forkingAllowed: { __type: 'Boolean!' }, - forks: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - }, - }, - fundingLinks: { __type: '[FundingLink!]!' }, - hasIssuesEnabled: { __type: 'Boolean!' }, - hasProjectsEnabled: { __type: 'Boolean!' }, - hasWikiEnabled: { __type: 'Boolean!' }, - homepageUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - interactionAbility: { __type: 'RepositoryInteractionAbility' }, - isArchived: { __type: 'Boolean!' }, - isBlankIssuesEnabled: { __type: 'Boolean!' }, - isDisabled: { __type: 'Boolean!' }, - isEmpty: { __type: 'Boolean!' }, - isFork: { __type: 'Boolean!' }, - isInOrganization: { __type: 'Boolean!' }, - isLocked: { __type: 'Boolean!' }, - isMirror: { __type: 'Boolean!' }, - isPrivate: { __type: 'Boolean!' }, - isSecurityPolicyEnabled: { __type: 'Boolean' }, - isTemplate: { __type: 'Boolean!' }, - isUserConfigurationRepository: { __type: 'Boolean!' }, - issue: { __type: 'Issue', __args: { number: 'Int!' } }, - issueOrPullRequest: { - __type: 'IssueOrPullRequest', - __args: { number: 'Int!' }, - }, - issueTemplates: { __type: '[IssueTemplate!]' }, - issues: { - __type: 'IssueConnection!', - __args: { - after: 'String', - before: 'String', - filterBy: 'IssueFilters', - first: 'Int', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[IssueState!]', - }, - }, - label: { __type: 'Label', __args: { name: 'String!' } }, - labels: { - __type: 'LabelConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LabelOrder', - query: 'String', - }, - }, - languages: { - __type: 'LanguageConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'LanguageOrder', - }, - }, - latestRelease: { __type: 'Release' }, - licenseInfo: { __type: 'License' }, - lockReason: { __type: 'RepositoryLockReason' }, - mentionableUsers: { - __type: 'UserConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - }, - }, - mergeCommitAllowed: { __type: 'Boolean!' }, - milestone: { __type: 'Milestone', __args: { number: 'Int!' } }, - milestones: { - __type: 'MilestoneConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'MilestoneOrder', - query: 'String', - states: '[MilestoneState!]', - }, - }, - mirrorUrl: { __type: 'URI' }, - name: { __type: 'String!' }, - nameWithOwner: { __type: 'String!' }, - object: { - __type: 'GitObject', - __args: { expression: 'String', oid: 'GitObjectID' }, - }, - openGraphImageUrl: { __type: 'URI!' }, - owner: { __type: 'RepositoryOwner!' }, - packages: { - __type: 'PackageConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - names: '[String]', - orderBy: 'PackageOrder', - packageType: 'PackageType', - repositoryId: 'ID', - }, - }, - parent: { __type: 'Repository' }, - pinnedDiscussions: { - __type: 'PinnedDiscussionConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - pinnedIssues: { - __type: 'PinnedIssueConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - primaryLanguage: { __type: 'Language' }, - project: { __type: 'Project', __args: { number: 'Int!' } }, - projects: { - __type: 'ProjectConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ProjectOrder', - search: 'String', - states: '[ProjectState!]', - }, - }, - projectsResourcePath: { __type: 'URI!' }, - projectsUrl: { __type: 'URI!' }, - pullRequest: { __type: 'PullRequest', __args: { number: 'Int!' } }, - pullRequestTemplates: { __type: '[PullRequestTemplate!]' }, - pullRequests: { - __type: 'PullRequestConnection!', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - pushedAt: { __type: 'DateTime' }, - rebaseMergeAllowed: { __type: 'Boolean!' }, - ref: { __type: 'Ref', __args: { qualifiedName: 'String!' } }, - refs: { - __type: 'RefConnection', - __args: { - after: 'String', - before: 'String', - direction: 'OrderDirection', - first: 'Int', - last: 'Int', - orderBy: 'RefOrder', - query: 'String', - refPrefix: 'String!', - }, - }, - release: { __type: 'Release', __args: { tagName: 'String!' } }, - releases: { - __type: 'ReleaseConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ReleaseOrder', - }, - }, - repositoryTopics: { - __type: 'RepositoryTopicConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - resourcePath: { __type: 'URI!' }, - securityPolicyUrl: { __type: 'URI' }, - shortDescriptionHTML: { __type: 'HTML!', __args: { limit: 'Int' } }, - squashMergeAllowed: { __type: 'Boolean!' }, - sshUrl: { __type: 'GitSSHRemote!' }, - stargazerCount: { __type: 'Int!' }, - stargazers: { - __type: 'StargazerConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'StarOrder', - }, - }, - submodules: { - __type: 'SubmoduleConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - tempCloneToken: { __type: 'String' }, - templateRepository: { __type: 'Repository' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - usesCustomOpenGraphImage: { __type: 'Boolean!' }, - viewerCanAdminister: { __type: 'Boolean!' }, - viewerCanCreateProjects: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerCanUpdateTopics: { __type: 'Boolean!' }, - viewerDefaultCommitEmail: { __type: 'String' }, - viewerDefaultMergeMethod: { __type: 'PullRequestMergeMethod!' }, - viewerHasStarred: { __type: 'Boolean!' }, - viewerPermission: { __type: 'RepositoryPermission' }, - viewerPossibleCommitEmails: { __type: '[String!]' }, - viewerSubscription: { __type: 'SubscriptionState' }, - visibility: { __type: 'RepositoryVisibility!' }, - vulnerabilityAlerts: { - __type: 'RepositoryVulnerabilityAlertConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - watchers: { - __type: 'UserConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - }, - RepositoryAuditEntryData: { - __typename: { __type: 'String!' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - $on: { __type: '$RepositoryAuditEntryData!' }, - }, - RepositoryCollaboratorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RepositoryCollaboratorEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - RepositoryCollaboratorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'User!' }, - permission: { __type: 'RepositoryPermission!' }, - permissionSources: { __type: '[PermissionSource!]' }, - }, - RepositoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RepositoryEdge]' }, - nodes: { __type: '[Repository]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - totalDiskUsage: { __type: 'Int!' }, - }, - RepositoryContactLink: { - __typename: { __type: 'String!' }, - about: { __type: 'String!' }, - name: { __type: 'String!' }, - url: { __type: 'URI!' }, - }, - RepositoryDiscussionAuthor: { - __typename: { __type: 'String!' }, - repositoryDiscussions: { - __type: 'DiscussionConnection!', - __args: { - after: 'String', - answered: 'Boolean', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'DiscussionOrder', - repositoryId: 'ID', - }, - }, - $on: { __type: '$RepositoryDiscussionAuthor!' }, - }, - RepositoryDiscussionCommentAuthor: { - __typename: { __type: 'String!' }, - repositoryDiscussionComments: { - __type: 'DiscussionCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - onlyAnswers: 'Boolean', - repositoryId: 'ID', - }, - }, - $on: { __type: '$RepositoryDiscussionCommentAuthor!' }, - }, - RepositoryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Repository' }, - }, - RepositoryInfo: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - description: { __type: 'String' }, - descriptionHTML: { __type: 'HTML!' }, - forkCount: { __type: 'Int!' }, - hasIssuesEnabled: { __type: 'Boolean!' }, - hasProjectsEnabled: { __type: 'Boolean!' }, - hasWikiEnabled: { __type: 'Boolean!' }, - homepageUrl: { __type: 'URI' }, - isArchived: { __type: 'Boolean!' }, - isFork: { __type: 'Boolean!' }, - isInOrganization: { __type: 'Boolean!' }, - isLocked: { __type: 'Boolean!' }, - isMirror: { __type: 'Boolean!' }, - isPrivate: { __type: 'Boolean!' }, - isTemplate: { __type: 'Boolean!' }, - licenseInfo: { __type: 'License' }, - lockReason: { __type: 'RepositoryLockReason' }, - mirrorUrl: { __type: 'URI' }, - name: { __type: 'String!' }, - nameWithOwner: { __type: 'String!' }, - openGraphImageUrl: { __type: 'URI!' }, - owner: { __type: 'RepositoryOwner!' }, - pushedAt: { __type: 'DateTime' }, - resourcePath: { __type: 'URI!' }, - shortDescriptionHTML: { __type: 'HTML!', __args: { limit: 'Int' } }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - usesCustomOpenGraphImage: { __type: 'Boolean!' }, - visibility: { __type: 'RepositoryVisibility!' }, - $on: { __type: '$RepositoryInfo!' }, - }, - RepositoryInteractionAbility: { - __typename: { __type: 'String!' }, - expiresAt: { __type: 'DateTime' }, - limit: { __type: 'RepositoryInteractionLimit!' }, - origin: { __type: 'RepositoryInteractionLimitOrigin!' }, - }, - RepositoryInvitation: { - __typename: { __type: 'String!' }, - email: { __type: 'String' }, - id: { __type: 'ID!' }, - invitee: { __type: 'User' }, - inviter: { __type: 'User!' }, - permalink: { __type: 'URI!' }, - permission: { __type: 'RepositoryPermission!' }, - repository: { __type: 'RepositoryInfo' }, - }, - RepositoryInvitationConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RepositoryInvitationEdge]' }, - nodes: { __type: '[RepositoryInvitation]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - RepositoryInvitationEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'RepositoryInvitation' }, - }, - RepositoryInvitationOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'RepositoryInvitationOrderField!' }, - }, - RepositoryNode: { - __typename: { __type: 'String!' }, - repository: { __type: 'Repository!' }, - $on: { __type: '$RepositoryNode!' }, - }, - RepositoryOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'RepositoryOrderField!' }, - }, - RepositoryOwner: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - id: { __type: 'ID!' }, - login: { __type: 'String!' }, - repositories: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isFork: 'Boolean', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - }, - }, - repository: { - __type: 'Repository', - __args: { followRenames: 'Boolean', name: 'String!' }, - }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - $on: { __type: '$RepositoryOwner!' }, - }, - RepositoryTopic: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - resourcePath: { __type: 'URI!' }, - topic: { __type: 'Topic!' }, - url: { __type: 'URI!' }, - }, - RepositoryTopicConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RepositoryTopicEdge]' }, - nodes: { __type: '[RepositoryTopic]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - RepositoryTopicEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'RepositoryTopic' }, - }, - RepositoryVisibilityChangeDisableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepositoryVisibilityChangeEnableAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - enterpriseResourcePath: { __type: 'URI' }, - enterpriseSlug: { __type: 'String' }, - enterpriseUrl: { __type: 'URI' }, - id: { __type: 'ID!' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - RepositoryVulnerabilityAlert: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - dismissReason: { __type: 'String' }, - dismissedAt: { __type: 'DateTime' }, - dismisser: { __type: 'User' }, - id: { __type: 'ID!' }, - repository: { __type: 'Repository!' }, - securityAdvisory: { __type: 'SecurityAdvisory' }, - securityVulnerability: { __type: 'SecurityVulnerability' }, - vulnerableManifestFilename: { __type: 'String!' }, - vulnerableManifestPath: { __type: 'String!' }, - vulnerableRequirements: { __type: 'String' }, - }, - RepositoryVulnerabilityAlertConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[RepositoryVulnerabilityAlertEdge]' }, - nodes: { __type: '[RepositoryVulnerabilityAlert]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - RepositoryVulnerabilityAlertEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'RepositoryVulnerabilityAlert' }, - }, - RequestReviewsInput: { - clientMutationId: { __type: 'String' }, - pullRequestId: { __type: 'ID!' }, - teamIds: { __type: '[ID!]' }, - union: { __type: 'Boolean' }, - userIds: { __type: '[ID!]' }, - }, - RequestReviewsPayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - requestedReviewersEdge: { __type: 'UserEdge' }, - }, - RequestedReviewer: { - __typename: { __type: 'String!' }, - $on: { __type: '$RequestedReviewer!' }, - }, - RequirableByPullRequest: { - __typename: { __type: 'String!' }, - isRequired: { - __type: 'Boolean!', - __args: { pullRequestId: 'ID', pullRequestNumber: 'Int' }, - }, - $on: { __type: '$RequirableByPullRequest!' }, - }, - RequiredStatusCheckDescription: { - __typename: { __type: 'String!' }, - app: { __type: 'App' }, - context: { __type: 'String!' }, - }, - RequiredStatusCheckInput: { - appId: { __type: 'ID' }, - context: { __type: 'String!' }, - }, - RerequestCheckSuiteInput: { - checkSuiteId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - }, - RerequestCheckSuitePayload: { - __typename: { __type: 'String!' }, - checkSuite: { __type: 'CheckSuite' }, - clientMutationId: { __type: 'String' }, - }, - ResolveReviewThreadInput: { - clientMutationId: { __type: 'String' }, - threadId: { __type: 'ID!' }, - }, - ResolveReviewThreadPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - thread: { __type: 'PullRequestReviewThread' }, - }, - RestrictedContribution: { - __typename: { __type: 'String!' }, - isRestricted: { __type: 'Boolean!' }, - occurredAt: { __type: 'DateTime!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - user: { __type: 'User!' }, - }, - ReviewDismissalAllowance: { - __typename: { __type: 'String!' }, - actor: { __type: 'ReviewDismissalAllowanceActor' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - id: { __type: 'ID!' }, - }, - ReviewDismissalAllowanceActor: { - __typename: { __type: 'String!' }, - $on: { __type: '$ReviewDismissalAllowanceActor!' }, - }, - ReviewDismissalAllowanceConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReviewDismissalAllowanceEdge]' }, - nodes: { __type: '[ReviewDismissalAllowance]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReviewDismissalAllowanceEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ReviewDismissalAllowance' }, - }, - ReviewDismissedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - dismissalMessage: { __type: 'String' }, - dismissalMessageHTML: { __type: 'String' }, - id: { __type: 'ID!' }, - previousReviewState: { __type: 'PullRequestReviewState!' }, - pullRequest: { __type: 'PullRequest!' }, - pullRequestCommit: { __type: 'PullRequestCommit' }, - resourcePath: { __type: 'URI!' }, - review: { __type: 'PullRequestReview' }, - url: { __type: 'URI!' }, - }, - ReviewRequest: { - __typename: { __type: 'String!' }, - asCodeOwner: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - requestedReviewer: { __type: 'RequestedReviewer' }, - }, - ReviewRequestConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[ReviewRequestEdge]' }, - nodes: { __type: '[ReviewRequest]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - ReviewRequestEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'ReviewRequest' }, - }, - ReviewRequestRemovedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - requestedReviewer: { __type: 'RequestedReviewer' }, - }, - ReviewRequestedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - pullRequest: { __type: 'PullRequest!' }, - requestedReviewer: { __type: 'RequestedReviewer' }, - }, - ReviewStatusHovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - reviewDecision: { __type: 'PullRequestReviewDecision' }, - }, - SavedReply: { - __typename: { __type: 'String!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - title: { __type: 'String!' }, - user: { __type: 'Actor' }, - }, - SavedReplyConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SavedReplyEdge]' }, - nodes: { __type: '[SavedReply]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SavedReplyEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SavedReply' }, - }, - SavedReplyOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SavedReplyOrderField!' }, - }, - SearchResultItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$SearchResultItem!' }, - }, - SearchResultItemConnection: { - __typename: { __type: 'String!' }, - codeCount: { __type: 'Int!' }, - discussionCount: { __type: 'Int!' }, - edges: { __type: '[SearchResultItemEdge]' }, - issueCount: { __type: 'Int!' }, - nodes: { __type: '[SearchResultItem]' }, - pageInfo: { __type: 'PageInfo!' }, - repositoryCount: { __type: 'Int!' }, - userCount: { __type: 'Int!' }, - wikiCount: { __type: 'Int!' }, - }, - SearchResultItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SearchResultItem' }, - textMatches: { __type: '[TextMatch]' }, - }, - SecurityAdvisory: { - __typename: { __type: 'String!' }, - cvss: { __type: 'CVSS!' }, - cwes: { - __type: 'CWEConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - databaseId: { __type: 'Int' }, - description: { __type: 'String!' }, - ghsaId: { __type: 'String!' }, - id: { __type: 'ID!' }, - identifiers: { __type: '[SecurityAdvisoryIdentifier!]!' }, - notificationsPermalink: { __type: 'URI' }, - origin: { __type: 'String!' }, - permalink: { __type: 'URI' }, - publishedAt: { __type: 'DateTime!' }, - references: { __type: '[SecurityAdvisoryReference!]!' }, - severity: { __type: 'SecurityAdvisorySeverity!' }, - summary: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - vulnerabilities: { - __type: 'SecurityVulnerabilityConnection!', - __args: { - after: 'String', - before: 'String', - ecosystem: 'SecurityAdvisoryEcosystem', - first: 'Int', - last: 'Int', - orderBy: 'SecurityVulnerabilityOrder', - package: 'String', - severities: '[SecurityAdvisorySeverity!]', - }, - }, - withdrawnAt: { __type: 'DateTime' }, - }, - SecurityAdvisoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SecurityAdvisoryEdge]' }, - nodes: { __type: '[SecurityAdvisory]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SecurityAdvisoryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SecurityAdvisory' }, - }, - SecurityAdvisoryIdentifier: { - __typename: { __type: 'String!' }, - type: { __type: 'String!' }, - value: { __type: 'String!' }, - }, - SecurityAdvisoryIdentifierFilter: { - type: { __type: 'SecurityAdvisoryIdentifierType!' }, - value: { __type: 'String!' }, - }, - SecurityAdvisoryOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SecurityAdvisoryOrderField!' }, - }, - SecurityAdvisoryPackage: { - __typename: { __type: 'String!' }, - ecosystem: { __type: 'SecurityAdvisoryEcosystem!' }, - name: { __type: 'String!' }, - }, - SecurityAdvisoryPackageVersion: { - __typename: { __type: 'String!' }, - identifier: { __type: 'String!' }, - }, - SecurityAdvisoryReference: { - __typename: { __type: 'String!' }, - url: { __type: 'URI!' }, - }, - SecurityVulnerability: { - __typename: { __type: 'String!' }, - advisory: { __type: 'SecurityAdvisory!' }, - firstPatchedVersion: { __type: 'SecurityAdvisoryPackageVersion' }, - package: { __type: 'SecurityAdvisoryPackage!' }, - severity: { __type: 'SecurityAdvisorySeverity!' }, - updatedAt: { __type: 'DateTime!' }, - vulnerableVersionRange: { __type: 'String!' }, - }, - SecurityVulnerabilityConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SecurityVulnerabilityEdge]' }, - nodes: { __type: '[SecurityVulnerability]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SecurityVulnerabilityEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SecurityVulnerability' }, - }, - SecurityVulnerabilityOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SecurityVulnerabilityOrderField!' }, - }, - SetEnterpriseIdentityProviderInput: { - clientMutationId: { __type: 'String' }, - digestMethod: { __type: 'SamlDigestAlgorithm!' }, - enterpriseId: { __type: 'ID!' }, - idpCertificate: { __type: 'String!' }, - issuer: { __type: 'String' }, - signatureMethod: { __type: 'SamlSignatureAlgorithm!' }, - ssoUrl: { __type: 'URI!' }, - }, - SetEnterpriseIdentityProviderPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - identityProvider: { __type: 'EnterpriseIdentityProvider' }, - }, - SetOrganizationInteractionLimitInput: { - clientMutationId: { __type: 'String' }, - expiry: { __type: 'RepositoryInteractionLimitExpiry' }, - limit: { __type: 'RepositoryInteractionLimit!' }, - organizationId: { __type: 'ID!' }, - }, - SetOrganizationInteractionLimitPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - organization: { __type: 'Organization' }, - }, - SetRepositoryInteractionLimitInput: { - clientMutationId: { __type: 'String' }, - expiry: { __type: 'RepositoryInteractionLimitExpiry' }, - limit: { __type: 'RepositoryInteractionLimit!' }, - repositoryId: { __type: 'ID!' }, - }, - SetRepositoryInteractionLimitPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - SetUserInteractionLimitInput: { - clientMutationId: { __type: 'String' }, - expiry: { __type: 'RepositoryInteractionLimitExpiry' }, - limit: { __type: 'RepositoryInteractionLimit!' }, - userId: { __type: 'ID!' }, - }, - SetUserInteractionLimitPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - user: { __type: 'User' }, - }, - SmimeSignature: { - __typename: { __type: 'String!' }, - email: { __type: 'String!' }, - isValid: { __type: 'Boolean!' }, - payload: { __type: 'String!' }, - signature: { __type: 'String!' }, - signer: { __type: 'User' }, - state: { __type: 'GitSignatureState!' }, - wasSignedByGitHub: { __type: 'Boolean!' }, - }, - Sponsor: { __typename: { __type: 'String!' }, $on: { __type: '$Sponsor!' } }, - SponsorConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorEdge]' }, - nodes: { __type: '[Sponsor]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SponsorEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Sponsor' }, - }, - SponsorOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorOrderField!' }, - }, - Sponsorable: { - __typename: { __type: 'String!' }, - estimatedNextSponsorsPayoutInCents: { __type: 'Int!' }, - hasSponsorsListing: { __type: 'Boolean!' }, - isSponsoredBy: { __type: 'Boolean!', __args: { accountLogin: 'String!' } }, - isSponsoringViewer: { __type: 'Boolean!' }, - monthlyEstimatedSponsorsIncomeInCents: { __type: 'Int!' }, - sponsoring: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - }, - }, - sponsors: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - tierId: 'ID', - }, - }, - sponsorsActivities: { - __type: 'SponsorsActivityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorsActivityOrder', - period: 'SponsorsActivityPeriod', - }, - }, - sponsorsListing: { __type: 'SponsorsListing' }, - sponsorshipForViewerAsSponsor: { __type: 'Sponsorship' }, - sponsorshipForViewerAsSponsorable: { __type: 'Sponsorship' }, - sponsorshipNewsletters: { - __type: 'SponsorshipNewsletterConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipNewsletterOrder', - }, - }, - sponsorshipsAsMaintainer: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - includePrivate: 'Boolean', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - sponsorshipsAsSponsor: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - viewerCanSponsor: { __type: 'Boolean!' }, - viewerIsSponsoring: { __type: 'Boolean!' }, - $on: { __type: '$Sponsorable!' }, - }, - SponsorableItem: { - __typename: { __type: 'String!' }, - $on: { __type: '$SponsorableItem!' }, - }, - SponsorableItemConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorableItemEdge]' }, - nodes: { __type: '[SponsorableItem]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SponsorableItemEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SponsorableItem' }, - }, - SponsorableOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorableOrderField!' }, - }, - SponsorsActivity: { - __typename: { __type: 'String!' }, - action: { __type: 'SponsorsActivityAction!' }, - id: { __type: 'ID!' }, - previousSponsorsTier: { __type: 'SponsorsTier' }, - sponsor: { __type: 'Sponsor' }, - sponsorable: { __type: 'Sponsorable!' }, - sponsorsTier: { __type: 'SponsorsTier' }, - timestamp: { __type: 'DateTime' }, - }, - SponsorsActivityConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorsActivityEdge]' }, - nodes: { __type: '[SponsorsActivity]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SponsorsActivityEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SponsorsActivity' }, - }, - SponsorsActivityOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorsActivityOrderField!' }, - }, - SponsorsGoal: { - __typename: { __type: 'String!' }, - description: { __type: 'String' }, - kind: { __type: 'SponsorsGoalKind!' }, - percentComplete: { __type: 'Int!' }, - targetValue: { __type: 'Int!' }, - title: { __type: 'String!' }, - }, - SponsorsListing: { - __typename: { __type: 'String!' }, - activeGoal: { __type: 'SponsorsGoal' }, - createdAt: { __type: 'DateTime!' }, - fullDescription: { __type: 'String!' }, - fullDescriptionHTML: { __type: 'HTML!' }, - id: { __type: 'ID!' }, - isPublic: { __type: 'Boolean!' }, - name: { __type: 'String!' }, - nextPayoutDate: { __type: 'Date' }, - shortDescription: { __type: 'String!' }, - slug: { __type: 'String!' }, - sponsorable: { __type: 'Sponsorable!' }, - tiers: { - __type: 'SponsorsTierConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorsTierOrder', - }, - }, - }, - SponsorsTier: { - __typename: { __type: 'String!' }, - adminInfo: { __type: 'SponsorsTierAdminInfo' }, - closestLesserValueTier: { __type: 'SponsorsTier' }, - createdAt: { __type: 'DateTime!' }, - description: { __type: 'String!' }, - descriptionHTML: { __type: 'HTML!' }, - id: { __type: 'ID!' }, - isCustomAmount: { __type: 'Boolean!' }, - isOneTime: { __type: 'Boolean!' }, - monthlyPriceInCents: { __type: 'Int!' }, - monthlyPriceInDollars: { __type: 'Int!' }, - name: { __type: 'String!' }, - sponsorsListing: { __type: 'SponsorsListing!' }, - updatedAt: { __type: 'DateTime!' }, - }, - SponsorsTierAdminInfo: { - __typename: { __type: 'String!' }, - sponsorships: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - includePrivate: 'Boolean', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - }, - SponsorsTierConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorsTierEdge]' }, - nodes: { __type: '[SponsorsTier]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SponsorsTierEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SponsorsTier' }, - }, - SponsorsTierOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorsTierOrderField!' }, - }, - Sponsorship: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isOneTimePayment: { __type: 'Boolean!' }, - isSponsorOptedIntoEmail: { __type: 'Boolean' }, - maintainer: { __type: 'User!' }, - privacyLevel: { __type: 'SponsorshipPrivacy!' }, - sponsor: { __type: 'User' }, - sponsorEntity: { __type: 'Sponsor' }, - sponsorable: { __type: 'Sponsorable!' }, - tier: { __type: 'SponsorsTier' }, - tierSelectedAt: { __type: 'DateTime' }, - }, - SponsorshipConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorshipEdge]' }, - nodes: { __type: '[Sponsorship]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - totalRecurringMonthlyPriceInCents: { __type: 'Int!' }, - totalRecurringMonthlyPriceInDollars: { __type: 'Int!' }, - }, - SponsorshipEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Sponsorship' }, - }, - SponsorshipNewsletter: { - __typename: { __type: 'String!' }, - body: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - isPublished: { __type: 'Boolean!' }, - sponsorable: { __type: 'Sponsorable!' }, - subject: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - }, - SponsorshipNewsletterConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SponsorshipNewsletterEdge]' }, - nodes: { __type: '[SponsorshipNewsletter]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SponsorshipNewsletterEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'SponsorshipNewsletter' }, - }, - SponsorshipNewsletterOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorshipNewsletterOrderField!' }, - }, - SponsorshipOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'SponsorshipOrderField!' }, - }, - StarOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'StarOrderField!' }, - }, - StargazerConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[StargazerEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - StargazerEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'User!' }, - starredAt: { __type: 'DateTime!' }, - }, - Starrable: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - stargazerCount: { __type: 'Int!' }, - stargazers: { - __type: 'StargazerConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'StarOrder', - }, - }, - viewerHasStarred: { __type: 'Boolean!' }, - $on: { __type: '$Starrable!' }, - }, - StarredRepositoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[StarredRepositoryEdge]' }, - isOverLimit: { __type: 'Boolean!' }, - nodes: { __type: '[Repository]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - StarredRepositoryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Repository!' }, - starredAt: { __type: 'DateTime!' }, - }, - Status: { - __typename: { __type: 'String!' }, - combinedContexts: { - __type: 'StatusCheckRollupContextConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - commit: { __type: 'Commit' }, - context: { __type: 'StatusContext', __args: { name: 'String!' } }, - contexts: { __type: '[StatusContext!]!' }, - id: { __type: 'ID!' }, - state: { __type: 'StatusState!' }, - }, - StatusCheckRollup: { - __typename: { __type: 'String!' }, - commit: { __type: 'Commit' }, - contexts: { - __type: 'StatusCheckRollupContextConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - id: { __type: 'ID!' }, - state: { __type: 'StatusState!' }, - }, - StatusCheckRollupContext: { - __typename: { __type: 'String!' }, - $on: { __type: '$StatusCheckRollupContext!' }, - }, - StatusCheckRollupContextConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[StatusCheckRollupContextEdge]' }, - nodes: { __type: '[StatusCheckRollupContext]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - StatusCheckRollupContextEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'StatusCheckRollupContext' }, - }, - StatusContext: { - __typename: { __type: 'String!' }, - avatarUrl: { __type: 'URI', __args: { size: 'Int' } }, - commit: { __type: 'Commit' }, - context: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - creator: { __type: 'Actor' }, - description: { __type: 'String' }, - id: { __type: 'ID!' }, - isRequired: { - __type: 'Boolean!', - __args: { pullRequestId: 'ID', pullRequestNumber: 'Int' }, - }, - state: { __type: 'StatusState!' }, - targetUrl: { __type: 'URI' }, - }, - SubmitPullRequestReviewInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - event: { __type: 'PullRequestReviewEvent!' }, - pullRequestId: { __type: 'ID' }, - pullRequestReviewId: { __type: 'ID' }, - }, - SubmitPullRequestReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - }, - Submodule: { - __typename: { __type: 'String!' }, - branch: { __type: 'String' }, - gitUrl: { __type: 'URI!' }, - name: { __type: 'String!' }, - path: { __type: 'String!' }, - subprojectCommitOid: { __type: 'GitObjectID' }, - }, - SubmoduleConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[SubmoduleEdge]' }, - nodes: { __type: '[Submodule]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - SubmoduleEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Submodule' }, - }, - Subscribable: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - $on: { __type: '$Subscribable!' }, - }, - SubscribedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - subscribable: { __type: 'Subscribable!' }, - }, - SuggestedReviewer: { - __typename: { __type: 'String!' }, - isAuthor: { __type: 'Boolean!' }, - isCommenter: { __type: 'Boolean!' }, - reviewer: { __type: 'User!' }, - }, - Tag: { - __typename: { __type: 'String!' }, - abbreviatedOid: { __type: 'String!' }, - commitResourcePath: { __type: 'URI!' }, - commitUrl: { __type: 'URI!' }, - id: { __type: 'ID!' }, - message: { __type: 'String' }, - name: { __type: 'String!' }, - oid: { __type: 'GitObjectID!' }, - repository: { __type: 'Repository!' }, - tagger: { __type: 'GitActor' }, - target: { __type: 'GitObject!' }, - }, - Team: { - __typename: { __type: 'String!' }, - ancestors: { - __type: 'TeamConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - avatarUrl: { __type: 'URI', __args: { size: 'Int' } }, - childTeams: { - __type: 'TeamConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - immediateOnly: 'Boolean', - last: 'Int', - orderBy: 'TeamOrder', - userLogins: '[String!]', - }, - }, - combinedSlug: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - description: { __type: 'String' }, - discussion: { __type: 'TeamDiscussion', __args: { number: 'Int!' } }, - discussions: { - __type: 'TeamDiscussionConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - isPinned: 'Boolean', - last: 'Int', - orderBy: 'TeamDiscussionOrder', - }, - }, - discussionsResourcePath: { __type: 'URI!' }, - discussionsUrl: { __type: 'URI!' }, - editTeamResourcePath: { __type: 'URI!' }, - editTeamUrl: { __type: 'URI!' }, - id: { __type: 'ID!' }, - invitations: { - __type: 'OrganizationInvitationConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - memberStatuses: { - __type: 'UserStatusConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'UserStatusOrder', - }, - }, - members: { - __type: 'TeamMemberConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - membership: 'TeamMembershipType', - orderBy: 'TeamMemberOrder', - query: 'String', - role: 'TeamMemberRole', - }, - }, - membersResourcePath: { __type: 'URI!' }, - membersUrl: { __type: 'URI!' }, - name: { __type: 'String!' }, - newTeamResourcePath: { __type: 'URI!' }, - newTeamUrl: { __type: 'URI!' }, - organization: { __type: 'Organization!' }, - parentTeam: { __type: 'Team' }, - privacy: { __type: 'TeamPrivacy!' }, - repositories: { - __type: 'TeamRepositoryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'TeamRepositoryOrder', - query: 'String', - }, - }, - repositoriesResourcePath: { __type: 'URI!' }, - repositoriesUrl: { __type: 'URI!' }, - resourcePath: { __type: 'URI!' }, - slug: { __type: 'String!' }, - teamsResourcePath: { __type: 'URI!' }, - teamsUrl: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanAdminister: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - }, - TeamAddMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isLdapMapped: { __type: 'Boolean' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - TeamAddRepositoryAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isLdapMapped: { __type: 'Boolean' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - TeamAuditEntryData: { - __typename: { __type: 'String!' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - $on: { __type: '$TeamAuditEntryData!' }, - }, - TeamChangeParentTeamAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isLdapMapped: { __type: 'Boolean' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - parentTeam: { __type: 'Team' }, - parentTeamName: { __type: 'String' }, - parentTeamNameWas: { __type: 'String' }, - parentTeamResourcePath: { __type: 'URI' }, - parentTeamUrl: { __type: 'URI' }, - parentTeamWas: { __type: 'Team' }, - parentTeamWasResourcePath: { __type: 'URI' }, - parentTeamWasUrl: { __type: 'URI' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - TeamConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[TeamEdge]' }, - nodes: { __type: '[Team]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - TeamDiscussion: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - bodyVersion: { __type: 'String!' }, - comments: { - __type: 'TeamDiscussionCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - fromComment: 'Int', - last: 'Int', - orderBy: 'TeamDiscussionCommentOrder', - }, - }, - commentsResourcePath: { __type: 'URI!' }, - commentsUrl: { __type: 'URI!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - isPinned: { __type: 'Boolean!' }, - isPrivate: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - number: { __type: 'Int!' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - resourcePath: { __type: 'URI!' }, - team: { __type: 'Team!' }, - title: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanPin: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanSubscribe: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - viewerSubscription: { __type: 'SubscriptionState' }, - }, - TeamDiscussionComment: { - __typename: { __type: 'String!' }, - author: { __type: 'Actor' }, - authorAssociation: { __type: 'CommentAuthorAssociation!' }, - body: { __type: 'String!' }, - bodyHTML: { __type: 'HTML!' }, - bodyText: { __type: 'String!' }, - bodyVersion: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - createdViaEmail: { __type: 'Boolean!' }, - databaseId: { __type: 'Int' }, - discussion: { __type: 'TeamDiscussion!' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - includesCreatedEdit: { __type: 'Boolean!' }, - lastEditedAt: { __type: 'DateTime' }, - number: { __type: 'Int!' }, - publishedAt: { __type: 'DateTime' }, - reactionGroups: { __type: '[ReactionGroup!]' }, - reactions: { - __type: 'ReactionConnection!', - __args: { - after: 'String', - before: 'String', - content: 'ReactionContent', - first: 'Int', - last: 'Int', - orderBy: 'ReactionOrder', - }, - }, - resourcePath: { __type: 'URI!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - userContentEdits: { - __type: 'UserContentEditConnection', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - viewerCanDelete: { __type: 'Boolean!' }, - viewerCanReact: { __type: 'Boolean!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - viewerDidAuthor: { __type: 'Boolean!' }, - }, - TeamDiscussionCommentConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[TeamDiscussionCommentEdge]' }, - nodes: { __type: '[TeamDiscussionComment]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - TeamDiscussionCommentEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'TeamDiscussionComment' }, - }, - TeamDiscussionCommentOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'TeamDiscussionCommentOrderField!' }, - }, - TeamDiscussionConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[TeamDiscussionEdge]' }, - nodes: { __type: '[TeamDiscussion]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - TeamDiscussionEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'TeamDiscussion' }, - }, - TeamDiscussionOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'TeamDiscussionOrderField!' }, - }, - TeamEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Team' }, - }, - TeamMemberConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[TeamMemberEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - TeamMemberEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - memberAccessResourcePath: { __type: 'URI!' }, - memberAccessUrl: { __type: 'URI!' }, - node: { __type: 'User!' }, - role: { __type: 'TeamMemberRole!' }, - }, - TeamMemberOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'TeamMemberOrderField!' }, - }, - TeamOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'TeamOrderField!' }, - }, - TeamRemoveMemberAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isLdapMapped: { __type: 'Boolean' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - TeamRemoveRepositoryAuditEntry: { - __typename: { __type: 'String!' }, - action: { __type: 'String!' }, - actor: { __type: 'AuditEntryActor' }, - actorIp: { __type: 'String' }, - actorLocation: { __type: 'ActorLocation' }, - actorLogin: { __type: 'String' }, - actorResourcePath: { __type: 'URI' }, - actorUrl: { __type: 'URI' }, - createdAt: { __type: 'PreciseDateTime!' }, - id: { __type: 'ID!' }, - isLdapMapped: { __type: 'Boolean' }, - operationType: { __type: 'OperationType' }, - organization: { __type: 'Organization' }, - organizationName: { __type: 'String' }, - organizationResourcePath: { __type: 'URI' }, - organizationUrl: { __type: 'URI' }, - repository: { __type: 'Repository' }, - repositoryName: { __type: 'String' }, - repositoryResourcePath: { __type: 'URI' }, - repositoryUrl: { __type: 'URI' }, - team: { __type: 'Team' }, - teamName: { __type: 'String' }, - teamResourcePath: { __type: 'URI' }, - teamUrl: { __type: 'URI' }, - user: { __type: 'User' }, - userLogin: { __type: 'String' }, - userResourcePath: { __type: 'URI' }, - userUrl: { __type: 'URI' }, - }, - TeamRepositoryConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[TeamRepositoryEdge]' }, - nodes: { __type: '[Repository]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - TeamRepositoryEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'Repository!' }, - permission: { __type: 'RepositoryPermission!' }, - }, - TeamRepositoryOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'TeamRepositoryOrderField!' }, - }, - TextMatch: { - __typename: { __type: 'String!' }, - fragment: { __type: 'String!' }, - highlights: { __type: '[TextMatchHighlight!]!' }, - property: { __type: 'String!' }, - }, - TextMatchHighlight: { - __typename: { __type: 'String!' }, - beginIndice: { __type: 'Int!' }, - endIndice: { __type: 'Int!' }, - text: { __type: 'String!' }, - }, - Topic: { - __typename: { __type: 'String!' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - relatedTopics: { __type: '[Topic!]!', __args: { first: 'Int' } }, - repositories: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - sponsorableOnly: 'Boolean', - }, - }, - stargazerCount: { __type: 'Int!' }, - stargazers: { - __type: 'StargazerConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'StarOrder', - }, - }, - viewerHasStarred: { __type: 'Boolean!' }, - }, - TopicAuditEntryData: { - __typename: { __type: 'String!' }, - topic: { __type: 'Topic' }, - topicName: { __type: 'String' }, - $on: { __type: '$TopicAuditEntryData!' }, - }, - TransferIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - repositoryId: { __type: 'ID!' }, - }, - TransferIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - TransferredEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - fromRepository: { __type: 'Repository' }, - id: { __type: 'ID!' }, - issue: { __type: 'Issue!' }, - }, - Tree: { - __typename: { __type: 'String!' }, - abbreviatedOid: { __type: 'String!' }, - commitResourcePath: { __type: 'URI!' }, - commitUrl: { __type: 'URI!' }, - entries: { __type: '[TreeEntry!]' }, - id: { __type: 'ID!' }, - oid: { __type: 'GitObjectID!' }, - repository: { __type: 'Repository!' }, - }, - TreeEntry: { - __typename: { __type: 'String!' }, - extension: { __type: 'String' }, - isGenerated: { __type: 'Boolean!' }, - mode: { __type: 'Int!' }, - name: { __type: 'String!' }, - object: { __type: 'GitObject' }, - oid: { __type: 'GitObjectID!' }, - path: { __type: 'String' }, - repository: { __type: 'Repository!' }, - submodule: { __type: 'Submodule' }, - type: { __type: 'String!' }, - }, - UnarchiveRepositoryInput: { - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - }, - UnarchiveRepositoryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - UnassignedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - assignable: { __type: 'Assignable!' }, - assignee: { __type: 'Assignee' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - user: { __type: 'User' }, - }, - UnfollowUserInput: { - clientMutationId: { __type: 'String' }, - userId: { __type: 'ID!' }, - }, - UnfollowUserPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - user: { __type: 'User' }, - }, - UniformResourceLocatable: { - __typename: { __type: 'String!' }, - resourcePath: { __type: 'URI!' }, - url: { __type: 'URI!' }, - $on: { __type: '$UniformResourceLocatable!' }, - }, - UnknownSignature: { - __typename: { __type: 'String!' }, - email: { __type: 'String!' }, - isValid: { __type: 'Boolean!' }, - payload: { __type: 'String!' }, - signature: { __type: 'String!' }, - signer: { __type: 'User' }, - state: { __type: 'GitSignatureState!' }, - wasSignedByGitHub: { __type: 'Boolean!' }, - }, - UnlabeledEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - label: { __type: 'Label!' }, - labelable: { __type: 'Labelable!' }, - }, - UnlinkRepositoryFromProjectInput: { - clientMutationId: { __type: 'String' }, - projectId: { __type: 'ID!' }, - repositoryId: { __type: 'ID!' }, - }, - UnlinkRepositoryFromProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - project: { __type: 'Project' }, - repository: { __type: 'Repository' }, - }, - UnlockLockableInput: { - clientMutationId: { __type: 'String' }, - lockableId: { __type: 'ID!' }, - }, - UnlockLockablePayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - unlockedRecord: { __type: 'Lockable' }, - }, - UnlockedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - lockable: { __type: 'Lockable!' }, - }, - UnmarkDiscussionCommentAsAnswerInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - UnmarkDiscussionCommentAsAnswerPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussion: { __type: 'Discussion' }, - }, - UnmarkFileAsViewedInput: { - clientMutationId: { __type: 'String' }, - path: { __type: 'String!' }, - pullRequestId: { __type: 'ID!' }, - }, - UnmarkFileAsViewedPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - UnmarkIssueAsDuplicateInput: { - canonicalId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - duplicateId: { __type: 'ID!' }, - }, - UnmarkIssueAsDuplicatePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - duplicate: { __type: 'IssueOrPullRequest' }, - }, - UnmarkedAsDuplicateEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - canonical: { __type: 'IssueOrPullRequest' }, - createdAt: { __type: 'DateTime!' }, - duplicate: { __type: 'IssueOrPullRequest' }, - id: { __type: 'ID!' }, - isCrossRepository: { __type: 'Boolean!' }, - }, - UnminimizeCommentInput: { - clientMutationId: { __type: 'String' }, - subjectId: { __type: 'ID!' }, - }, - UnminimizeCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - unminimizedComment: { __type: 'Minimizable' }, - }, - UnpinIssueInput: { - clientMutationId: { __type: 'String' }, - issueId: { __type: 'ID!' }, - }, - UnpinIssuePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - UnpinnedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - issue: { __type: 'Issue!' }, - }, - UnresolveReviewThreadInput: { - clientMutationId: { __type: 'String' }, - threadId: { __type: 'ID!' }, - }, - UnresolveReviewThreadPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - thread: { __type: 'PullRequestReviewThread' }, - }, - UnsubscribedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - subscribable: { __type: 'Subscribable!' }, - }, - Updatable: { - __typename: { __type: 'String!' }, - viewerCanUpdate: { __type: 'Boolean!' }, - $on: { __type: '$Updatable!' }, - }, - UpdatableComment: { - __typename: { __type: 'String!' }, - viewerCannotUpdateReasons: { __type: '[CommentCannotUpdateReason!]!' }, - $on: { __type: '$UpdatableComment!' }, - }, - UpdateBranchProtectionRuleInput: { - allowsDeletions: { __type: 'Boolean' }, - allowsForcePushes: { __type: 'Boolean' }, - branchProtectionRuleId: { __type: 'ID!' }, - bypassForcePushActorIds: { __type: '[ID!]' }, - bypassPullRequestActorIds: { __type: '[ID!]' }, - clientMutationId: { __type: 'String' }, - dismissesStaleReviews: { __type: 'Boolean' }, - isAdminEnforced: { __type: 'Boolean' }, - pattern: { __type: 'String' }, - pushActorIds: { __type: '[ID!]' }, - requiredApprovingReviewCount: { __type: 'Int' }, - requiredStatusCheckContexts: { __type: '[String!]' }, - requiredStatusChecks: { __type: '[RequiredStatusCheckInput!]' }, - requiresApprovingReviews: { __type: 'Boolean' }, - requiresCodeOwnerReviews: { __type: 'Boolean' }, - requiresCommitSignatures: { __type: 'Boolean' }, - requiresConversationResolution: { __type: 'Boolean' }, - requiresLinearHistory: { __type: 'Boolean' }, - requiresStatusChecks: { __type: 'Boolean' }, - requiresStrictStatusChecks: { __type: 'Boolean' }, - restrictsPushes: { __type: 'Boolean' }, - restrictsReviewDismissals: { __type: 'Boolean' }, - reviewDismissalActorIds: { __type: '[ID!]' }, - }, - UpdateBranchProtectionRulePayload: { - __typename: { __type: 'String!' }, - branchProtectionRule: { __type: 'BranchProtectionRule' }, - clientMutationId: { __type: 'String' }, - }, - UpdateCheckRunInput: { - actions: { __type: '[CheckRunAction!]' }, - checkRunId: { __type: 'ID!' }, - clientMutationId: { __type: 'String' }, - completedAt: { __type: 'DateTime' }, - conclusion: { __type: 'CheckConclusionState' }, - detailsUrl: { __type: 'URI' }, - externalId: { __type: 'String' }, - name: { __type: 'String' }, - output: { __type: 'CheckRunOutput' }, - repositoryId: { __type: 'ID!' }, - startedAt: { __type: 'DateTime' }, - status: { __type: 'RequestableCheckStatusState' }, - }, - UpdateCheckRunPayload: { - __typename: { __type: 'String!' }, - checkRun: { __type: 'CheckRun' }, - clientMutationId: { __type: 'String' }, - }, - UpdateCheckSuitePreferencesInput: { - autoTriggerPreferences: { __type: '[CheckSuiteAutoTriggerPreference!]!' }, - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - }, - UpdateCheckSuitePreferencesPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - UpdateDiscussionCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - commentId: { __type: 'ID!' }, - }, - UpdateDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - comment: { __type: 'DiscussionComment' }, - }, - UpdateDiscussionInput: { - body: { __type: 'String' }, - categoryId: { __type: 'ID' }, - clientMutationId: { __type: 'String' }, - discussionId: { __type: 'ID!' }, - title: { __type: 'String' }, - }, - UpdateDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - discussion: { __type: 'Discussion' }, - }, - UpdateEnterpriseAdministratorRoleInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - login: { __type: 'String!' }, - role: { __type: 'EnterpriseAdministratorRole!' }, - }, - UpdateEnterpriseAdministratorRolePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseDefaultRepositoryPermissionSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { - __type: 'EnterpriseDefaultRepositoryPermissionSettingValue!', - }, - }, - UpdateEnterpriseDefaultRepositoryPermissionSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanCreateRepositoriesSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - membersCanCreateInternalRepositories: { __type: 'Boolean' }, - membersCanCreatePrivateRepositories: { __type: 'Boolean' }, - membersCanCreatePublicRepositories: { __type: 'Boolean' }, - membersCanCreateRepositoriesPolicyEnabled: { __type: 'Boolean' }, - settingValue: { - __type: 'EnterpriseMembersCanCreateRepositoriesSettingValue', - }, - }, - UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanDeleteIssuesSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanDeleteIssuesSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanMakePurchasesSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseMembersCanMakePurchasesSettingValue!' }, - }, - UpdateEnterpriseMembersCanMakePurchasesSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseOrganizationProjectsSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseOrganizationProjectsSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseProfileInput: { - clientMutationId: { __type: 'String' }, - description: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - location: { __type: 'String' }, - name: { __type: 'String' }, - websiteUrl: { __type: 'String' }, - }, - UpdateEnterpriseProfilePayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - }, - UpdateEnterpriseRepositoryProjectsSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseRepositoryProjectsSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseTeamDiscussionsSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledDisabledSettingValue!' }, - }, - UpdateEnterpriseTeamDiscussionsSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput: { - clientMutationId: { __type: 'String' }, - enterpriseId: { __type: 'ID!' }, - settingValue: { __type: 'EnterpriseEnabledSettingValue!' }, - }, - UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - enterprise: { __type: 'Enterprise' }, - message: { __type: 'String' }, - }, - UpdateEnvironmentInput: { - clientMutationId: { __type: 'String' }, - environmentId: { __type: 'ID!' }, - reviewers: { __type: '[ID!]' }, - waitTimer: { __type: 'Int' }, - }, - UpdateEnvironmentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - environment: { __type: 'Environment' }, - }, - UpdateIpAllowListEnabledSettingInput: { - clientMutationId: { __type: 'String' }, - ownerId: { __type: 'ID!' }, - settingValue: { __type: 'IpAllowListEnabledSettingValue!' }, - }, - UpdateIpAllowListEnabledSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - owner: { __type: 'IpAllowListOwner' }, - }, - UpdateIpAllowListEntryInput: { - allowListValue: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ipAllowListEntryId: { __type: 'ID!' }, - isActive: { __type: 'Boolean!' }, - name: { __type: 'String' }, - }, - UpdateIpAllowListEntryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ipAllowListEntry: { __type: 'IpAllowListEntry' }, - }, - UpdateIpAllowListForInstalledAppsEnabledSettingInput: { - clientMutationId: { __type: 'String' }, - ownerId: { __type: 'ID!' }, - settingValue: { __type: 'IpAllowListForInstalledAppsEnabledSettingValue!' }, - }, - UpdateIpAllowListForInstalledAppsEnabledSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - owner: { __type: 'IpAllowListOwner' }, - }, - UpdateIssueCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - UpdateIssueCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - issueComment: { __type: 'IssueComment' }, - }, - UpdateIssueInput: { - assigneeIds: { __type: '[ID!]' }, - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - labelIds: { __type: '[ID!]' }, - milestoneId: { __type: 'ID' }, - projectIds: { __type: '[ID!]' }, - state: { __type: 'IssueState' }, - title: { __type: 'String' }, - }, - UpdateIssuePayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - issue: { __type: 'Issue' }, - }, - UpdateNotificationRestrictionSettingInput: { - clientMutationId: { __type: 'String' }, - ownerId: { __type: 'ID!' }, - settingValue: { __type: 'NotificationRestrictionSettingValue!' }, - }, - UpdateNotificationRestrictionSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - owner: { __type: 'VerifiableDomainOwner' }, - }, - UpdateOrganizationAllowPrivateRepositoryForkingSettingInput: { - clientMutationId: { __type: 'String' }, - forkingEnabled: { __type: 'Boolean!' }, - organizationId: { __type: 'ID!' }, - }, - UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - message: { __type: 'String' }, - organization: { __type: 'Organization' }, - }, - UpdateProjectCardInput: { - clientMutationId: { __type: 'String' }, - isArchived: { __type: 'Boolean' }, - note: { __type: 'String' }, - projectCardId: { __type: 'ID!' }, - }, - UpdateProjectCardPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - projectCard: { __type: 'ProjectCard' }, - }, - UpdateProjectColumnInput: { - clientMutationId: { __type: 'String' }, - name: { __type: 'String!' }, - projectColumnId: { __type: 'ID!' }, - }, - UpdateProjectColumnPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - projectColumn: { __type: 'ProjectColumn' }, - }, - UpdateProjectInput: { - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - name: { __type: 'String' }, - projectId: { __type: 'ID!' }, - public: { __type: 'Boolean' }, - state: { __type: 'ProjectState' }, - }, - UpdateProjectNextItemFieldInput: { - clientMutationId: { __type: 'String' }, - fieldId: { __type: 'ID!' }, - itemId: { __type: 'ID!' }, - projectId: { __type: 'ID!' }, - value: { __type: 'String!' }, - }, - UpdateProjectNextItemFieldPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - projectNextItem: { __type: 'ProjectNextItem' }, - }, - UpdateProjectPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - project: { __type: 'Project' }, - }, - UpdatePullRequestBranchInput: { - clientMutationId: { __type: 'String' }, - expectedHeadOid: { __type: 'GitObjectID' }, - pullRequestId: { __type: 'ID!' }, - }, - UpdatePullRequestBranchPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - UpdatePullRequestInput: { - assigneeIds: { __type: '[ID!]' }, - baseRefName: { __type: 'String' }, - body: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - labelIds: { __type: '[ID!]' }, - maintainerCanModify: { __type: 'Boolean' }, - milestoneId: { __type: 'ID' }, - projectIds: { __type: '[ID!]' }, - pullRequestId: { __type: 'ID!' }, - state: { __type: 'PullRequestUpdateState' }, - title: { __type: 'String' }, - }, - UpdatePullRequestPayload: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - clientMutationId: { __type: 'String' }, - pullRequest: { __type: 'PullRequest' }, - }, - UpdatePullRequestReviewCommentInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReviewCommentId: { __type: 'ID!' }, - }, - UpdatePullRequestReviewCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReviewComment: { __type: 'PullRequestReviewComment' }, - }, - UpdatePullRequestReviewInput: { - body: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReviewId: { __type: 'ID!' }, - }, - UpdatePullRequestReviewPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - pullRequestReview: { __type: 'PullRequestReview' }, - }, - UpdateRefInput: { - clientMutationId: { __type: 'String' }, - force: { __type: 'Boolean' }, - oid: { __type: 'GitObjectID!' }, - refId: { __type: 'ID!' }, - }, - UpdateRefPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - ref: { __type: 'Ref' }, - }, - UpdateRepositoryInput: { - clientMutationId: { __type: 'String' }, - description: { __type: 'String' }, - hasIssuesEnabled: { __type: 'Boolean' }, - hasProjectsEnabled: { __type: 'Boolean' }, - hasWikiEnabled: { __type: 'Boolean' }, - homepageUrl: { __type: 'URI' }, - name: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - template: { __type: 'Boolean' }, - }, - UpdateRepositoryPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - repository: { __type: 'Repository' }, - }, - UpdateSponsorshipPreferencesInput: { - clientMutationId: { __type: 'String' }, - privacyLevel: { __type: 'SponsorshipPrivacy' }, - receiveEmails: { __type: 'Boolean' }, - sponsorId: { __type: 'ID' }, - sponsorLogin: { __type: 'String' }, - sponsorableId: { __type: 'ID' }, - sponsorableLogin: { __type: 'String' }, - }, - UpdateSponsorshipPreferencesPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - sponsorship: { __type: 'Sponsorship' }, - }, - UpdateSubscriptionInput: { - clientMutationId: { __type: 'String' }, - state: { __type: 'SubscriptionState!' }, - subscribableId: { __type: 'ID!' }, - }, - UpdateSubscriptionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - subscribable: { __type: 'Subscribable' }, - }, - UpdateTeamDiscussionCommentInput: { - body: { __type: 'String!' }, - bodyVersion: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - UpdateTeamDiscussionCommentPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - teamDiscussionComment: { __type: 'TeamDiscussionComment' }, - }, - UpdateTeamDiscussionInput: { - body: { __type: 'String' }, - bodyVersion: { __type: 'String' }, - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - pinned: { __type: 'Boolean' }, - title: { __type: 'String' }, - }, - UpdateTeamDiscussionPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - teamDiscussion: { __type: 'TeamDiscussion' }, - }, - UpdateTopicsInput: { - clientMutationId: { __type: 'String' }, - repositoryId: { __type: 'ID!' }, - topicNames: { __type: '[String!]!' }, - }, - UpdateTopicsPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - invalidTopicNames: { __type: '[String!]' }, - repository: { __type: 'Repository' }, - }, - User: { - __typename: { __type: 'String!' }, - anyPinnableItems: { - __type: 'Boolean!', - __args: { type: 'PinnableItemType' }, - }, - avatarUrl: { __type: 'URI!', __args: { size: 'Int' } }, - bio: { __type: 'String' }, - bioHTML: { __type: 'HTML!' }, - canReceiveOrganizationEmailsWhenNotificationsRestricted: { - __type: 'Boolean!', - __args: { login: 'String!' }, - }, - commitComments: { - __type: 'CommitCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - company: { __type: 'String' }, - companyHTML: { __type: 'HTML!' }, - contributionsCollection: { - __type: 'ContributionsCollection!', - __args: { from: 'DateTime', organizationID: 'ID', to: 'DateTime' }, - }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - email: { __type: 'String!' }, - estimatedNextSponsorsPayoutInCents: { __type: 'Int!' }, - followers: { - __type: 'FollowerConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - following: { - __type: 'FollowingConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - gist: { __type: 'Gist', __args: { name: 'String!' } }, - gistComments: { - __type: 'GistCommentConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - gists: { - __type: 'GistConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'GistOrder', - privacy: 'GistPrivacy', - }, - }, - hasSponsorsListing: { __type: 'Boolean!' }, - hovercard: { __type: 'Hovercard!', __args: { primarySubjectId: 'ID' } }, - id: { __type: 'ID!' }, - interactionAbility: { __type: 'RepositoryInteractionAbility' }, - isBountyHunter: { __type: 'Boolean!' }, - isCampusExpert: { __type: 'Boolean!' }, - isDeveloperProgramMember: { __type: 'Boolean!' }, - isEmployee: { __type: 'Boolean!' }, - isFollowingViewer: { __type: 'Boolean!' }, - isGitHubStar: { __type: 'Boolean!' }, - isHireable: { __type: 'Boolean!' }, - isSiteAdmin: { __type: 'Boolean!' }, - isSponsoredBy: { __type: 'Boolean!', __args: { accountLogin: 'String!' } }, - isSponsoringViewer: { __type: 'Boolean!' }, - isViewer: { __type: 'Boolean!' }, - issueComments: { - __type: 'IssueCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'IssueCommentOrder', - }, - }, - issues: { - __type: 'IssueConnection!', - __args: { - after: 'String', - before: 'String', - filterBy: 'IssueFilters', - first: 'Int', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[IssueState!]', - }, - }, - itemShowcase: { __type: 'ProfileItemShowcase!' }, - location: { __type: 'String' }, - login: { __type: 'String!' }, - monthlyEstimatedSponsorsIncomeInCents: { __type: 'Int!' }, - name: { __type: 'String' }, - organization: { __type: 'Organization', __args: { login: 'String!' } }, - organizationVerifiedDomainEmails: { - __type: '[String!]!', - __args: { login: 'String!' }, - }, - organizations: { - __type: 'OrganizationConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - packages: { - __type: 'PackageConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - names: '[String]', - orderBy: 'PackageOrder', - packageType: 'PackageType', - repositoryId: 'ID', - }, - }, - pinnableItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItems: { - __type: 'PinnableItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - types: '[PinnableItemType!]', - }, - }, - pinnedItemsRemaining: { __type: 'Int!' }, - project: { __type: 'Project', __args: { number: 'Int!' } }, - projectNext: { __type: 'ProjectNext', __args: { number: 'Int!' } }, - projects: { - __type: 'ProjectConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'ProjectOrder', - search: 'String', - states: '[ProjectState!]', - }, - }, - projectsNext: { - __type: 'ProjectNextConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String', - sortBy: 'ProjectNextOrderField', - }, - }, - projectsResourcePath: { __type: 'URI!' }, - projectsUrl: { __type: 'URI!' }, - publicKeys: { - __type: 'PublicKeyConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - pullRequests: { - __type: 'PullRequestConnection!', - __args: { - after: 'String', - baseRefName: 'String', - before: 'String', - first: 'Int', - headRefName: 'String', - labels: '[String!]', - last: 'Int', - orderBy: 'IssueOrder', - states: '[PullRequestState!]', - }, - }, - repositories: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isFork: 'Boolean', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - }, - }, - repositoriesContributedTo: { - __type: 'RepositoryConnection!', - __args: { - after: 'String', - before: 'String', - contributionTypes: '[RepositoryContributionType]', - first: 'Int', - includeUserRepositories: 'Boolean', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - privacy: 'RepositoryPrivacy', - }, - }, - repository: { - __type: 'Repository', - __args: { followRenames: 'Boolean', name: 'String!' }, - }, - repositoryDiscussionComments: { - __type: 'DiscussionCommentConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - onlyAnswers: 'Boolean', - repositoryId: 'ID', - }, - }, - repositoryDiscussions: { - __type: 'DiscussionConnection!', - __args: { - after: 'String', - answered: 'Boolean', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'DiscussionOrder', - repositoryId: 'ID', - }, - }, - resourcePath: { __type: 'URI!' }, - savedReplies: { - __type: 'SavedReplyConnection', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SavedReplyOrder', - }, - }, - sponsoring: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - }, - }, - sponsors: { - __type: 'SponsorConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorOrder', - tierId: 'ID', - }, - }, - sponsorsActivities: { - __type: 'SponsorsActivityConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorsActivityOrder', - period: 'SponsorsActivityPeriod', - }, - }, - sponsorsListing: { __type: 'SponsorsListing' }, - sponsorshipForViewerAsSponsor: { __type: 'Sponsorship' }, - sponsorshipForViewerAsSponsorable: { __type: 'Sponsorship' }, - sponsorshipNewsletters: { - __type: 'SponsorshipNewsletterConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipNewsletterOrder', - }, - }, - sponsorshipsAsMaintainer: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - includePrivate: 'Boolean', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - sponsorshipsAsSponsor: { - __type: 'SponsorshipConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'SponsorshipOrder', - }, - }, - starredRepositories: { - __type: 'StarredRepositoryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'StarOrder', - ownedByViewer: 'Boolean', - }, - }, - status: { __type: 'UserStatus' }, - topRepositories: { - __type: 'RepositoryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - orderBy: 'RepositoryOrder!', - since: 'DateTime', - }, - }, - twitterUsername: { __type: 'String' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - viewerCanChangePinnedItems: { __type: 'Boolean!' }, - viewerCanCreateProjects: { __type: 'Boolean!' }, - viewerCanFollow: { __type: 'Boolean!' }, - viewerCanSponsor: { __type: 'Boolean!' }, - viewerIsFollowing: { __type: 'Boolean!' }, - viewerIsSponsoring: { __type: 'Boolean!' }, - watching: { - __type: 'RepositoryConnection!', - __args: { - affiliations: '[RepositoryAffiliation]', - after: 'String', - before: 'String', - first: 'Int', - isLocked: 'Boolean', - last: 'Int', - orderBy: 'RepositoryOrder', - ownerAffiliations: '[RepositoryAffiliation]', - privacy: 'RepositoryPrivacy', - }, - }, - websiteUrl: { __type: 'URI' }, - }, - UserBlockedEvent: { - __typename: { __type: 'String!' }, - actor: { __type: 'Actor' }, - blockDuration: { __type: 'UserBlockDuration!' }, - createdAt: { __type: 'DateTime!' }, - id: { __type: 'ID!' }, - subject: { __type: 'User' }, - }, - UserConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[UserEdge]' }, - nodes: { __type: '[User]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - UserContentEdit: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - deletedAt: { __type: 'DateTime' }, - deletedBy: { __type: 'Actor' }, - diff: { __type: 'String' }, - editedAt: { __type: 'DateTime!' }, - editor: { __type: 'Actor' }, - id: { __type: 'ID!' }, - updatedAt: { __type: 'DateTime!' }, - }, - UserContentEditConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[UserContentEditEdge]' }, - nodes: { __type: '[UserContentEdit]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - UserContentEditEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'UserContentEdit' }, - }, - UserEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'User' }, - }, - UserEmailMetadata: { - __typename: { __type: 'String!' }, - primary: { __type: 'Boolean' }, - type: { __type: 'String' }, - value: { __type: 'String!' }, - }, - UserStatus: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - emoji: { __type: 'String' }, - emojiHTML: { __type: 'HTML' }, - expiresAt: { __type: 'DateTime' }, - id: { __type: 'ID!' }, - indicatesLimitedAvailability: { __type: 'Boolean!' }, - message: { __type: 'String' }, - organization: { __type: 'Organization' }, - updatedAt: { __type: 'DateTime!' }, - user: { __type: 'User!' }, - }, - UserStatusConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[UserStatusEdge]' }, - nodes: { __type: '[UserStatus]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - UserStatusEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'UserStatus' }, - }, - UserStatusOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'UserStatusOrderField!' }, - }, - VerifiableDomain: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - dnsHostName: { __type: 'URI' }, - domain: { __type: 'URI!' }, - hasFoundHostName: { __type: 'Boolean!' }, - hasFoundVerificationToken: { __type: 'Boolean!' }, - id: { __type: 'ID!' }, - isApproved: { __type: 'Boolean!' }, - isRequiredForPolicyEnforcement: { __type: 'Boolean!' }, - isVerified: { __type: 'Boolean!' }, - owner: { __type: 'VerifiableDomainOwner!' }, - punycodeEncodedDomain: { __type: 'URI!' }, - tokenExpirationTime: { __type: 'DateTime' }, - updatedAt: { __type: 'DateTime!' }, - verificationToken: { __type: 'String' }, - }, - VerifiableDomainConnection: { - __typename: { __type: 'String!' }, - edges: { __type: '[VerifiableDomainEdge]' }, - nodes: { __type: '[VerifiableDomain]' }, - pageInfo: { __type: 'PageInfo!' }, - totalCount: { __type: 'Int!' }, - }, - VerifiableDomainEdge: { - __typename: { __type: 'String!' }, - cursor: { __type: 'String!' }, - node: { __type: 'VerifiableDomain' }, - }, - VerifiableDomainOrder: { - direction: { __type: 'OrderDirection!' }, - field: { __type: 'VerifiableDomainOrderField!' }, - }, - VerifiableDomainOwner: { - __typename: { __type: 'String!' }, - $on: { __type: '$VerifiableDomainOwner!' }, - }, - VerifyVerifiableDomainInput: { - clientMutationId: { __type: 'String' }, - id: { __type: 'ID!' }, - }, - VerifyVerifiableDomainPayload: { - __typename: { __type: 'String!' }, - clientMutationId: { __type: 'String' }, - domain: { __type: 'VerifiableDomain' }, - }, - ViewerHovercardContext: { - __typename: { __type: 'String!' }, - message: { __type: 'String!' }, - octicon: { __type: 'String!' }, - viewer: { __type: 'User!' }, - }, - Votable: { - __typename: { __type: 'String!' }, - upvoteCount: { __type: 'Int!' }, - viewerCanUpvote: { __type: 'Boolean!' }, - viewerHasUpvoted: { __type: 'Boolean!' }, - $on: { __type: '$Votable!' }, - }, - Workflow: { - __typename: { __type: 'String!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - id: { __type: 'ID!' }, - name: { __type: 'String!' }, - updatedAt: { __type: 'DateTime!' }, - }, - WorkflowRun: { - __typename: { __type: 'String!' }, - checkSuite: { __type: 'CheckSuite!' }, - createdAt: { __type: 'DateTime!' }, - databaseId: { __type: 'Int' }, - deploymentReviews: { - __type: 'DeploymentReviewConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - id: { __type: 'ID!' }, - pendingDeploymentRequests: { - __type: 'DeploymentRequestConnection!', - __args: { after: 'String', before: 'String', first: 'Int', last: 'Int' }, - }, - resourcePath: { __type: 'URI!' }, - runNumber: { __type: 'Int!' }, - updatedAt: { __type: 'DateTime!' }, - url: { __type: 'URI!' }, - workflow: { __type: 'Workflow!' }, - }, - mutation: { - __typename: { __type: 'String!' }, - acceptEnterpriseAdministratorInvitation: { - __type: 'AcceptEnterpriseAdministratorInvitationPayload', - __args: { input: 'AcceptEnterpriseAdministratorInvitationInput!' }, - }, - acceptTopicSuggestion: { - __type: 'AcceptTopicSuggestionPayload', - __args: { input: 'AcceptTopicSuggestionInput!' }, - }, - addAssigneesToAssignable: { - __type: 'AddAssigneesToAssignablePayload', - __args: { input: 'AddAssigneesToAssignableInput!' }, - }, - addComment: { - __type: 'AddCommentPayload', - __args: { input: 'AddCommentInput!' }, - }, - addDiscussionComment: { - __type: 'AddDiscussionCommentPayload', - __args: { input: 'AddDiscussionCommentInput!' }, - }, - addEnterpriseSupportEntitlement: { - __type: 'AddEnterpriseSupportEntitlementPayload', - __args: { input: 'AddEnterpriseSupportEntitlementInput!' }, - }, - addLabelsToLabelable: { - __type: 'AddLabelsToLabelablePayload', - __args: { input: 'AddLabelsToLabelableInput!' }, - }, - addProjectCard: { - __type: 'AddProjectCardPayload', - __args: { input: 'AddProjectCardInput!' }, - }, - addProjectColumn: { - __type: 'AddProjectColumnPayload', - __args: { input: 'AddProjectColumnInput!' }, - }, - addProjectNextItem: { - __type: 'AddProjectNextItemPayload', - __args: { input: 'AddProjectNextItemInput!' }, - }, - addPullRequestReview: { - __type: 'AddPullRequestReviewPayload', - __args: { input: 'AddPullRequestReviewInput!' }, - }, - addPullRequestReviewComment: { - __type: 'AddPullRequestReviewCommentPayload', - __args: { input: 'AddPullRequestReviewCommentInput!' }, - }, - addPullRequestReviewThread: { - __type: 'AddPullRequestReviewThreadPayload', - __args: { input: 'AddPullRequestReviewThreadInput!' }, - }, - addReaction: { - __type: 'AddReactionPayload', - __args: { input: 'AddReactionInput!' }, - }, - addStar: { __type: 'AddStarPayload', __args: { input: 'AddStarInput!' } }, - addUpvote: { - __type: 'AddUpvotePayload', - __args: { input: 'AddUpvoteInput!' }, - }, - addVerifiableDomain: { - __type: 'AddVerifiableDomainPayload', - __args: { input: 'AddVerifiableDomainInput!' }, - }, - approveDeployments: { - __type: 'ApproveDeploymentsPayload', - __args: { input: 'ApproveDeploymentsInput!' }, - }, - approveVerifiableDomain: { - __type: 'ApproveVerifiableDomainPayload', - __args: { input: 'ApproveVerifiableDomainInput!' }, - }, - archiveRepository: { - __type: 'ArchiveRepositoryPayload', - __args: { input: 'ArchiveRepositoryInput!' }, - }, - cancelEnterpriseAdminInvitation: { - __type: 'CancelEnterpriseAdminInvitationPayload', - __args: { input: 'CancelEnterpriseAdminInvitationInput!' }, - }, - cancelSponsorship: { - __type: 'CancelSponsorshipPayload', - __args: { input: 'CancelSponsorshipInput!' }, - }, - changeUserStatus: { - __type: 'ChangeUserStatusPayload', - __args: { input: 'ChangeUserStatusInput!' }, - }, - clearLabelsFromLabelable: { - __type: 'ClearLabelsFromLabelablePayload', - __args: { input: 'ClearLabelsFromLabelableInput!' }, - }, - cloneProject: { - __type: 'CloneProjectPayload', - __args: { input: 'CloneProjectInput!' }, - }, - cloneTemplateRepository: { - __type: 'CloneTemplateRepositoryPayload', - __args: { input: 'CloneTemplateRepositoryInput!' }, - }, - closeIssue: { - __type: 'CloseIssuePayload', - __args: { input: 'CloseIssueInput!' }, - }, - closePullRequest: { - __type: 'ClosePullRequestPayload', - __args: { input: 'ClosePullRequestInput!' }, - }, - convertProjectCardNoteToIssue: { - __type: 'ConvertProjectCardNoteToIssuePayload', - __args: { input: 'ConvertProjectCardNoteToIssueInput!' }, - }, - convertPullRequestToDraft: { - __type: 'ConvertPullRequestToDraftPayload', - __args: { input: 'ConvertPullRequestToDraftInput!' }, - }, - createBranchProtectionRule: { - __type: 'CreateBranchProtectionRulePayload', - __args: { input: 'CreateBranchProtectionRuleInput!' }, - }, - createCheckRun: { - __type: 'CreateCheckRunPayload', - __args: { input: 'CreateCheckRunInput!' }, - }, - createCheckSuite: { - __type: 'CreateCheckSuitePayload', - __args: { input: 'CreateCheckSuiteInput!' }, - }, - createCommitOnBranch: { - __type: 'CreateCommitOnBranchPayload', - __args: { input: 'CreateCommitOnBranchInput!' }, - }, - createDiscussion: { - __type: 'CreateDiscussionPayload', - __args: { input: 'CreateDiscussionInput!' }, - }, - createEnterpriseOrganization: { - __type: 'CreateEnterpriseOrganizationPayload', - __args: { input: 'CreateEnterpriseOrganizationInput!' }, - }, - createEnvironment: { - __type: 'CreateEnvironmentPayload', - __args: { input: 'CreateEnvironmentInput!' }, - }, - createIpAllowListEntry: { - __type: 'CreateIpAllowListEntryPayload', - __args: { input: 'CreateIpAllowListEntryInput!' }, - }, - createIssue: { - __type: 'CreateIssuePayload', - __args: { input: 'CreateIssueInput!' }, - }, - createProject: { - __type: 'CreateProjectPayload', - __args: { input: 'CreateProjectInput!' }, - }, - createPullRequest: { - __type: 'CreatePullRequestPayload', - __args: { input: 'CreatePullRequestInput!' }, - }, - createRef: { - __type: 'CreateRefPayload', - __args: { input: 'CreateRefInput!' }, - }, - createRepository: { - __type: 'CreateRepositoryPayload', - __args: { input: 'CreateRepositoryInput!' }, - }, - createSponsorship: { - __type: 'CreateSponsorshipPayload', - __args: { input: 'CreateSponsorshipInput!' }, - }, - createTeamDiscussion: { - __type: 'CreateTeamDiscussionPayload', - __args: { input: 'CreateTeamDiscussionInput!' }, - }, - createTeamDiscussionComment: { - __type: 'CreateTeamDiscussionCommentPayload', - __args: { input: 'CreateTeamDiscussionCommentInput!' }, - }, - declineTopicSuggestion: { - __type: 'DeclineTopicSuggestionPayload', - __args: { input: 'DeclineTopicSuggestionInput!' }, - }, - deleteBranchProtectionRule: { - __type: 'DeleteBranchProtectionRulePayload', - __args: { input: 'DeleteBranchProtectionRuleInput!' }, - }, - deleteDeployment: { - __type: 'DeleteDeploymentPayload', - __args: { input: 'DeleteDeploymentInput!' }, - }, - deleteDiscussion: { - __type: 'DeleteDiscussionPayload', - __args: { input: 'DeleteDiscussionInput!' }, - }, - deleteDiscussionComment: { - __type: 'DeleteDiscussionCommentPayload', - __args: { input: 'DeleteDiscussionCommentInput!' }, - }, - deleteEnvironment: { - __type: 'DeleteEnvironmentPayload', - __args: { input: 'DeleteEnvironmentInput!' }, - }, - deleteIpAllowListEntry: { - __type: 'DeleteIpAllowListEntryPayload', - __args: { input: 'DeleteIpAllowListEntryInput!' }, - }, - deleteIssue: { - __type: 'DeleteIssuePayload', - __args: { input: 'DeleteIssueInput!' }, - }, - deleteIssueComment: { - __type: 'DeleteIssueCommentPayload', - __args: { input: 'DeleteIssueCommentInput!' }, - }, - deleteProject: { - __type: 'DeleteProjectPayload', - __args: { input: 'DeleteProjectInput!' }, - }, - deleteProjectCard: { - __type: 'DeleteProjectCardPayload', - __args: { input: 'DeleteProjectCardInput!' }, - }, - deleteProjectColumn: { - __type: 'DeleteProjectColumnPayload', - __args: { input: 'DeleteProjectColumnInput!' }, - }, - deleteProjectNextItem: { - __type: 'DeleteProjectNextItemPayload', - __args: { input: 'DeleteProjectNextItemInput!' }, - }, - deletePullRequestReview: { - __type: 'DeletePullRequestReviewPayload', - __args: { input: 'DeletePullRequestReviewInput!' }, - }, - deletePullRequestReviewComment: { - __type: 'DeletePullRequestReviewCommentPayload', - __args: { input: 'DeletePullRequestReviewCommentInput!' }, - }, - deleteRef: { - __type: 'DeleteRefPayload', - __args: { input: 'DeleteRefInput!' }, - }, - deleteTeamDiscussion: { - __type: 'DeleteTeamDiscussionPayload', - __args: { input: 'DeleteTeamDiscussionInput!' }, - }, - deleteTeamDiscussionComment: { - __type: 'DeleteTeamDiscussionCommentPayload', - __args: { input: 'DeleteTeamDiscussionCommentInput!' }, - }, - deleteVerifiableDomain: { - __type: 'DeleteVerifiableDomainPayload', - __args: { input: 'DeleteVerifiableDomainInput!' }, - }, - disablePullRequestAutoMerge: { - __type: 'DisablePullRequestAutoMergePayload', - __args: { input: 'DisablePullRequestAutoMergeInput!' }, - }, - dismissPullRequestReview: { - __type: 'DismissPullRequestReviewPayload', - __args: { input: 'DismissPullRequestReviewInput!' }, - }, - dismissRepositoryVulnerabilityAlert: { - __type: 'DismissRepositoryVulnerabilityAlertPayload', - __args: { input: 'DismissRepositoryVulnerabilityAlertInput!' }, - }, - enablePullRequestAutoMerge: { - __type: 'EnablePullRequestAutoMergePayload', - __args: { input: 'EnablePullRequestAutoMergeInput!' }, - }, - followUser: { - __type: 'FollowUserPayload', - __args: { input: 'FollowUserInput!' }, - }, - inviteEnterpriseAdmin: { - __type: 'InviteEnterpriseAdminPayload', - __args: { input: 'InviteEnterpriseAdminInput!' }, - }, - linkRepositoryToProject: { - __type: 'LinkRepositoryToProjectPayload', - __args: { input: 'LinkRepositoryToProjectInput!' }, - }, - lockLockable: { - __type: 'LockLockablePayload', - __args: { input: 'LockLockableInput!' }, - }, - markDiscussionCommentAsAnswer: { - __type: 'MarkDiscussionCommentAsAnswerPayload', - __args: { input: 'MarkDiscussionCommentAsAnswerInput!' }, - }, - markFileAsViewed: { - __type: 'MarkFileAsViewedPayload', - __args: { input: 'MarkFileAsViewedInput!' }, - }, - markPullRequestReadyForReview: { - __type: 'MarkPullRequestReadyForReviewPayload', - __args: { input: 'MarkPullRequestReadyForReviewInput!' }, - }, - mergeBranch: { - __type: 'MergeBranchPayload', - __args: { input: 'MergeBranchInput!' }, - }, - mergePullRequest: { - __type: 'MergePullRequestPayload', - __args: { input: 'MergePullRequestInput!' }, - }, - minimizeComment: { - __type: 'MinimizeCommentPayload', - __args: { input: 'MinimizeCommentInput!' }, - }, - moveProjectCard: { - __type: 'MoveProjectCardPayload', - __args: { input: 'MoveProjectCardInput!' }, - }, - moveProjectColumn: { - __type: 'MoveProjectColumnPayload', - __args: { input: 'MoveProjectColumnInput!' }, - }, - pinIssue: { - __type: 'PinIssuePayload', - __args: { input: 'PinIssueInput!' }, - }, - regenerateEnterpriseIdentityProviderRecoveryCodes: { - __type: 'RegenerateEnterpriseIdentityProviderRecoveryCodesPayload', - __args: { - input: 'RegenerateEnterpriseIdentityProviderRecoveryCodesInput!', - }, - }, - regenerateVerifiableDomainToken: { - __type: 'RegenerateVerifiableDomainTokenPayload', - __args: { input: 'RegenerateVerifiableDomainTokenInput!' }, - }, - rejectDeployments: { - __type: 'RejectDeploymentsPayload', - __args: { input: 'RejectDeploymentsInput!' }, - }, - removeAssigneesFromAssignable: { - __type: 'RemoveAssigneesFromAssignablePayload', - __args: { input: 'RemoveAssigneesFromAssignableInput!' }, - }, - removeEnterpriseAdmin: { - __type: 'RemoveEnterpriseAdminPayload', - __args: { input: 'RemoveEnterpriseAdminInput!' }, - }, - removeEnterpriseIdentityProvider: { - __type: 'RemoveEnterpriseIdentityProviderPayload', - __args: { input: 'RemoveEnterpriseIdentityProviderInput!' }, - }, - removeEnterpriseOrganization: { - __type: 'RemoveEnterpriseOrganizationPayload', - __args: { input: 'RemoveEnterpriseOrganizationInput!' }, - }, - removeEnterpriseSupportEntitlement: { - __type: 'RemoveEnterpriseSupportEntitlementPayload', - __args: { input: 'RemoveEnterpriseSupportEntitlementInput!' }, - }, - removeLabelsFromLabelable: { - __type: 'RemoveLabelsFromLabelablePayload', - __args: { input: 'RemoveLabelsFromLabelableInput!' }, - }, - removeOutsideCollaborator: { - __type: 'RemoveOutsideCollaboratorPayload', - __args: { input: 'RemoveOutsideCollaboratorInput!' }, - }, - removeReaction: { - __type: 'RemoveReactionPayload', - __args: { input: 'RemoveReactionInput!' }, - }, - removeStar: { - __type: 'RemoveStarPayload', - __args: { input: 'RemoveStarInput!' }, - }, - removeUpvote: { - __type: 'RemoveUpvotePayload', - __args: { input: 'RemoveUpvoteInput!' }, - }, - reopenIssue: { - __type: 'ReopenIssuePayload', - __args: { input: 'ReopenIssueInput!' }, - }, - reopenPullRequest: { - __type: 'ReopenPullRequestPayload', - __args: { input: 'ReopenPullRequestInput!' }, - }, - requestReviews: { - __type: 'RequestReviewsPayload', - __args: { input: 'RequestReviewsInput!' }, - }, - rerequestCheckSuite: { - __type: 'RerequestCheckSuitePayload', - __args: { input: 'RerequestCheckSuiteInput!' }, - }, - resolveReviewThread: { - __type: 'ResolveReviewThreadPayload', - __args: { input: 'ResolveReviewThreadInput!' }, - }, - setEnterpriseIdentityProvider: { - __type: 'SetEnterpriseIdentityProviderPayload', - __args: { input: 'SetEnterpriseIdentityProviderInput!' }, - }, - setOrganizationInteractionLimit: { - __type: 'SetOrganizationInteractionLimitPayload', - __args: { input: 'SetOrganizationInteractionLimitInput!' }, - }, - setRepositoryInteractionLimit: { - __type: 'SetRepositoryInteractionLimitPayload', - __args: { input: 'SetRepositoryInteractionLimitInput!' }, - }, - setUserInteractionLimit: { - __type: 'SetUserInteractionLimitPayload', - __args: { input: 'SetUserInteractionLimitInput!' }, - }, - submitPullRequestReview: { - __type: 'SubmitPullRequestReviewPayload', - __args: { input: 'SubmitPullRequestReviewInput!' }, - }, - transferIssue: { - __type: 'TransferIssuePayload', - __args: { input: 'TransferIssueInput!' }, - }, - unarchiveRepository: { - __type: 'UnarchiveRepositoryPayload', - __args: { input: 'UnarchiveRepositoryInput!' }, - }, - unfollowUser: { - __type: 'UnfollowUserPayload', - __args: { input: 'UnfollowUserInput!' }, - }, - unlinkRepositoryFromProject: { - __type: 'UnlinkRepositoryFromProjectPayload', - __args: { input: 'UnlinkRepositoryFromProjectInput!' }, - }, - unlockLockable: { - __type: 'UnlockLockablePayload', - __args: { input: 'UnlockLockableInput!' }, - }, - unmarkDiscussionCommentAsAnswer: { - __type: 'UnmarkDiscussionCommentAsAnswerPayload', - __args: { input: 'UnmarkDiscussionCommentAsAnswerInput!' }, - }, - unmarkFileAsViewed: { - __type: 'UnmarkFileAsViewedPayload', - __args: { input: 'UnmarkFileAsViewedInput!' }, - }, - unmarkIssueAsDuplicate: { - __type: 'UnmarkIssueAsDuplicatePayload', - __args: { input: 'UnmarkIssueAsDuplicateInput!' }, - }, - unminimizeComment: { - __type: 'UnminimizeCommentPayload', - __args: { input: 'UnminimizeCommentInput!' }, - }, - unpinIssue: { - __type: 'UnpinIssuePayload', - __args: { input: 'UnpinIssueInput!' }, - }, - unresolveReviewThread: { - __type: 'UnresolveReviewThreadPayload', - __args: { input: 'UnresolveReviewThreadInput!' }, - }, - updateBranchProtectionRule: { - __type: 'UpdateBranchProtectionRulePayload', - __args: { input: 'UpdateBranchProtectionRuleInput!' }, - }, - updateCheckRun: { - __type: 'UpdateCheckRunPayload', - __args: { input: 'UpdateCheckRunInput!' }, - }, - updateCheckSuitePreferences: { - __type: 'UpdateCheckSuitePreferencesPayload', - __args: { input: 'UpdateCheckSuitePreferencesInput!' }, - }, - updateDiscussion: { - __type: 'UpdateDiscussionPayload', - __args: { input: 'UpdateDiscussionInput!' }, - }, - updateDiscussionComment: { - __type: 'UpdateDiscussionCommentPayload', - __args: { input: 'UpdateDiscussionCommentInput!' }, - }, - updateEnterpriseAdministratorRole: { - __type: 'UpdateEnterpriseAdministratorRolePayload', - __args: { input: 'UpdateEnterpriseAdministratorRoleInput!' }, - }, - updateEnterpriseAllowPrivateRepositoryForkingSetting: { - __type: 'UpdateEnterpriseAllowPrivateRepositoryForkingSettingPayload', - __args: { - input: 'UpdateEnterpriseAllowPrivateRepositoryForkingSettingInput!', - }, - }, - updateEnterpriseDefaultRepositoryPermissionSetting: { - __type: 'UpdateEnterpriseDefaultRepositoryPermissionSettingPayload', - __args: { - input: 'UpdateEnterpriseDefaultRepositoryPermissionSettingInput!', - }, - }, - updateEnterpriseMembersCanChangeRepositoryVisibilitySetting: { - __type: - 'UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingPayload', - __args: { - input: - 'UpdateEnterpriseMembersCanChangeRepositoryVisibilitySettingInput!', - }, - }, - updateEnterpriseMembersCanCreateRepositoriesSetting: { - __type: 'UpdateEnterpriseMembersCanCreateRepositoriesSettingPayload', - __args: { - input: 'UpdateEnterpriseMembersCanCreateRepositoriesSettingInput!', - }, - }, - updateEnterpriseMembersCanDeleteIssuesSetting: { - __type: 'UpdateEnterpriseMembersCanDeleteIssuesSettingPayload', - __args: { input: 'UpdateEnterpriseMembersCanDeleteIssuesSettingInput!' }, - }, - updateEnterpriseMembersCanDeleteRepositoriesSetting: { - __type: 'UpdateEnterpriseMembersCanDeleteRepositoriesSettingPayload', - __args: { - input: 'UpdateEnterpriseMembersCanDeleteRepositoriesSettingInput!', - }, - }, - updateEnterpriseMembersCanInviteCollaboratorsSetting: { - __type: 'UpdateEnterpriseMembersCanInviteCollaboratorsSettingPayload', - __args: { - input: 'UpdateEnterpriseMembersCanInviteCollaboratorsSettingInput!', - }, - }, - updateEnterpriseMembersCanMakePurchasesSetting: { - __type: 'UpdateEnterpriseMembersCanMakePurchasesSettingPayload', - __args: { input: 'UpdateEnterpriseMembersCanMakePurchasesSettingInput!' }, - }, - updateEnterpriseMembersCanUpdateProtectedBranchesSetting: { - __type: 'UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingPayload', - __args: { - input: 'UpdateEnterpriseMembersCanUpdateProtectedBranchesSettingInput!', - }, - }, - updateEnterpriseMembersCanViewDependencyInsightsSetting: { - __type: 'UpdateEnterpriseMembersCanViewDependencyInsightsSettingPayload', - __args: { - input: 'UpdateEnterpriseMembersCanViewDependencyInsightsSettingInput!', - }, - }, - updateEnterpriseOrganizationProjectsSetting: { - __type: 'UpdateEnterpriseOrganizationProjectsSettingPayload', - __args: { input: 'UpdateEnterpriseOrganizationProjectsSettingInput!' }, - }, - updateEnterpriseProfile: { - __type: 'UpdateEnterpriseProfilePayload', - __args: { input: 'UpdateEnterpriseProfileInput!' }, - }, - updateEnterpriseRepositoryProjectsSetting: { - __type: 'UpdateEnterpriseRepositoryProjectsSettingPayload', - __args: { input: 'UpdateEnterpriseRepositoryProjectsSettingInput!' }, - }, - updateEnterpriseTeamDiscussionsSetting: { - __type: 'UpdateEnterpriseTeamDiscussionsSettingPayload', - __args: { input: 'UpdateEnterpriseTeamDiscussionsSettingInput!' }, - }, - updateEnterpriseTwoFactorAuthenticationRequiredSetting: { - __type: 'UpdateEnterpriseTwoFactorAuthenticationRequiredSettingPayload', - __args: { - input: 'UpdateEnterpriseTwoFactorAuthenticationRequiredSettingInput!', - }, - }, - updateEnvironment: { - __type: 'UpdateEnvironmentPayload', - __args: { input: 'UpdateEnvironmentInput!' }, - }, - updateIpAllowListEnabledSetting: { - __type: 'UpdateIpAllowListEnabledSettingPayload', - __args: { input: 'UpdateIpAllowListEnabledSettingInput!' }, - }, - updateIpAllowListEntry: { - __type: 'UpdateIpAllowListEntryPayload', - __args: { input: 'UpdateIpAllowListEntryInput!' }, - }, - updateIpAllowListForInstalledAppsEnabledSetting: { - __type: 'UpdateIpAllowListForInstalledAppsEnabledSettingPayload', - __args: { - input: 'UpdateIpAllowListForInstalledAppsEnabledSettingInput!', - }, - }, - updateIssue: { - __type: 'UpdateIssuePayload', - __args: { input: 'UpdateIssueInput!' }, - }, - updateIssueComment: { - __type: 'UpdateIssueCommentPayload', - __args: { input: 'UpdateIssueCommentInput!' }, - }, - updateNotificationRestrictionSetting: { - __type: 'UpdateNotificationRestrictionSettingPayload', - __args: { input: 'UpdateNotificationRestrictionSettingInput!' }, - }, - updateOrganizationAllowPrivateRepositoryForkingSetting: { - __type: 'UpdateOrganizationAllowPrivateRepositoryForkingSettingPayload', - __args: { - input: 'UpdateOrganizationAllowPrivateRepositoryForkingSettingInput!', - }, - }, - updateProject: { - __type: 'UpdateProjectPayload', - __args: { input: 'UpdateProjectInput!' }, - }, - updateProjectCard: { - __type: 'UpdateProjectCardPayload', - __args: { input: 'UpdateProjectCardInput!' }, - }, - updateProjectColumn: { - __type: 'UpdateProjectColumnPayload', - __args: { input: 'UpdateProjectColumnInput!' }, - }, - updateProjectNextItemField: { - __type: 'UpdateProjectNextItemFieldPayload', - __args: { input: 'UpdateProjectNextItemFieldInput!' }, - }, - updatePullRequest: { - __type: 'UpdatePullRequestPayload', - __args: { input: 'UpdatePullRequestInput!' }, - }, - updatePullRequestBranch: { - __type: 'UpdatePullRequestBranchPayload', - __args: { input: 'UpdatePullRequestBranchInput!' }, - }, - updatePullRequestReview: { - __type: 'UpdatePullRequestReviewPayload', - __args: { input: 'UpdatePullRequestReviewInput!' }, - }, - updatePullRequestReviewComment: { - __type: 'UpdatePullRequestReviewCommentPayload', - __args: { input: 'UpdatePullRequestReviewCommentInput!' }, - }, - updateRef: { - __type: 'UpdateRefPayload', - __args: { input: 'UpdateRefInput!' }, - }, - updateRepository: { - __type: 'UpdateRepositoryPayload', - __args: { input: 'UpdateRepositoryInput!' }, - }, - updateSponsorshipPreferences: { - __type: 'UpdateSponsorshipPreferencesPayload', - __args: { input: 'UpdateSponsorshipPreferencesInput!' }, - }, - updateSubscription: { - __type: 'UpdateSubscriptionPayload', - __args: { input: 'UpdateSubscriptionInput!' }, - }, - updateTeamDiscussion: { - __type: 'UpdateTeamDiscussionPayload', - __args: { input: 'UpdateTeamDiscussionInput!' }, - }, - updateTeamDiscussionComment: { - __type: 'UpdateTeamDiscussionCommentPayload', - __args: { input: 'UpdateTeamDiscussionCommentInput!' }, - }, - updateTopics: { - __type: 'UpdateTopicsPayload', - __args: { input: 'UpdateTopicsInput!' }, - }, - verifyVerifiableDomain: { - __type: 'VerifyVerifiableDomainPayload', - __args: { input: 'VerifyVerifiableDomainInput!' }, - }, - }, - query: { - __typename: { __type: 'String!' }, - codeOfConduct: { __type: 'CodeOfConduct', __args: { key: 'String!' } }, - codesOfConduct: { __type: '[CodeOfConduct]' }, - enterprise: { - __type: 'Enterprise', - __args: { invitationToken: 'String', slug: 'String!' }, - }, - enterpriseAdministratorInvitation: { - __type: 'EnterpriseAdministratorInvitation', - __args: { - enterpriseSlug: 'String!', - role: 'EnterpriseAdministratorRole!', - userLogin: 'String!', - }, - }, - enterpriseAdministratorInvitationByToken: { - __type: 'EnterpriseAdministratorInvitation', - __args: { invitationToken: 'String!' }, - }, - license: { __type: 'License', __args: { key: 'String!' } }, - licenses: { __type: '[License]!' }, - marketplaceCategories: { - __type: '[MarketplaceCategory!]!', - __args: { - excludeEmpty: 'Boolean', - excludeSubcategories: 'Boolean', - includeCategories: '[String!]', - }, - }, - marketplaceCategory: { - __type: 'MarketplaceCategory', - __args: { slug: 'String!', useTopicAliases: 'Boolean' }, - }, - marketplaceListing: { - __type: 'MarketplaceListing', - __args: { slug: 'String!' }, - }, - marketplaceListings: { - __type: 'MarketplaceListingConnection!', - __args: { - adminId: 'ID', - after: 'String', - allStates: 'Boolean', - before: 'String', - categorySlug: 'String', - first: 'Int', - last: 'Int', - organizationId: 'ID', - primaryCategoryOnly: 'Boolean', - slugs: '[String]', - useTopicAliases: 'Boolean', - viewerCanAdmin: 'Boolean', - withFreeTrialsOnly: 'Boolean', - }, - }, - meta: { __type: 'GitHubMetadata!' }, - node: { __type: 'Node', __args: { id: 'ID!' } }, - nodes: { __type: '[Node]!', __args: { ids: '[ID!]!' } }, - organization: { __type: 'Organization', __args: { login: 'String!' } }, - rateLimit: { __type: 'RateLimit', __args: { dryRun: 'Boolean' } }, - relay: { __type: 'Query!' }, - repository: { - __type: 'Repository', - __args: { followRenames: 'Boolean', name: 'String!', owner: 'String!' }, - }, - repositoryOwner: { - __type: 'RepositoryOwner', - __args: { login: 'String!' }, - }, - resource: { __type: 'UniformResourceLocatable', __args: { url: 'URI!' } }, - search: { - __type: 'SearchResultItemConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - last: 'Int', - query: 'String!', - type: 'SearchType!', - }, - }, - securityAdvisories: { - __type: 'SecurityAdvisoryConnection!', - __args: { - after: 'String', - before: 'String', - first: 'Int', - identifier: 'SecurityAdvisoryIdentifierFilter', - last: 'Int', - orderBy: 'SecurityAdvisoryOrder', - publishedSince: 'DateTime', - updatedSince: 'DateTime', - }, - }, - securityAdvisory: { - __type: 'SecurityAdvisory', - __args: { ghsaId: 'String!' }, - }, - securityVulnerabilities: { - __type: 'SecurityVulnerabilityConnection!', - __args: { - after: 'String', - before: 'String', - ecosystem: 'SecurityAdvisoryEcosystem', - first: 'Int', - last: 'Int', - orderBy: 'SecurityVulnerabilityOrder', - package: 'String', - severities: '[SecurityAdvisorySeverity!]', - }, - }, - sponsorables: { - __type: 'SponsorableItemConnection!', - __args: { - after: 'String', - before: 'String', - dependencyEcosystem: 'SecurityAdvisoryEcosystem', - first: 'Int', - last: 'Int', - onlyDependencies: 'Boolean', - orderBy: 'SponsorableOrder', - orgLoginForDependencies: 'String', - }, - }, - topic: { __type: 'Topic', __args: { name: 'String!' } }, - user: { __type: 'User', __args: { login: 'String!' } }, - viewer: { __type: 'User!' }, - }, - subscription: {}, - [SchemaUnionsKey]: { - Node: [ - 'AddedToProjectEvent', - 'App', - 'AssignedEvent', - 'AutoMergeDisabledEvent', - 'AutoMergeEnabledEvent', - 'AutoRebaseEnabledEvent', - 'AutoSquashEnabledEvent', - 'AutomaticBaseChangeFailedEvent', - 'AutomaticBaseChangeSucceededEvent', - 'BaseRefChangedEvent', - 'BaseRefDeletedEvent', - 'BaseRefForcePushedEvent', - 'Blob', - 'Bot', - 'BranchProtectionRule', - 'BypassForcePushAllowance', - 'BypassPullRequestAllowance', - 'CWE', - 'CheckRun', - 'CheckSuite', - 'ClosedEvent', - 'CodeOfConduct', - 'CommentDeletedEvent', - 'Commit', - 'CommitComment', - 'CommitCommentThread', - 'ConnectedEvent', - 'ConvertToDraftEvent', - 'ConvertedNoteToIssueEvent', - 'ConvertedToDiscussionEvent', - 'CrossReferencedEvent', - 'DemilestonedEvent', - 'DeployKey', - 'DeployedEvent', - 'Deployment', - 'DeploymentEnvironmentChangedEvent', - 'DeploymentReview', - 'DeploymentStatus', - 'DisconnectedEvent', - 'Discussion', - 'DiscussionCategory', - 'DiscussionComment', - 'Enterprise', - 'EnterpriseAdministratorInvitation', - 'EnterpriseIdentityProvider', - 'EnterpriseRepositoryInfo', - 'EnterpriseServerInstallation', - 'EnterpriseServerUserAccount', - 'EnterpriseServerUserAccountEmail', - 'EnterpriseServerUserAccountsUpload', - 'EnterpriseUserAccount', - 'Environment', - 'ExternalIdentity', - 'Gist', - 'GistComment', - 'HeadRefDeletedEvent', - 'HeadRefForcePushedEvent', - 'HeadRefRestoredEvent', - 'IpAllowListEntry', - 'Issue', - 'IssueComment', - 'Label', - 'LabeledEvent', - 'Language', - 'License', - 'LockedEvent', - 'Mannequin', - 'MarkedAsDuplicateEvent', - 'MarketplaceCategory', - 'MarketplaceListing', - 'MembersCanDeleteReposClearAuditEntry', - 'MembersCanDeleteReposDisableAuditEntry', - 'MembersCanDeleteReposEnableAuditEntry', - 'MentionedEvent', - 'MergedEvent', - 'Milestone', - 'MilestonedEvent', - 'MovedColumnsInProjectEvent', - 'OIDCProvider', - 'OauthApplicationCreateAuditEntry', - 'OrgAddBillingManagerAuditEntry', - 'OrgAddMemberAuditEntry', - 'OrgBlockUserAuditEntry', - 'OrgConfigDisableCollaboratorsOnlyAuditEntry', - 'OrgConfigEnableCollaboratorsOnlyAuditEntry', - 'OrgCreateAuditEntry', - 'OrgDisableOauthAppRestrictionsAuditEntry', - 'OrgDisableSamlAuditEntry', - 'OrgDisableTwoFactorRequirementAuditEntry', - 'OrgEnableOauthAppRestrictionsAuditEntry', - 'OrgEnableSamlAuditEntry', - 'OrgEnableTwoFactorRequirementAuditEntry', - 'OrgInviteMemberAuditEntry', - 'OrgInviteToBusinessAuditEntry', - 'OrgOauthAppAccessApprovedAuditEntry', - 'OrgOauthAppAccessDeniedAuditEntry', - 'OrgOauthAppAccessRequestedAuditEntry', - 'OrgRemoveBillingManagerAuditEntry', - 'OrgRemoveMemberAuditEntry', - 'OrgRemoveOutsideCollaboratorAuditEntry', - 'OrgRestoreMemberAuditEntry', - 'OrgUnblockUserAuditEntry', - 'OrgUpdateDefaultRepositoryPermissionAuditEntry', - 'OrgUpdateMemberAuditEntry', - 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry', - 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry', - 'Organization', - 'OrganizationIdentityProvider', - 'OrganizationInvitation', - 'Package', - 'PackageFile', - 'PackageTag', - 'PackageVersion', - 'PinnedDiscussion', - 'PinnedEvent', - 'PinnedIssue', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'Project', - 'ProjectCard', - 'ProjectColumn', - 'ProjectNext', - 'ProjectNextItem', - 'ProjectNextItemFieldValue', - 'PublicKey', - 'PullRequest', - 'PullRequestCommit', - 'PullRequestCommitCommentThread', - 'PullRequestReview', - 'PullRequestReviewComment', - 'PullRequestReviewThread', - 'Push', - 'PushAllowance', - 'Reaction', - 'ReadyForReviewEvent', - 'Ref', - 'ReferencedEvent', - 'Release', - 'ReleaseAsset', - 'RemovedFromProjectEvent', - 'RenamedTitleEvent', - 'ReopenedEvent', - 'RepoAccessAuditEntry', - 'RepoAddMemberAuditEntry', - 'RepoAddTopicAuditEntry', - 'RepoArchivedAuditEntry', - 'RepoChangeMergeSettingAuditEntry', - 'RepoConfigDisableAnonymousGitAccessAuditEntry', - 'RepoConfigDisableCollaboratorsOnlyAuditEntry', - 'RepoConfigDisableContributorsOnlyAuditEntry', - 'RepoConfigDisableSockpuppetDisallowedAuditEntry', - 'RepoConfigEnableAnonymousGitAccessAuditEntry', - 'RepoConfigEnableCollaboratorsOnlyAuditEntry', - 'RepoConfigEnableContributorsOnlyAuditEntry', - 'RepoConfigEnableSockpuppetDisallowedAuditEntry', - 'RepoConfigLockAnonymousGitAccessAuditEntry', - 'RepoConfigUnlockAnonymousGitAccessAuditEntry', - 'RepoCreateAuditEntry', - 'RepoDestroyAuditEntry', - 'RepoRemoveMemberAuditEntry', - 'RepoRemoveTopicAuditEntry', - 'Repository', - 'RepositoryInvitation', - 'RepositoryTopic', - 'RepositoryVisibilityChangeDisableAuditEntry', - 'RepositoryVisibilityChangeEnableAuditEntry', - 'RepositoryVulnerabilityAlert', - 'ReviewDismissalAllowance', - 'ReviewDismissedEvent', - 'ReviewRequest', - 'ReviewRequestRemovedEvent', - 'ReviewRequestedEvent', - 'SavedReply', - 'SecurityAdvisory', - 'SponsorsActivity', - 'SponsorsListing', - 'SponsorsTier', - 'Sponsorship', - 'SponsorshipNewsletter', - 'Status', - 'StatusCheckRollup', - 'StatusContext', - 'SubscribedEvent', - 'Tag', - 'Team', - 'TeamAddMemberAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamChangeParentTeamAuditEntry', - 'TeamDiscussion', - 'TeamDiscussionComment', - 'TeamRemoveMemberAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - 'Topic', - 'TransferredEvent', - 'Tree', - 'UnassignedEvent', - 'UnlabeledEvent', - 'UnlockedEvent', - 'UnmarkedAsDuplicateEvent', - 'UnpinnedEvent', - 'UnsubscribedEvent', - 'User', - 'UserBlockedEvent', - 'UserContentEdit', - 'UserStatus', - 'VerifiableDomain', - 'Workflow', - 'WorkflowRun', - ], - Assignee: ['Bot', 'Mannequin', 'Organization', 'User'], - AuditEntryActor: ['Bot', 'Organization', 'User'], - GitObject: ['Blob', 'Commit', 'Tag', 'Tree'], - Actor: [ - 'Bot', - 'EnterpriseUserAccount', - 'Mannequin', - 'Organization', - 'User', - ], - UniformResourceLocatable: [ - 'Bot', - 'CheckRun', - 'ClosedEvent', - 'Commit', - 'ConvertToDraftEvent', - 'CrossReferencedEvent', - 'Gist', - 'Issue', - 'Mannequin', - 'MergedEvent', - 'Milestone', - 'Organization', - 'PullRequest', - 'PullRequestCommit', - 'ReadyForReviewEvent', - 'Release', - 'Repository', - 'RepositoryTopic', - 'ReviewDismissedEvent', - 'TeamDiscussion', - 'TeamDiscussionComment', - 'User', - ], - BranchActorAllowanceActor: ['Team', 'User'], - RequirableByPullRequest: ['CheckRun', 'StatusContext'], - Closer: ['Commit', 'PullRequest'], - Subscribable: [ - 'Commit', - 'Discussion', - 'Issue', - 'PullRequest', - 'Repository', - 'Team', - 'TeamDiscussion', - ], - Comment: [ - 'CommitComment', - 'Discussion', - 'DiscussionComment', - 'GistComment', - 'Issue', - 'IssueComment', - 'PullRequest', - 'PullRequestReview', - 'PullRequestReviewComment', - 'TeamDiscussion', - 'TeamDiscussionComment', - ], - Deletable: [ - 'CommitComment', - 'Discussion', - 'DiscussionComment', - 'GistComment', - 'IssueComment', - 'PullRequestReview', - 'PullRequestReviewComment', - 'TeamDiscussion', - 'TeamDiscussionComment', - ], - Minimizable: [ - 'CommitComment', - 'DiscussionComment', - 'GistComment', - 'IssueComment', - 'PullRequestReviewComment', - ], - Reactable: [ - 'CommitComment', - 'Discussion', - 'DiscussionComment', - 'Issue', - 'IssueComment', - 'PullRequest', - 'PullRequestReview', - 'PullRequestReviewComment', - 'Release', - 'TeamDiscussion', - 'TeamDiscussionComment', - ], - RepositoryNode: [ - 'CommitComment', - 'CommitCommentThread', - 'Discussion', - 'DiscussionCategory', - 'Issue', - 'IssueComment', - 'PinnedDiscussion', - 'PullRequest', - 'PullRequestCommitCommentThread', - 'PullRequestReview', - 'PullRequestReviewComment', - 'RepositoryVulnerabilityAlert', - ], - Updatable: [ - 'CommitComment', - 'Discussion', - 'DiscussionComment', - 'GistComment', - 'Issue', - 'IssueComment', - 'Project', - 'ProjectNext', - 'PullRequest', - 'PullRequestReview', - 'PullRequestReviewComment', - 'TeamDiscussion', - 'TeamDiscussionComment', - ], - UpdatableComment: [ - 'CommitComment', - 'DiscussionComment', - 'GistComment', - 'Issue', - 'IssueComment', - 'PullRequest', - 'PullRequestReview', - 'PullRequestReviewComment', - 'TeamDiscussion', - 'TeamDiscussionComment', - ], - Contribution: [ - 'CreatedCommitContribution', - 'CreatedIssueContribution', - 'CreatedPullRequestContribution', - 'CreatedPullRequestReviewContribution', - 'CreatedRepositoryContribution', - 'JoinedGitHubContribution', - 'RestrictedContribution', - ], - CreatedIssueOrRestrictedContribution: [ - 'CreatedIssueContribution', - 'RestrictedContribution', - ], - CreatedPullRequestOrRestrictedContribution: [ - 'CreatedPullRequestContribution', - 'RestrictedContribution', - ], - CreatedRepositoryOrRestrictedContribution: [ - 'CreatedRepositoryContribution', - 'RestrictedContribution', - ], - DeploymentReviewer: ['Team', 'User'], - Labelable: ['Discussion', 'Issue', 'PullRequest'], - Lockable: ['Discussion', 'Issue', 'PullRequest'], - Votable: ['Discussion', 'DiscussionComment'], - EnterpriseMember: ['EnterpriseUserAccount', 'User'], - HovercardContext: [ - 'GenericHovercardContext', - 'OrganizationTeamsHovercardContext', - 'OrganizationsHovercardContext', - 'ReviewStatusHovercardContext', - 'ViewerHovercardContext', - ], - Starrable: ['Gist', 'Repository', 'Topic'], - GitSignature: ['GpgSignature', 'SmimeSignature', 'UnknownSignature'], - IpAllowListOwner: ['App', 'Enterprise', 'Organization'], - Assignable: ['Issue', 'PullRequest'], - Closable: ['Issue', 'Milestone', 'Project', 'ProjectNext', 'PullRequest'], - ProjectNextOwner: ['Issue', 'Organization', 'PullRequest', 'User'], - IssueOrPullRequest: ['Issue', 'PullRequest'], - IssueTimelineItem: [ - 'AssignedEvent', - 'ClosedEvent', - 'Commit', - 'CrossReferencedEvent', - 'DemilestonedEvent', - 'IssueComment', - 'LabeledEvent', - 'LockedEvent', - 'MilestonedEvent', - 'ReferencedEvent', - 'RenamedTitleEvent', - 'ReopenedEvent', - 'SubscribedEvent', - 'TransferredEvent', - 'UnassignedEvent', - 'UnlabeledEvent', - 'UnlockedEvent', - 'UnsubscribedEvent', - 'UserBlockedEvent', - ], - IssueTimelineItems: [ - 'AddedToProjectEvent', - 'AssignedEvent', - 'ClosedEvent', - 'CommentDeletedEvent', - 'ConnectedEvent', - 'ConvertedNoteToIssueEvent', - 'ConvertedToDiscussionEvent', - 'CrossReferencedEvent', - 'DemilestonedEvent', - 'DisconnectedEvent', - 'IssueComment', - 'LabeledEvent', - 'LockedEvent', - 'MarkedAsDuplicateEvent', - 'MentionedEvent', - 'MilestonedEvent', - 'MovedColumnsInProjectEvent', - 'PinnedEvent', - 'ReferencedEvent', - 'RemovedFromProjectEvent', - 'RenamedTitleEvent', - 'ReopenedEvent', - 'SubscribedEvent', - 'TransferredEvent', - 'UnassignedEvent', - 'UnlabeledEvent', - 'UnlockedEvent', - 'UnmarkedAsDuplicateEvent', - 'UnpinnedEvent', - 'UnsubscribedEvent', - 'UserBlockedEvent', - ], - AuditEntry: [ - 'MembersCanDeleteReposClearAuditEntry', - 'MembersCanDeleteReposDisableAuditEntry', - 'MembersCanDeleteReposEnableAuditEntry', - 'OauthApplicationCreateAuditEntry', - 'OrgAddBillingManagerAuditEntry', - 'OrgAddMemberAuditEntry', - 'OrgBlockUserAuditEntry', - 'OrgConfigDisableCollaboratorsOnlyAuditEntry', - 'OrgConfigEnableCollaboratorsOnlyAuditEntry', - 'OrgCreateAuditEntry', - 'OrgDisableOauthAppRestrictionsAuditEntry', - 'OrgDisableSamlAuditEntry', - 'OrgDisableTwoFactorRequirementAuditEntry', - 'OrgEnableOauthAppRestrictionsAuditEntry', - 'OrgEnableSamlAuditEntry', - 'OrgEnableTwoFactorRequirementAuditEntry', - 'OrgInviteMemberAuditEntry', - 'OrgInviteToBusinessAuditEntry', - 'OrgOauthAppAccessApprovedAuditEntry', - 'OrgOauthAppAccessDeniedAuditEntry', - 'OrgOauthAppAccessRequestedAuditEntry', - 'OrgRemoveBillingManagerAuditEntry', - 'OrgRemoveMemberAuditEntry', - 'OrgRemoveOutsideCollaboratorAuditEntry', - 'OrgRestoreMemberAuditEntry', - 'OrgUnblockUserAuditEntry', - 'OrgUpdateDefaultRepositoryPermissionAuditEntry', - 'OrgUpdateMemberAuditEntry', - 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry', - 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'RepoAccessAuditEntry', - 'RepoAddMemberAuditEntry', - 'RepoAddTopicAuditEntry', - 'RepoArchivedAuditEntry', - 'RepoChangeMergeSettingAuditEntry', - 'RepoConfigDisableAnonymousGitAccessAuditEntry', - 'RepoConfigDisableCollaboratorsOnlyAuditEntry', - 'RepoConfigDisableContributorsOnlyAuditEntry', - 'RepoConfigDisableSockpuppetDisallowedAuditEntry', - 'RepoConfigEnableAnonymousGitAccessAuditEntry', - 'RepoConfigEnableCollaboratorsOnlyAuditEntry', - 'RepoConfigEnableContributorsOnlyAuditEntry', - 'RepoConfigEnableSockpuppetDisallowedAuditEntry', - 'RepoConfigLockAnonymousGitAccessAuditEntry', - 'RepoConfigUnlockAnonymousGitAccessAuditEntry', - 'RepoCreateAuditEntry', - 'RepoDestroyAuditEntry', - 'RepoRemoveMemberAuditEntry', - 'RepoRemoveTopicAuditEntry', - 'RepositoryVisibilityChangeDisableAuditEntry', - 'RepositoryVisibilityChangeEnableAuditEntry', - 'TeamAddMemberAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamChangeParentTeamAuditEntry', - 'TeamRemoveMemberAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - ], - EnterpriseAuditEntryData: [ - 'MembersCanDeleteReposClearAuditEntry', - 'MembersCanDeleteReposDisableAuditEntry', - 'MembersCanDeleteReposEnableAuditEntry', - 'OrgInviteToBusinessAuditEntry', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'RepositoryVisibilityChangeDisableAuditEntry', - 'RepositoryVisibilityChangeEnableAuditEntry', - ], - OrganizationAuditEntryData: [ - 'MembersCanDeleteReposClearAuditEntry', - 'MembersCanDeleteReposDisableAuditEntry', - 'MembersCanDeleteReposEnableAuditEntry', - 'OauthApplicationCreateAuditEntry', - 'OrgAddBillingManagerAuditEntry', - 'OrgAddMemberAuditEntry', - 'OrgBlockUserAuditEntry', - 'OrgConfigDisableCollaboratorsOnlyAuditEntry', - 'OrgConfigEnableCollaboratorsOnlyAuditEntry', - 'OrgCreateAuditEntry', - 'OrgDisableOauthAppRestrictionsAuditEntry', - 'OrgDisableSamlAuditEntry', - 'OrgDisableTwoFactorRequirementAuditEntry', - 'OrgEnableOauthAppRestrictionsAuditEntry', - 'OrgEnableSamlAuditEntry', - 'OrgEnableTwoFactorRequirementAuditEntry', - 'OrgInviteMemberAuditEntry', - 'OrgInviteToBusinessAuditEntry', - 'OrgOauthAppAccessApprovedAuditEntry', - 'OrgOauthAppAccessDeniedAuditEntry', - 'OrgOauthAppAccessRequestedAuditEntry', - 'OrgRemoveBillingManagerAuditEntry', - 'OrgRemoveMemberAuditEntry', - 'OrgRemoveOutsideCollaboratorAuditEntry', - 'OrgRestoreMemberAuditEntry', - 'OrgRestoreMemberMembershipOrganizationAuditEntryData', - 'OrgUnblockUserAuditEntry', - 'OrgUpdateDefaultRepositoryPermissionAuditEntry', - 'OrgUpdateMemberAuditEntry', - 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry', - 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'RepoAccessAuditEntry', - 'RepoAddMemberAuditEntry', - 'RepoAddTopicAuditEntry', - 'RepoArchivedAuditEntry', - 'RepoChangeMergeSettingAuditEntry', - 'RepoConfigDisableAnonymousGitAccessAuditEntry', - 'RepoConfigDisableCollaboratorsOnlyAuditEntry', - 'RepoConfigDisableContributorsOnlyAuditEntry', - 'RepoConfigDisableSockpuppetDisallowedAuditEntry', - 'RepoConfigEnableAnonymousGitAccessAuditEntry', - 'RepoConfigEnableCollaboratorsOnlyAuditEntry', - 'RepoConfigEnableContributorsOnlyAuditEntry', - 'RepoConfigEnableSockpuppetDisallowedAuditEntry', - 'RepoConfigLockAnonymousGitAccessAuditEntry', - 'RepoConfigUnlockAnonymousGitAccessAuditEntry', - 'RepoCreateAuditEntry', - 'RepoDestroyAuditEntry', - 'RepoRemoveMemberAuditEntry', - 'RepoRemoveTopicAuditEntry', - 'RepositoryVisibilityChangeDisableAuditEntry', - 'RepositoryVisibilityChangeEnableAuditEntry', - 'TeamAddMemberAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamChangeParentTeamAuditEntry', - 'TeamRemoveMemberAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - ], - MilestoneItem: ['Issue', 'PullRequest'], - OauthApplicationAuditEntryData: [ - 'OauthApplicationCreateAuditEntry', - 'OrgOauthAppAccessApprovedAuditEntry', - 'OrgOauthAppAccessDeniedAuditEntry', - 'OrgOauthAppAccessRequestedAuditEntry', - ], - OrgRestoreMemberAuditEntryMembership: [ - 'OrgRestoreMemberMembershipOrganizationAuditEntryData', - 'OrgRestoreMemberMembershipRepositoryAuditEntryData', - 'OrgRestoreMemberMembershipTeamAuditEntryData', - ], - RepositoryAuditEntryData: [ - 'OrgRestoreMemberMembershipRepositoryAuditEntryData', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'RepoAccessAuditEntry', - 'RepoAddMemberAuditEntry', - 'RepoAddTopicAuditEntry', - 'RepoArchivedAuditEntry', - 'RepoChangeMergeSettingAuditEntry', - 'RepoConfigDisableAnonymousGitAccessAuditEntry', - 'RepoConfigDisableCollaboratorsOnlyAuditEntry', - 'RepoConfigDisableContributorsOnlyAuditEntry', - 'RepoConfigDisableSockpuppetDisallowedAuditEntry', - 'RepoConfigEnableAnonymousGitAccessAuditEntry', - 'RepoConfigEnableCollaboratorsOnlyAuditEntry', - 'RepoConfigEnableContributorsOnlyAuditEntry', - 'RepoConfigEnableSockpuppetDisallowedAuditEntry', - 'RepoConfigLockAnonymousGitAccessAuditEntry', - 'RepoConfigUnlockAnonymousGitAccessAuditEntry', - 'RepoCreateAuditEntry', - 'RepoDestroyAuditEntry', - 'RepoRemoveMemberAuditEntry', - 'RepoRemoveTopicAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - ], - TeamAuditEntryData: [ - 'OrgRestoreMemberMembershipTeamAuditEntryData', - 'TeamAddMemberAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamChangeParentTeamAuditEntry', - 'TeamRemoveMemberAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - ], - MemberStatusable: ['Organization', 'Team'], - PackageOwner: ['Organization', 'Repository', 'User'], - ProfileOwner: ['Organization', 'User'], - ProjectOwner: ['Organization', 'Repository', 'User'], - RepositoryDiscussionAuthor: ['Organization', 'User'], - RepositoryDiscussionCommentAuthor: ['Organization', 'User'], - RepositoryOwner: ['Organization', 'User'], - Sponsorable: ['Organization', 'User'], - OrganizationAuditEntry: [ - 'MembersCanDeleteReposClearAuditEntry', - 'MembersCanDeleteReposDisableAuditEntry', - 'MembersCanDeleteReposEnableAuditEntry', - 'OauthApplicationCreateAuditEntry', - 'OrgAddBillingManagerAuditEntry', - 'OrgAddMemberAuditEntry', - 'OrgBlockUserAuditEntry', - 'OrgConfigDisableCollaboratorsOnlyAuditEntry', - 'OrgConfigEnableCollaboratorsOnlyAuditEntry', - 'OrgCreateAuditEntry', - 'OrgDisableOauthAppRestrictionsAuditEntry', - 'OrgDisableSamlAuditEntry', - 'OrgDisableTwoFactorRequirementAuditEntry', - 'OrgEnableOauthAppRestrictionsAuditEntry', - 'OrgEnableSamlAuditEntry', - 'OrgEnableTwoFactorRequirementAuditEntry', - 'OrgInviteMemberAuditEntry', - 'OrgInviteToBusinessAuditEntry', - 'OrgOauthAppAccessApprovedAuditEntry', - 'OrgOauthAppAccessDeniedAuditEntry', - 'OrgOauthAppAccessRequestedAuditEntry', - 'OrgRemoveBillingManagerAuditEntry', - 'OrgRemoveMemberAuditEntry', - 'OrgRemoveOutsideCollaboratorAuditEntry', - 'OrgRestoreMemberAuditEntry', - 'OrgUnblockUserAuditEntry', - 'OrgUpdateDefaultRepositoryPermissionAuditEntry', - 'OrgUpdateMemberAuditEntry', - 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry', - 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry', - 'PrivateRepositoryForkingDisableAuditEntry', - 'PrivateRepositoryForkingEnableAuditEntry', - 'RepoAccessAuditEntry', - 'RepoAddMemberAuditEntry', - 'RepoAddTopicAuditEntry', - 'RepoArchivedAuditEntry', - 'RepoChangeMergeSettingAuditEntry', - 'RepoConfigDisableAnonymousGitAccessAuditEntry', - 'RepoConfigDisableCollaboratorsOnlyAuditEntry', - 'RepoConfigDisableContributorsOnlyAuditEntry', - 'RepoConfigDisableSockpuppetDisallowedAuditEntry', - 'RepoConfigEnableAnonymousGitAccessAuditEntry', - 'RepoConfigEnableCollaboratorsOnlyAuditEntry', - 'RepoConfigEnableContributorsOnlyAuditEntry', - 'RepoConfigEnableSockpuppetDisallowedAuditEntry', - 'RepoConfigLockAnonymousGitAccessAuditEntry', - 'RepoConfigUnlockAnonymousGitAccessAuditEntry', - 'RepoCreateAuditEntry', - 'RepoDestroyAuditEntry', - 'RepoRemoveMemberAuditEntry', - 'RepoRemoveTopicAuditEntry', - 'RepositoryVisibilityChangeDisableAuditEntry', - 'RepositoryVisibilityChangeEnableAuditEntry', - 'TeamAddMemberAuditEntry', - 'TeamAddRepositoryAuditEntry', - 'TeamChangeParentTeamAuditEntry', - 'TeamRemoveMemberAuditEntry', - 'TeamRemoveRepositoryAuditEntry', - ], - PermissionGranter: ['Organization', 'Repository', 'Team'], - PinnableItem: ['Gist', 'Repository'], - ProjectCardItem: ['Issue', 'PullRequest'], - ProjectNextItemContent: ['Issue', 'PullRequest'], - PullRequestTimelineItem: [ - 'AssignedEvent', - 'BaseRefDeletedEvent', - 'BaseRefForcePushedEvent', - 'ClosedEvent', - 'Commit', - 'CommitCommentThread', - 'CrossReferencedEvent', - 'DemilestonedEvent', - 'DeployedEvent', - 'DeploymentEnvironmentChangedEvent', - 'HeadRefDeletedEvent', - 'HeadRefForcePushedEvent', - 'HeadRefRestoredEvent', - 'IssueComment', - 'LabeledEvent', - 'LockedEvent', - 'MergedEvent', - 'MilestonedEvent', - 'PullRequestReview', - 'PullRequestReviewComment', - 'PullRequestReviewThread', - 'ReferencedEvent', - 'RenamedTitleEvent', - 'ReopenedEvent', - 'ReviewDismissedEvent', - 'ReviewRequestRemovedEvent', - 'ReviewRequestedEvent', - 'SubscribedEvent', - 'UnassignedEvent', - 'UnlabeledEvent', - 'UnlockedEvent', - 'UnsubscribedEvent', - 'UserBlockedEvent', - ], - PullRequestTimelineItems: [ - 'AddedToProjectEvent', - 'AssignedEvent', - 'AutoMergeDisabledEvent', - 'AutoMergeEnabledEvent', - 'AutoRebaseEnabledEvent', - 'AutoSquashEnabledEvent', - 'AutomaticBaseChangeFailedEvent', - 'AutomaticBaseChangeSucceededEvent', - 'BaseRefChangedEvent', - 'BaseRefDeletedEvent', - 'BaseRefForcePushedEvent', - 'ClosedEvent', - 'CommentDeletedEvent', - 'ConnectedEvent', - 'ConvertToDraftEvent', - 'ConvertedNoteToIssueEvent', - 'ConvertedToDiscussionEvent', - 'CrossReferencedEvent', - 'DemilestonedEvent', - 'DeployedEvent', - 'DeploymentEnvironmentChangedEvent', - 'DisconnectedEvent', - 'HeadRefDeletedEvent', - 'HeadRefForcePushedEvent', - 'HeadRefRestoredEvent', - 'IssueComment', - 'LabeledEvent', - 'LockedEvent', - 'MarkedAsDuplicateEvent', - 'MentionedEvent', - 'MergedEvent', - 'MilestonedEvent', - 'MovedColumnsInProjectEvent', - 'PinnedEvent', - 'PullRequestCommit', - 'PullRequestCommitCommentThread', - 'PullRequestReview', - 'PullRequestReviewThread', - 'PullRequestRevisionMarker', - 'ReadyForReviewEvent', - 'ReferencedEvent', - 'RemovedFromProjectEvent', - 'RenamedTitleEvent', - 'ReopenedEvent', - 'ReviewDismissedEvent', - 'ReviewRequestRemovedEvent', - 'ReviewRequestedEvent', - 'SubscribedEvent', - 'TransferredEvent', - 'UnassignedEvent', - 'UnlabeledEvent', - 'UnlockedEvent', - 'UnmarkedAsDuplicateEvent', - 'UnpinnedEvent', - 'UnsubscribedEvent', - 'UserBlockedEvent', - ], - PushAllowanceActor: ['App', 'Team', 'User'], - Reactor: ['Bot', 'Mannequin', 'Organization', 'User'], - ReferencedSubject: ['Issue', 'PullRequest'], - RenamedTitleSubject: ['Issue', 'PullRequest'], - TopicAuditEntryData: [ - 'RepoAddTopicAuditEntry', - 'RepoRemoveTopicAuditEntry', - ], - RepositoryInfo: ['Repository'], - RequestedReviewer: ['Mannequin', 'Team', 'User'], - ReviewDismissalAllowanceActor: ['Team', 'User'], - SearchResultItem: [ - 'App', - 'Discussion', - 'Issue', - 'MarketplaceListing', - 'Organization', - 'PullRequest', - 'Repository', - 'User', - ], - Sponsor: ['Organization', 'User'], - SponsorableItem: ['Organization', 'User'], - StatusCheckRollupContext: ['CheckRun', 'StatusContext'], - VerifiableDomainOwner: ['Enterprise', 'Organization'], - }, -} as const; - -/** - * Autogenerated return type of AcceptEnterpriseAdministratorInvitation - */ -export interface AcceptEnterpriseAdministratorInvitationPayload { - __typename?: 'AcceptEnterpriseAdministratorInvitationPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The invitation that was accepted. - */ - invitation?: Maybe; - /** - * A message confirming the result of accepting an administrator invitation. - */ - message?: Maybe; -} - -/** - * Autogenerated return type of AcceptTopicSuggestion - */ -export interface AcceptTopicSuggestionPayload { - __typename?: 'AcceptTopicSuggestionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The accepted topic. - */ - topic?: Maybe; -} - -/** - * Represents an object which can take actions on GitHub. Typically a User or Bot. - */ -export interface Actor { - __typename?: - | 'Bot' - | 'EnterpriseUserAccount' - | 'Mannequin' - | 'Organization' - | 'User'; - /** - * A URL pointing to the actor's public avatar. - */ - avatarUrl: (args?: { - /** - * The size of the resulting square image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * The username of the actor. - */ - login: ScalarsEnums['String']; - /** - * The HTTP path for this actor. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this actor. - */ - url: ScalarsEnums['URI']; - $on: $Actor; -} - -/** - * Location information for an actor - */ -export interface ActorLocation { - __typename?: 'ActorLocation'; - /** - * City - */ - city?: Maybe; - /** - * Country name - */ - country?: Maybe; - /** - * Country code - */ - countryCode?: Maybe; - /** - * Region name - */ - region?: Maybe; - /** - * Region or state code - */ - regionCode?: Maybe; -} - -/** - * Autogenerated return type of AddAssigneesToAssignable - */ -export interface AddAssigneesToAssignablePayload { - __typename?: 'AddAssigneesToAssignablePayload'; - /** - * The item that was assigned. - */ - assignable?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of AddComment - */ -export interface AddCommentPayload { - __typename?: 'AddCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The edge from the subject's comment connection. - */ - commentEdge?: Maybe; - /** - * The subject - */ - subject?: Maybe; - /** - * The edge from the subject's timeline connection. - */ - timelineEdge?: Maybe; -} - -/** - * Autogenerated return type of AddDiscussionComment - */ -export interface AddDiscussionCommentPayload { - __typename?: 'AddDiscussionCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The newly created discussion comment. - */ - comment?: Maybe; -} - -/** - * Autogenerated return type of AddEnterpriseSupportEntitlement - */ -export interface AddEnterpriseSupportEntitlementPayload { - __typename?: 'AddEnterpriseSupportEntitlementPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * A message confirming the result of adding the support entitlement. - */ - message?: Maybe; -} - -/** - * Autogenerated return type of AddLabelsToLabelable - */ -export interface AddLabelsToLabelablePayload { - __typename?: 'AddLabelsToLabelablePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The item that was labeled. - */ - labelable?: Maybe; -} - -/** - * Autogenerated return type of AddProjectCard - */ -export interface AddProjectCardPayload { - __typename?: 'AddProjectCardPayload'; - /** - * The edge from the ProjectColumn's card connection. - */ - cardEdge?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The ProjectColumn - */ - projectColumn?: Maybe; -} - -/** - * Autogenerated return type of AddProjectColumn - */ -export interface AddProjectColumnPayload { - __typename?: 'AddProjectColumnPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The edge from the project's column connection. - */ - columnEdge?: Maybe; - /** - * The project - */ - project?: Maybe; -} - -/** - * Autogenerated return type of AddProjectNextItem - */ -export interface AddProjectNextItemPayload { - __typename?: 'AddProjectNextItemPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The item added to the project. - */ - projectNextItem?: Maybe; -} - -/** - * Autogenerated return type of AddPullRequestReviewComment - */ -export interface AddPullRequestReviewCommentPayload { - __typename?: 'AddPullRequestReviewCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The newly created comment. - */ - comment?: Maybe; - /** - * The edge from the review's comment connection. - */ - commentEdge?: Maybe; -} - -/** - * Autogenerated return type of AddPullRequestReview - */ -export interface AddPullRequestReviewPayload { - __typename?: 'AddPullRequestReviewPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The newly created pull request review. - */ - pullRequestReview?: Maybe; - /** - * The edge from the pull request's review connection. - */ - reviewEdge?: Maybe; -} - -/** - * Autogenerated return type of AddPullRequestReviewThread - */ -export interface AddPullRequestReviewThreadPayload { - __typename?: 'AddPullRequestReviewThreadPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The newly created thread. - */ - thread?: Maybe; -} - -/** - * Autogenerated return type of AddReaction - */ -export interface AddReactionPayload { - __typename?: 'AddReactionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The reaction object. - */ - reaction?: Maybe; - /** - * The reactable subject. - */ - subject?: Maybe; -} - -/** - * Autogenerated return type of AddStar - */ -export interface AddStarPayload { - __typename?: 'AddStarPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The starrable. - */ - starrable?: Maybe; -} - -/** - * Autogenerated return type of AddUpvote - */ -export interface AddUpvotePayload { - __typename?: 'AddUpvotePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The votable subject. - */ - subject?: Maybe; -} - -/** - * Autogenerated return type of AddVerifiableDomain - */ -export interface AddVerifiableDomainPayload { - __typename?: 'AddVerifiableDomainPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The verifiable domain that was added. - */ - domain?: Maybe; -} - -/** - * Represents a 'added_to_project' event on a given issue or pull request. - */ -export interface AddedToProjectEvent { - __typename?: 'AddedToProjectEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * A GitHub App. - */ -export interface App { - __typename?: 'App'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The description of the app. - */ - description?: Maybe; - id: ScalarsEnums['ID']; - /** - * The IP addresses of the app. - */ - ipAllowListEntries: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for IP allow list entries returned. - * @defaultValue `{"field":"ALLOW_LIST_VALUE","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => IpAllowListEntryConnection; - /** - * The hex color code, without the leading '#', for the logo background. - */ - logoBackgroundColor: ScalarsEnums['String']; - /** - * A URL pointing to the app's logo. - */ - logoUrl: (args?: { - /** - * The size of the resulting image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * The name of the app. - */ - name: ScalarsEnums['String']; - /** - * A slug based on the name of the app for use in URLs. - */ - slug: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The URL to the app's homepage. - */ - url: ScalarsEnums['URI']; -} - -/** - * Autogenerated return type of ApproveDeployments - */ -export interface ApproveDeploymentsPayload { - __typename?: 'ApproveDeploymentsPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The affected deployments. - */ - deployments?: Maybe>; -} - -/** - * Autogenerated return type of ApproveVerifiableDomain - */ -export interface ApproveVerifiableDomainPayload { - __typename?: 'ApproveVerifiableDomainPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The verifiable domain that was approved. - */ - domain?: Maybe; -} - -/** - * Autogenerated return type of ArchiveRepository - */ -export interface ArchiveRepositoryPayload { - __typename?: 'ArchiveRepositoryPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The repository that was marked as archived. - */ - repository?: Maybe; -} - -/** - * An object that can have users assigned to it. - */ -export interface Assignable { - __typename?: 'Issue' | 'PullRequest'; - /** - * A list of Users assigned to this object. - */ - assignees: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => UserConnection; - $on: $Assignable; -} - -/** - * Represents an 'assigned' event on any assignable object. - */ -export interface AssignedEvent { - __typename?: 'AssignedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the assignable associated with the event. - */ - assignable: Assignable; - /** - * Identifies the user or mannequin that was assigned. - */ - assignee?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Identifies the user who was assigned. - * @deprecated Assignees can now be mannequins. Use the `assignee` field instead. Removal on 2020-01-01 UTC. - */ - user?: Maybe; -} - -/** - * Types that can be assigned to issues. - */ -export interface Assignee { - __typename?: 'Bot' | 'Mannequin' | 'Organization' | 'User'; - $on: $Assignee; -} - -/** - * An entry in the audit log. - */ -export interface AuditEntry { - __typename?: - | 'MembersCanDeleteReposClearAuditEntry' - | 'MembersCanDeleteReposDisableAuditEntry' - | 'MembersCanDeleteReposEnableAuditEntry' - | 'OauthApplicationCreateAuditEntry' - | 'OrgAddBillingManagerAuditEntry' - | 'OrgAddMemberAuditEntry' - | 'OrgBlockUserAuditEntry' - | 'OrgConfigDisableCollaboratorsOnlyAuditEntry' - | 'OrgConfigEnableCollaboratorsOnlyAuditEntry' - | 'OrgCreateAuditEntry' - | 'OrgDisableOauthAppRestrictionsAuditEntry' - | 'OrgDisableSamlAuditEntry' - | 'OrgDisableTwoFactorRequirementAuditEntry' - | 'OrgEnableOauthAppRestrictionsAuditEntry' - | 'OrgEnableSamlAuditEntry' - | 'OrgEnableTwoFactorRequirementAuditEntry' - | 'OrgInviteMemberAuditEntry' - | 'OrgInviteToBusinessAuditEntry' - | 'OrgOauthAppAccessApprovedAuditEntry' - | 'OrgOauthAppAccessDeniedAuditEntry' - | 'OrgOauthAppAccessRequestedAuditEntry' - | 'OrgRemoveBillingManagerAuditEntry' - | 'OrgRemoveMemberAuditEntry' - | 'OrgRemoveOutsideCollaboratorAuditEntry' - | 'OrgRestoreMemberAuditEntry' - | 'OrgUnblockUserAuditEntry' - | 'OrgUpdateDefaultRepositoryPermissionAuditEntry' - | 'OrgUpdateMemberAuditEntry' - | 'OrgUpdateMemberRepositoryCreationPermissionAuditEntry' - | 'OrgUpdateMemberRepositoryInvitationPermissionAuditEntry' - | 'PrivateRepositoryForkingDisableAuditEntry' - | 'PrivateRepositoryForkingEnableAuditEntry' - | 'RepoAccessAuditEntry' - | 'RepoAddMemberAuditEntry' - | 'RepoAddTopicAuditEntry' - | 'RepoArchivedAuditEntry' - | 'RepoChangeMergeSettingAuditEntry' - | 'RepoConfigDisableAnonymousGitAccessAuditEntry' - | 'RepoConfigDisableCollaboratorsOnlyAuditEntry' - | 'RepoConfigDisableContributorsOnlyAuditEntry' - | 'RepoConfigDisableSockpuppetDisallowedAuditEntry' - | 'RepoConfigEnableAnonymousGitAccessAuditEntry' - | 'RepoConfigEnableCollaboratorsOnlyAuditEntry' - | 'RepoConfigEnableContributorsOnlyAuditEntry' - | 'RepoConfigEnableSockpuppetDisallowedAuditEntry' - | 'RepoConfigLockAnonymousGitAccessAuditEntry' - | 'RepoConfigUnlockAnonymousGitAccessAuditEntry' - | 'RepoCreateAuditEntry' - | 'RepoDestroyAuditEntry' - | 'RepoRemoveMemberAuditEntry' - | 'RepoRemoveTopicAuditEntry' - | 'RepositoryVisibilityChangeDisableAuditEntry' - | 'RepositoryVisibilityChangeEnableAuditEntry' - | 'TeamAddMemberAuditEntry' - | 'TeamAddRepositoryAuditEntry' - | 'TeamChangeParentTeamAuditEntry' - | 'TeamRemoveMemberAuditEntry' - | 'TeamRemoveRepositoryAuditEntry'; - /** - * The action name - */ - action: ScalarsEnums['String']; - /** - * The user who initiated the action - */ - actor?: Maybe; - /** - * The IP address of the actor - */ - actorIp?: Maybe; - /** - * A readable representation of the actor's location - */ - actorLocation?: Maybe; - /** - * The username of the user who initiated the action - */ - actorLogin?: Maybe; - /** - * The HTTP path for the actor. - */ - actorResourcePath?: Maybe; - /** - * The HTTP URL for the actor. - */ - actorUrl?: Maybe; - /** - * The time the action was initiated - */ - createdAt: ScalarsEnums['PreciseDateTime']; - /** - * The corresponding operation type for the action - */ - operationType?: Maybe; - /** - * The user affected by the action - */ - user?: Maybe; - /** - * For actions involving two users, the actor is the initiator and the user is the affected user. - */ - userLogin?: Maybe; - /** - * The HTTP path for the user. - */ - userResourcePath?: Maybe; - /** - * The HTTP URL for the user. - */ - userUrl?: Maybe; - $on: $AuditEntry; -} - -/** - * Types that can initiate an audit log event. - */ -export interface AuditEntryActor { - __typename?: 'Bot' | 'Organization' | 'User'; - $on: $AuditEntryActor; -} - -/** - * Represents a 'auto_merge_disabled' event on a given pull request. - */ -export interface AutoMergeDisabledEvent { - __typename?: 'AutoMergeDisabledEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The user who disabled auto-merge for this Pull Request - */ - disabler?: Maybe; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event - */ - pullRequest?: Maybe; - /** - * The reason auto-merge was disabled - */ - reason?: Maybe; - /** - * The reason_code relating to why auto-merge was disabled - */ - reasonCode?: Maybe; -} - -/** - * Represents a 'auto_merge_enabled' event on a given pull request. - */ -export interface AutoMergeEnabledEvent { - __typename?: 'AutoMergeEnabledEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The user who enabled auto-merge for this Pull Request - */ - enabler?: Maybe; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest?: Maybe; -} - -/** - * Represents an auto-merge request for a pull request - */ -export interface AutoMergeRequest { - __typename?: 'AutoMergeRequest'; - /** - * The email address of the author of this auto-merge request. - */ - authorEmail?: Maybe; - /** - * The commit message of the auto-merge request. - */ - commitBody?: Maybe; - /** - * The commit title of the auto-merge request. - */ - commitHeadline?: Maybe; - /** - * When was this auto-merge request was enabled. - */ - enabledAt?: Maybe; - /** - * The actor who created the auto-merge request. - */ - enabledBy?: Maybe; - /** - * The merge method of the auto-merge request. - */ - mergeMethod: ScalarsEnums['PullRequestMergeMethod']; - /** - * The pull request that this auto-merge request is set against. - */ - pullRequest: PullRequest; -} - -/** - * Represents a 'auto_rebase_enabled' event on a given pull request. - */ -export interface AutoRebaseEnabledEvent { - __typename?: 'AutoRebaseEnabledEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The user who enabled auto-merge (rebase) for this Pull Request - */ - enabler?: Maybe; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'auto_squash_enabled' event on a given pull request. - */ -export interface AutoSquashEnabledEvent { - __typename?: 'AutoSquashEnabledEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The user who enabled auto-merge (squash) for this Pull Request - */ - enabler?: Maybe; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'automatic_base_change_failed' event on a given pull request. - */ -export interface AutomaticBaseChangeFailedEvent { - __typename?: 'AutomaticBaseChangeFailedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * The new base for this PR - */ - newBase: ScalarsEnums['String']; - /** - * The old base for this PR - */ - oldBase: ScalarsEnums['String']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * Represents a 'automatic_base_change_succeeded' event on a given pull request. - */ -export interface AutomaticBaseChangeSucceededEvent { - __typename?: 'AutomaticBaseChangeSucceededEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * The new base for this PR - */ - newBase: ScalarsEnums['String']; - /** - * The old base for this PR - */ - oldBase: ScalarsEnums['String']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * Represents a 'base_ref_changed' event on a given issue or pull request. - */ -export interface BaseRefChangedEvent { - __typename?: 'BaseRefChangedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the name of the base ref for the pull request after it was changed. - */ - currentRefName: ScalarsEnums['String']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; - /** - * Identifies the name of the base ref for the pull request before it was changed. - */ - previousRefName: ScalarsEnums['String']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * Represents a 'base_ref_deleted' event on a given pull request. - */ -export interface BaseRefDeletedEvent { - __typename?: 'BaseRefDeletedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the name of the Ref associated with the `base_ref_deleted` event. - */ - baseRefName?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'base_ref_force_pushed' event on a given pull request. - */ -export interface BaseRefForcePushedEvent { - __typename?: 'BaseRefForcePushedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the after commit SHA for the 'base_ref_force_pushed' event. - */ - afterCommit?: Maybe; - /** - * Identifies the before commit SHA for the 'base_ref_force_pushed' event. - */ - beforeCommit?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; - /** - * Identifies the fully qualified ref name for the 'base_ref_force_pushed' event. - */ - ref?: Maybe; -} - -/** - * Represents a Git blame. - */ -export interface Blame { - __typename?: 'Blame'; - /** - * The list of ranges from a Git blame. - */ - ranges: Array; -} - -/** - * Represents a range of information from a Git blame. - */ -export interface BlameRange { - __typename?: 'BlameRange'; - /** - * Identifies the recency of the change, from 1 (new) to 10 (old). This is calculated as a 2-quantile and determines the length of distance between the median age of all the changes in the file and the recency of the current range's change. - */ - age: ScalarsEnums['Int']; - /** - * Identifies the line author - */ - commit: Commit; - /** - * The ending line for the range - */ - endingLine: ScalarsEnums['Int']; - /** - * The starting line for the range - */ - startingLine: ScalarsEnums['Int']; -} - -/** - * Represents a Git blob. - */ -export interface Blob { - __typename?: 'Blob'; - /** - * An abbreviated version of the Git object ID - */ - abbreviatedOid: ScalarsEnums['String']; - /** - * Byte size of Blob object - */ - byteSize: ScalarsEnums['Int']; - /** - * The HTTP path for this Git object - */ - commitResourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this Git object - */ - commitUrl: ScalarsEnums['URI']; - id: ScalarsEnums['ID']; - /** - * Indicates whether the Blob is binary or text. Returns null if unable to determine the encoding. - */ - isBinary?: Maybe; - /** - * Indicates whether the contents is truncated - */ - isTruncated: ScalarsEnums['Boolean']; - /** - * The Git object ID - */ - oid: ScalarsEnums['GitObjectID']; - /** - * The Repository the Git object belongs to - */ - repository: Repository; - /** - * UTF8 text data or null if the Blob is binary - */ - text?: Maybe; -} - -/** - * A special type of user which takes actions on behalf of GitHub Apps. - */ -export interface Bot { - __typename?: 'Bot'; - /** - * A URL pointing to the GitHub App's public avatar. - */ - avatarUrl: (args?: { - /** - * The size of the resulting square image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; - /** - * The username of the actor. - */ - login: ScalarsEnums['String']; - /** - * The HTTP path for this bot - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this bot - */ - url: ScalarsEnums['URI']; -} - -/** - * Types which can be actors for `BranchActorAllowance` objects. - */ -export interface BranchActorAllowanceActor { - __typename?: 'Team' | 'User'; - $on: $BranchActorAllowanceActor; -} - -/** - * A branch protection rule. - */ -export interface BranchProtectionRule { - __typename?: 'BranchProtectionRule'; - /** - * Can this branch be deleted. - */ - allowsDeletions: ScalarsEnums['Boolean']; - /** - * Are force pushes allowed on this branch. - */ - allowsForcePushes: ScalarsEnums['Boolean']; - /** - * A list of conflicts matching branches protection rule and other branch protection rules - */ - branchProtectionRuleConflicts: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => BranchProtectionRuleConflictConnection; - /** - * A list of actors able to force push for this branch protection rule. - */ - bypassForcePushAllowances: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => BypassForcePushAllowanceConnection; - /** - * A list of actors able to bypass PRs for this branch protection rule. - */ - bypassPullRequestAllowances: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => BypassPullRequestAllowanceConnection; - /** - * The actor who created this branch protection rule. - */ - creator?: Maybe; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * Will new commits pushed to matching branches dismiss pull request review approvals. - */ - dismissesStaleReviews: ScalarsEnums['Boolean']; - id: ScalarsEnums['ID']; - /** - * Can admins overwrite branch protection. - */ - isAdminEnforced: ScalarsEnums['Boolean']; - /** - * Repository refs that are protected by this rule - */ - matchingRefs: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Filters refs with query on name - */ - query?: Maybe; - }) => RefConnection; - /** - * Identifies the protection rule pattern. - */ - pattern: ScalarsEnums['String']; - /** - * A list push allowances for this branch protection rule. - */ - pushAllowances: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => PushAllowanceConnection; - /** - * The repository associated with this branch protection rule. - */ - repository?: Maybe; - /** - * Number of approving reviews required to update matching branches. - */ - requiredApprovingReviewCount?: Maybe; - /** - * List of required status check contexts that must pass for commits to be accepted to matching branches. - */ - requiredStatusCheckContexts?: Maybe>>; - /** - * List of required status checks that must pass for commits to be accepted to matching branches. - */ - requiredStatusChecks?: Maybe>; - /** - * Are approving reviews required to update matching branches. - */ - requiresApprovingReviews: ScalarsEnums['Boolean']; - /** - * Are reviews from code owners required to update matching branches. - */ - requiresCodeOwnerReviews: ScalarsEnums['Boolean']; - /** - * Are commits required to be signed. - */ - requiresCommitSignatures: ScalarsEnums['Boolean']; - /** - * Are conversations required to be resolved before merging. - */ - requiresConversationResolution: ScalarsEnums['Boolean']; - /** - * Are merge commits prohibited from being pushed to this branch. - */ - requiresLinearHistory: ScalarsEnums['Boolean']; - /** - * Are status checks required to update matching branches. - */ - requiresStatusChecks: ScalarsEnums['Boolean']; - /** - * Are branches required to be up to date before merging. - */ - requiresStrictStatusChecks: ScalarsEnums['Boolean']; - /** - * Is pushing to matching branches restricted. - */ - restrictsPushes: ScalarsEnums['Boolean']; - /** - * Is dismissal of pull request reviews restricted. - */ - restrictsReviewDismissals: ScalarsEnums['Boolean']; - /** - * A list review dismissal allowances for this branch protection rule. - */ - reviewDismissalAllowances: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => ReviewDismissalAllowanceConnection; -} - -/** - * A conflict between two branch protection rules. - */ -export interface BranchProtectionRuleConflict { - __typename?: 'BranchProtectionRuleConflict'; - /** - * Identifies the branch protection rule. - */ - branchProtectionRule?: Maybe; - /** - * Identifies the conflicting branch protection rule. - */ - conflictingBranchProtectionRule?: Maybe; - /** - * Identifies the branch ref that has conflicting rules - */ - ref?: Maybe; -} - -/** - * The connection type for BranchProtectionRuleConflict. - */ -export interface BranchProtectionRuleConflictConnection { - __typename?: 'BranchProtectionRuleConflictConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface BranchProtectionRuleConflictEdge { - __typename?: 'BranchProtectionRuleConflictEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for BranchProtectionRule. - */ -export interface BranchProtectionRuleConnection { - __typename?: 'BranchProtectionRuleConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface BranchProtectionRuleEdge { - __typename?: 'BranchProtectionRuleEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A team or user who has the ability to bypass a force push requirement on a protected branch. - */ -export interface BypassForcePushAllowance { - __typename?: 'BypassForcePushAllowance'; - /** - * The actor that can dismiss. - */ - actor?: Maybe; - /** - * Identifies the branch protection rule associated with the allowed user or team. - */ - branchProtectionRule?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * The connection type for BypassForcePushAllowance. - */ -export interface BypassForcePushAllowanceConnection { - __typename?: 'BypassForcePushAllowanceConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface BypassForcePushAllowanceEdge { - __typename?: 'BypassForcePushAllowanceEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A team or user who has the ability to bypass a pull request requirement on a protected branch. - */ -export interface BypassPullRequestAllowance { - __typename?: 'BypassPullRequestAllowance'; - /** - * The actor that can dismiss. - */ - actor?: Maybe; - /** - * Identifies the branch protection rule associated with the allowed user or team. - */ - branchProtectionRule?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * The connection type for BypassPullRequestAllowance. - */ -export interface BypassPullRequestAllowanceConnection { - __typename?: 'BypassPullRequestAllowanceConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface BypassPullRequestAllowanceEdge { - __typename?: 'BypassPullRequestAllowanceEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The Common Vulnerability Scoring System - */ -export interface CVSS { - __typename?: 'CVSS'; - /** - * The CVSS score associated with this advisory - */ - score: ScalarsEnums['Float']; - /** - * The CVSS vector string associated with this advisory - */ - vectorString?: Maybe; -} - -/** - * A common weakness enumeration - */ -export interface CWE { - __typename?: 'CWE'; - /** - * The id of the CWE - */ - cweId: ScalarsEnums['String']; - /** - * A detailed description of this CWE - */ - description: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - /** - * The name of this CWE - */ - name: ScalarsEnums['String']; -} - -/** - * The connection type for CWE. - */ -export interface CWEConnection { - __typename?: 'CWEConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CWEEdge { - __typename?: 'CWEEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Autogenerated return type of CancelEnterpriseAdminInvitation - */ -export interface CancelEnterpriseAdminInvitationPayload { - __typename?: 'CancelEnterpriseAdminInvitationPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The invitation that was canceled. - */ - invitation?: Maybe; - /** - * A message confirming the result of canceling an administrator invitation. - */ - message?: Maybe; -} - -/** - * Autogenerated return type of CancelSponsorship - */ -export interface CancelSponsorshipPayload { - __typename?: 'CancelSponsorshipPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The tier that was being used at the time of cancellation. - */ - sponsorsTier?: Maybe; -} - -/** - * Autogenerated return type of ChangeUserStatus - */ -export interface ChangeUserStatusPayload { - __typename?: 'ChangeUserStatusPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * Your updated status. - */ - status?: Maybe; -} - -/** - * A single check annotation. - */ -export interface CheckAnnotation { - __typename?: 'CheckAnnotation'; - /** - * The annotation's severity level. - */ - annotationLevel?: Maybe; - /** - * The path to the file that this annotation was made on. - */ - blobUrl: ScalarsEnums['URI']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The position of this annotation. - */ - location: CheckAnnotationSpan; - /** - * The annotation's message. - */ - message: ScalarsEnums['String']; - /** - * The path that this annotation was made on. - */ - path: ScalarsEnums['String']; - /** - * Additional information about the annotation. - */ - rawDetails?: Maybe; - /** - * The annotation's title - */ - title?: Maybe; -} - -/** - * The connection type for CheckAnnotation. - */ -export interface CheckAnnotationConnection { - __typename?: 'CheckAnnotationConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CheckAnnotationEdge { - __typename?: 'CheckAnnotationEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A character position in a check annotation. - */ -export interface CheckAnnotationPosition { - __typename?: 'CheckAnnotationPosition'; - /** - * Column number (1 indexed). - */ - column?: Maybe; - /** - * Line number (1 indexed). - */ - line: ScalarsEnums['Int']; -} - -/** - * An inclusive pair of positions for a check annotation. - */ -export interface CheckAnnotationSpan { - __typename?: 'CheckAnnotationSpan'; - /** - * End position (inclusive). - */ - end: CheckAnnotationPosition; - /** - * Start position (inclusive). - */ - start: CheckAnnotationPosition; -} - -/** - * A check run. - */ -export interface CheckRun { - __typename?: 'CheckRun'; - /** - * The check run's annotations - */ - annotations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * The check suite that this run is a part of. - */ - checkSuite: CheckSuite; - /** - * Identifies the date and time when the check run was completed. - */ - completedAt?: Maybe; - /** - * The conclusion of the check run. - */ - conclusion?: Maybe; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The corresponding deployment for this job, if any - */ - deployment?: Maybe; - /** - * The URL from which to find full details of the check run on the integrator's site. - */ - detailsUrl?: Maybe; - /** - * A reference for the check run on the integrator's system. - */ - externalId?: Maybe; - id: ScalarsEnums['ID']; - /** - * Whether this is required to pass before merging for a specific pull request. - */ - isRequired: (args?: { - /** - * The id of the pull request this is required for - */ - pullRequestId?: Maybe; - /** - * The number of the pull request this is required for - */ - pullRequestNumber?: Maybe; - }) => ScalarsEnums['Boolean']; - /** - * The name of the check for this check run. - */ - name: ScalarsEnums['String']; - /** - * Information about a pending deployment, if any, in this check run - */ - pendingDeploymentRequest?: Maybe; - /** - * The permalink to the check run summary. - */ - permalink: ScalarsEnums['URI']; - /** - * The repository associated with this check run. - */ - repository: Repository; - /** - * The HTTP path for this check run. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the check run was started. - */ - startedAt?: Maybe; - /** - * The current status of the check run. - */ - status: ScalarsEnums['CheckStatusState']; - /** - * The check run's steps - */ - steps: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Step number - */ - number?: Maybe; - }) => Maybe; - /** - * A string representing the check run's summary - */ - summary?: Maybe; - /** - * A string representing the check run's text - */ - text?: Maybe; - /** - * A string representing the check run - */ - title?: Maybe; - /** - * The HTTP URL for this check run. - */ - url: ScalarsEnums['URI']; -} - -/** - * The connection type for CheckRun. - */ -export interface CheckRunConnection { - __typename?: 'CheckRunConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CheckRunEdge { - __typename?: 'CheckRunEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A single check step. - */ -export interface CheckStep { - __typename?: 'CheckStep'; - /** - * Identifies the date and time when the check step was completed. - */ - completedAt?: Maybe; - /** - * The conclusion of the check step. - */ - conclusion?: Maybe; - /** - * A reference for the check step on the integrator's system. - */ - externalId?: Maybe; - /** - * The step's name. - */ - name: ScalarsEnums['String']; - /** - * The index of the step in the list of steps of the parent check run. - */ - number: ScalarsEnums['Int']; - /** - * Number of seconds to completion. - */ - secondsToCompletion?: Maybe; - /** - * Identifies the date and time when the check step was started. - */ - startedAt?: Maybe; - /** - * The current status of the check step. - */ - status: ScalarsEnums['CheckStatusState']; -} - -/** - * The connection type for CheckStep. - */ -export interface CheckStepConnection { - __typename?: 'CheckStepConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CheckStepEdge { - __typename?: 'CheckStepEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A check suite. - */ -export interface CheckSuite { - __typename?: 'CheckSuite'; - /** - * The GitHub App which created this check suite. - */ - app?: Maybe; - /** - * The name of the branch for this check suite. - */ - branch?: Maybe; - /** - * The check runs associated with a check suite. - */ - checkRuns: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Filters the check runs by this type. - */ - filterBy?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * The commit for this check suite - */ - commit: Commit; - /** - * The conclusion of this check suite. - */ - conclusion?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The user who triggered the check suite. - */ - creator?: Maybe; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; - /** - * A list of open pull requests matching the check suite. - */ - matchingPullRequests: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * The base ref name to filter the pull requests by. - */ - baseRefName?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * The head ref name to filter the pull requests by. - */ - headRefName?: Maybe; - /** - * A list of label names to filter the pull requests by. - */ - labels?: Maybe>; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pull requests returned from the connection. - */ - orderBy?: Maybe; - /** - * A list of states to filter the pull requests by. - */ - states?: Maybe>; - }) => Maybe; - /** - * The push that triggered this check suite. - */ - push?: Maybe; - /** - * The repository associated with this check suite. - */ - repository: Repository; - /** - * The HTTP path for this check suite - */ - resourcePath: ScalarsEnums['URI']; - /** - * The status of this check suite. - */ - status: ScalarsEnums['CheckStatusState']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this check suite - */ - url: ScalarsEnums['URI']; - /** - * The workflow run associated with this check suite. - */ - workflowRun?: Maybe; -} - -/** - * The connection type for CheckSuite. - */ -export interface CheckSuiteConnection { - __typename?: 'CheckSuiteConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CheckSuiteEdge { - __typename?: 'CheckSuiteEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Autogenerated return type of ClearLabelsFromLabelable - */ -export interface ClearLabelsFromLabelablePayload { - __typename?: 'ClearLabelsFromLabelablePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The item that was unlabeled. - */ - labelable?: Maybe; -} - -/** - * Autogenerated return type of CloneProject - */ -export interface CloneProjectPayload { - __typename?: 'CloneProjectPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The id of the JobStatus for populating cloned fields. - */ - jobStatusId?: Maybe; - /** - * The new cloned project. - */ - project?: Maybe; -} - -/** - * Autogenerated return type of CloneTemplateRepository - */ -export interface CloneTemplateRepositoryPayload { - __typename?: 'CloneTemplateRepositoryPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new repository. - */ - repository?: Maybe; -} - -/** - * An object that can be closed - */ -export interface Closable { - __typename?: - | 'Issue' - | 'Milestone' - | 'Project' - | 'ProjectNext' - | 'PullRequest'; - /** - * `true` if the object is closed (definition of closed may depend on type) - */ - closed: ScalarsEnums['Boolean']; - /** - * Identifies the date and time when the object was closed. - */ - closedAt?: Maybe; - $on: $Closable; -} - -/** - * Autogenerated return type of CloseIssue - */ -export interface CloseIssuePayload { - __typename?: 'CloseIssuePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The issue that was closed. - */ - issue?: Maybe; -} - -/** - * Autogenerated return type of ClosePullRequest - */ -export interface ClosePullRequestPayload { - __typename?: 'ClosePullRequestPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The pull request that was closed. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'closed' event on any `Closable`. - */ -export interface ClosedEvent { - __typename?: 'ClosedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Object that was closed. - */ - closable: Closable; - /** - * Object which triggered the creation of this event. - */ - closer?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * The HTTP path for this closed event. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this closed event. - */ - url: ScalarsEnums['URI']; -} - -/** - * The object which triggered a `ClosedEvent`. - */ -export interface Closer { - __typename?: 'Commit' | 'PullRequest'; - $on: $Closer; -} - -/** - * The Code of Conduct for a repository - */ -export interface CodeOfConduct { - __typename?: 'CodeOfConduct'; - /** - * The body of the Code of Conduct - */ - body?: Maybe; - id: ScalarsEnums['ID']; - /** - * The key for the Code of Conduct - */ - key: ScalarsEnums['String']; - /** - * The formal name of the Code of Conduct - */ - name: ScalarsEnums['String']; - /** - * The HTTP path for this Code of Conduct - */ - resourcePath?: Maybe; - /** - * The HTTP URL for this Code of Conduct - */ - url?: Maybe; -} - -/** - * Represents a comment. - */ -export interface Comment { - __typename?: - | 'CommitComment' - | 'Discussion' - | 'DiscussionComment' - | 'GistComment' - | 'Issue' - | 'IssueComment' - | 'PullRequest' - | 'PullRequestReview' - | 'PullRequestReviewComment' - | 'TeamDiscussion' - | 'TeamDiscussionComment'; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * The body as Markdown. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; - $on: $Comment; -} - -/** - * Represents a 'comment_deleted' event on a given issue or pull request. - */ -export interface CommentDeletedEvent { - __typename?: 'CommentDeletedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The user who authored the deleted comment. - */ - deletedCommentAuthor?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * Represents a Git commit. - */ -export interface Commit { - __typename?: 'Commit'; - /** - * An abbreviated version of the Git object ID - */ - abbreviatedOid: ScalarsEnums['String']; - /** - * The number of additions in this commit. - */ - additions: ScalarsEnums['Int']; - /** - * The merged Pull Request that introduced the commit to the repository. If the commit is not present in the default branch, additionally returns open Pull Requests associated with the commit - */ - associatedPullRequests: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pull requests. - * @defaultValue `{"field":"CREATED_AT","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => Maybe; - /** - * Authorship details of the commit. - */ - author?: Maybe; - /** - * Check if the committer and the author match. - */ - authoredByCommitter: ScalarsEnums['Boolean']; - /** - * The datetime when this commit was authored. - */ - authoredDate: ScalarsEnums['DateTime']; - /** - * The list of authors for this commit based on the git author and the Co-authored-by - * message trailer. The git author will always be first. - */ - authors: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => GitActorConnection; - /** - * Fetches `git blame` information. - */ - blame: (args: { - /** - * The file whose Git blame information you want. - */ - path: Scalars['String']; - }) => Blame; - /** - * The number of changed files in this commit. - */ - changedFiles: ScalarsEnums['Int']; - /** - * The check suites associated with a commit. - */ - checkSuites: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Filters the check suites by this type. - */ - filterBy?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Comments made on the commit. - */ - comments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => CommitCommentConnection; - /** - * The HTTP path for this Git object - */ - commitResourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this Git object - */ - commitUrl: ScalarsEnums['URI']; - /** - * The datetime when this commit was committed. - */ - committedDate: ScalarsEnums['DateTime']; - /** - * Check if committed via GitHub web UI. - */ - committedViaWeb: ScalarsEnums['Boolean']; - /** - * Committer details of the commit. - */ - committer?: Maybe; - /** - * The number of deletions in this commit. - */ - deletions: ScalarsEnums['Int']; - /** - * The deployments associated with a commit. - */ - deployments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Environments to list deployments for - */ - environments?: Maybe>; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for deployments returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => Maybe; - /** - * The tree entry representing the file located at the given path. - */ - file: (args: { - /** - * The path for the file - */ - path: Scalars['String']; - }) => Maybe; - /** - * The linear commit history starting from (and including) this commit, in the same order as `git log`. - */ - history: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * If non-null, filters history to only show commits with matching authorship. - */ - author?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * If non-null, filters history to only show commits touching files under this path. - */ - path?: Maybe; - /** - * Allows specifying a beginning time or date for fetching commits. - */ - since?: Maybe; - /** - * Allows specifying an ending time or date for fetching commits. - */ - until?: Maybe; - }) => CommitHistoryConnection; - id: ScalarsEnums['ID']; - /** - * The Git commit message - */ - message: ScalarsEnums['String']; - /** - * The Git commit message body - */ - messageBody: ScalarsEnums['String']; - /** - * The commit message body rendered to HTML. - */ - messageBodyHTML: ScalarsEnums['HTML']; - /** - * The Git commit message headline - */ - messageHeadline: ScalarsEnums['String']; - /** - * The commit message headline rendered to HTML. - */ - messageHeadlineHTML: ScalarsEnums['HTML']; - /** - * The Git object ID - */ - oid: ScalarsEnums['GitObjectID']; - /** - * The organization this commit was made on behalf of. - */ - onBehalfOf?: Maybe; - /** - * The parents of a commit. - */ - parents: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => CommitConnection; - /** - * The datetime when this commit was pushed. - */ - pushedDate?: Maybe; - /** - * The Repository this commit belongs to - */ - repository: Repository; - /** - * The HTTP path for this commit - */ - resourcePath: ScalarsEnums['URI']; - /** - * Commit signing information, if present. - */ - signature?: Maybe; - /** - * Status information for this commit - */ - status?: Maybe; - /** - * Check and Status rollup information for this commit. - */ - statusCheckRollup?: Maybe; - /** - * Returns a list of all submodules in this repository as of this Commit parsed from the .gitmodules file. - */ - submodules: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => SubmoduleConnection; - /** - * Returns a URL to download a tarball archive for a repository. - * Note: For private repositories, these links are temporary and expire after five minutes. - */ - tarballUrl: ScalarsEnums['URI']; - /** - * Commit's root Tree - */ - tree: Tree; - /** - * The HTTP path for the tree of this commit - */ - treeResourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for the tree of this commit - */ - treeUrl: ScalarsEnums['URI']; - /** - * The HTTP URL for this commit - */ - url: ScalarsEnums['URI']; - /** - * Check if the viewer is able to change their subscription status for the repository. - */ - viewerCanSubscribe: ScalarsEnums['Boolean']; - /** - * Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. - */ - viewerSubscription?: Maybe; - /** - * Returns a URL to download a zipball archive for a repository. - * Note: For private repositories, these links are temporary and expire after five minutes. - */ - zipballUrl: ScalarsEnums['URI']; -} - -/** - * Represents a comment on a given Commit. - */ -export interface CommitComment { - __typename?: 'CommitComment'; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * Identifies the comment body. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * Identifies the commit associated with the comment, if the commit exists. - */ - commit?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * Returns whether or not a comment has been minimized. - */ - isMinimized: ScalarsEnums['Boolean']; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * Returns why the comment was minimized. - */ - minimizedReason?: Maybe; - /** - * Identifies the file path associated with the comment. - */ - path?: Maybe; - /** - * Identifies the line position associated with the comment. - */ - position?: Maybe; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * A list of reactions grouped by content left on the subject. - */ - reactionGroups?: Maybe>; - /** - * A list of Reactions left on the Issue. - */ - reactions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Allows filtering Reactions by emoji. - */ - content?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows specifying the order in which reactions are returned. - */ - orderBy?: Maybe; - }) => ReactionConnection; - /** - * The repository associated with this node. - */ - repository: Repository; - /** - * The HTTP path permalink for this commit comment. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL permalink for this commit comment. - */ - url: ScalarsEnums['URI']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can minimize this object. - */ - viewerCanMinimize: ScalarsEnums['Boolean']; - /** - * Can user react to this subject - */ - viewerCanReact: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Reasons why the current viewer can not update this comment. - */ - viewerCannotUpdateReasons: Array; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; -} - -/** - * The connection type for CommitComment. - */ -export interface CommitCommentConnection { - __typename?: 'CommitCommentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CommitCommentEdge { - __typename?: 'CommitCommentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A thread of comments on a commit. - */ -export interface CommitCommentThread { - __typename?: 'CommitCommentThread'; - /** - * The comments that exist in this thread. - */ - comments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => CommitCommentConnection; - /** - * The commit the comments were made on. - */ - commit?: Maybe; - id: ScalarsEnums['ID']; - /** - * The file the comments were made on. - */ - path?: Maybe; - /** - * The position in the diff for the commit that the comment was made on. - */ - position?: Maybe; - /** - * The repository associated with this node. - */ - repository: Repository; -} - -/** - * The connection type for Commit. - */ -export interface CommitConnection { - __typename?: 'CommitConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * This aggregates commits made by a user within one repository. - */ -export interface CommitContributionsByRepository { - __typename?: 'CommitContributionsByRepository'; - /** - * The commit contributions, each representing a day. - */ - contributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for commit contributions returned from the connection. - * @defaultValue `{"field":"OCCURRED_AT","direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedCommitContributionConnection; - /** - * The repository in which the commits were made. - */ - repository: Repository; - /** - * The HTTP path for the user's commits to the repository in this time range. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for the user's commits to the repository in this time range. - */ - url: ScalarsEnums['URI']; -} - -/** - * An edge in a connection. - */ -export interface CommitEdge { - __typename?: 'CommitEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for Commit. - */ -export interface CommitHistoryConnection { - __typename?: 'CommitHistoryConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * Represents a 'connected' event on a given issue or pull request. - */ -export interface ConnectedEvent { - __typename?: 'ConnectedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Reference originated in a different repository. - */ - isCrossRepository: ScalarsEnums['Boolean']; - /** - * Issue or pull request that made the reference. - */ - source: ReferencedSubject; - /** - * Issue or pull request which was connected. - */ - subject: ReferencedSubject; -} - -/** - * Represents a contribution a user made on GitHub, such as opening an issue. - */ -export interface Contribution { - __typename?: - | 'CreatedCommitContribution' - | 'CreatedIssueContribution' - | 'CreatedPullRequestContribution' - | 'CreatedPullRequestReviewContribution' - | 'CreatedRepositoryContribution' - | 'JoinedGitHubContribution' - | 'RestrictedContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; - $on: $Contribution; -} - -/** - * A calendar of contributions made on GitHub by a user. - */ -export interface ContributionCalendar { - __typename?: 'ContributionCalendar'; - /** - * A list of hex color codes used in this calendar. The darker the color, the more contributions it represents. - */ - colors: Array; - /** - * Determine if the color set was chosen because it's currently Halloween. - */ - isHalloween: ScalarsEnums['Boolean']; - /** - * A list of the months of contributions in this calendar. - */ - months: Array; - /** - * The count of total contributions in the calendar. - */ - totalContributions: ScalarsEnums['Int']; - /** - * A list of the weeks of contributions in this calendar. - */ - weeks: Array; -} - -/** - * Represents a single day of contributions on GitHub by a user. - */ -export interface ContributionCalendarDay { - __typename?: 'ContributionCalendarDay'; - /** - * The hex color code that represents how many contributions were made on this day compared to others in the calendar. - */ - color: ScalarsEnums['String']; - /** - * How many contributions were made by the user on this day. - */ - contributionCount: ScalarsEnums['Int']; - /** - * Indication of contributions, relative to other days. Can be used to indicate which color to represent this day on a calendar. - */ - contributionLevel: ScalarsEnums['ContributionLevel']; - /** - * The day this square represents. - */ - date: ScalarsEnums['Date']; - /** - * A number representing which day of the week this square represents, e.g., 1 is Monday. - */ - weekday: ScalarsEnums['Int']; -} - -/** - * A month of contributions in a user's contribution graph. - */ -export interface ContributionCalendarMonth { - __typename?: 'ContributionCalendarMonth'; - /** - * The date of the first day of this month. - */ - firstDay: ScalarsEnums['Date']; - /** - * The name of the month. - */ - name: ScalarsEnums['String']; - /** - * How many weeks started in this month. - */ - totalWeeks: ScalarsEnums['Int']; - /** - * The year the month occurred in. - */ - year: ScalarsEnums['Int']; -} - -/** - * A week of contributions in a user's contribution graph. - */ -export interface ContributionCalendarWeek { - __typename?: 'ContributionCalendarWeek'; - /** - * The days of contributions in this week. - */ - contributionDays: Array; - /** - * The date of the earliest square in this week. - */ - firstDay: ScalarsEnums['Date']; -} - -/** - * A contributions collection aggregates contributions such as opened issues and commits created by a user. - */ -export interface ContributionsCollection { - __typename?: 'ContributionsCollection'; - /** - * Commit contributions made by the user, grouped by repository. - */ - commitContributionsByRepository: (args?: { - /** - * How many repositories should be included. - * @defaultValue `25` - */ - maxRepositories?: Maybe; - }) => Array; - /** - * A calendar of this user's contributions on GitHub. - */ - contributionCalendar: ContributionCalendar; - /** - * The years the user has been making contributions with the most recent year first. - */ - contributionYears: Array; - /** - * Determine if this collection's time span ends in the current month. - */ - doesEndInCurrentMonth: ScalarsEnums['Boolean']; - /** - * The date of the first restricted contribution the user made in this time period. Can only be non-null when the user has enabled private contribution counts. - */ - earliestRestrictedContributionDate?: Maybe; - /** - * The ending date and time of this collection. - */ - endedAt: ScalarsEnums['DateTime']; - /** - * The first issue the user opened on GitHub. This will be null if that issue was opened outside the collection's time range and ignoreTimeRange is false. If the issue is not visible but the user has opted to show private contributions, a RestrictedContribution will be returned. - */ - firstIssueContribution?: Maybe; - /** - * The first pull request the user opened on GitHub. This will be null if that pull request was opened outside the collection's time range and ignoreTimeRange is not true. If the pull request is not visible but the user has opted to show private contributions, a RestrictedContribution will be returned. - */ - firstPullRequestContribution?: Maybe; - /** - * The first repository the user created on GitHub. This will be null if that first repository was created outside the collection's time range and ignoreTimeRange is false. If the repository is not visible, then a RestrictedContribution is returned. - */ - firstRepositoryContribution?: Maybe; - /** - * Does the user have any more activity in the timeline that occurred prior to the collection's time range? - */ - hasActivityInThePast: ScalarsEnums['Boolean']; - /** - * Determine if there are any contributions in this collection. - */ - hasAnyContributions: ScalarsEnums['Boolean']; - /** - * Determine if the user made any contributions in this time frame whose details are not visible because they were made in a private repository. Can only be true if the user enabled private contribution counts. - */ - hasAnyRestrictedContributions: ScalarsEnums['Boolean']; - /** - * Whether or not the collector's time span is all within the same day. - */ - isSingleDay: ScalarsEnums['Boolean']; - /** - * A list of issues the user opened. - */ - issueContributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Should the user's first issue ever be excluded from the result. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented issue be excluded from the result. - * @defaultValue `false` - */ - excludePopular?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for contributions returned from the connection. - * @defaultValue `{"direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedIssueContributionConnection; - /** - * Issue contributions made by the user, grouped by repository. - */ - issueContributionsByRepository: (args?: { - /** - * Should the user's first issue ever be excluded from the result. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented issue be excluded from the result. - * @defaultValue `false` - */ - excludePopular?: Maybe; - /** - * How many repositories should be included. - * @defaultValue `25` - */ - maxRepositories?: Maybe; - }) => Array; - /** - * When the user signed up for GitHub. This will be null if that sign up date falls outside the collection's time range and ignoreTimeRange is false. - */ - joinedGitHubContribution?: Maybe; - /** - * The date of the most recent restricted contribution the user made in this time period. Can only be non-null when the user has enabled private contribution counts. - */ - latestRestrictedContributionDate?: Maybe; - /** - * When this collection's time range does not include any activity from the user, use this - * to get a different collection from an earlier time range that does have activity. - */ - mostRecentCollectionWithActivity?: Maybe; - /** - * Returns a different contributions collection from an earlier time range than this one - * that does not have any contributions. - */ - mostRecentCollectionWithoutActivity?: Maybe; - /** - * The issue the user opened on GitHub that received the most comments in the specified - * time frame. - */ - popularIssueContribution?: Maybe; - /** - * The pull request the user opened on GitHub that received the most comments in the - * specified time frame. - */ - popularPullRequestContribution?: Maybe; - /** - * Pull request contributions made by the user. - */ - pullRequestContributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Should the user's first pull request ever be excluded from the result. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented pull request be excluded from the result. - * @defaultValue `false` - */ - excludePopular?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for contributions returned from the connection. - * @defaultValue `{"direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedPullRequestContributionConnection; - /** - * Pull request contributions made by the user, grouped by repository. - */ - pullRequestContributionsByRepository: (args?: { - /** - * Should the user's first pull request ever be excluded from the result. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented pull request be excluded from the result. - * @defaultValue `false` - */ - excludePopular?: Maybe; - /** - * How many repositories should be included. - * @defaultValue `25` - */ - maxRepositories?: Maybe; - }) => Array; - /** - * Pull request review contributions made by the user. - */ - pullRequestReviewContributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for contributions returned from the connection. - * @defaultValue `{"direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedPullRequestReviewContributionConnection; - /** - * Pull request review contributions made by the user, grouped by repository. - */ - pullRequestReviewContributionsByRepository: (args?: { - /** - * How many repositories should be included. - * @defaultValue `25` - */ - maxRepositories?: Maybe; - }) => Array; - /** - * A list of repositories owned by the user that the user created in this time range. - */ - repositoryContributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Should the user's first repository ever be excluded from the result. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for contributions returned from the connection. - * @defaultValue `{"direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedRepositoryContributionConnection; - /** - * A count of contributions made by the user that the viewer cannot access. Only non-zero when the user has chosen to share their private contribution counts. - */ - restrictedContributionsCount: ScalarsEnums['Int']; - /** - * The beginning date and time of this collection. - */ - startedAt: ScalarsEnums['DateTime']; - /** - * How many commits were made by the user in this time span. - */ - totalCommitContributions: ScalarsEnums['Int']; - /** - * How many issues the user opened. - */ - totalIssueContributions: (args?: { - /** - * Should the user's first issue ever be excluded from this count. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented issue be excluded from this count. - * @defaultValue `false` - */ - excludePopular?: Maybe; - }) => ScalarsEnums['Int']; - /** - * How many pull requests the user opened. - */ - totalPullRequestContributions: (args?: { - /** - * Should the user's first pull request ever be excluded from this count. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented pull request be excluded from this count. - * @defaultValue `false` - */ - excludePopular?: Maybe; - }) => ScalarsEnums['Int']; - /** - * How many pull request reviews the user left. - */ - totalPullRequestReviewContributions: ScalarsEnums['Int']; - /** - * How many different repositories the user committed to. - */ - totalRepositoriesWithContributedCommits: ScalarsEnums['Int']; - /** - * How many different repositories the user opened issues in. - */ - totalRepositoriesWithContributedIssues: (args?: { - /** - * Should the user's first issue ever be excluded from this count. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented issue be excluded from this count. - * @defaultValue `false` - */ - excludePopular?: Maybe; - }) => ScalarsEnums['Int']; - /** - * How many different repositories the user left pull request reviews in. - */ - totalRepositoriesWithContributedPullRequestReviews: ScalarsEnums['Int']; - /** - * How many different repositories the user opened pull requests in. - */ - totalRepositoriesWithContributedPullRequests: (args?: { - /** - * Should the user's first pull request ever be excluded from this count. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - /** - * Should the user's most commented pull request be excluded from this count. - * @defaultValue `false` - */ - excludePopular?: Maybe; - }) => ScalarsEnums['Int']; - /** - * How many repositories the user created. - */ - totalRepositoryContributions: (args?: { - /** - * Should the user's first repository ever be excluded from this count. - * @defaultValue `false` - */ - excludeFirst?: Maybe; - }) => ScalarsEnums['Int']; - /** - * The user who made the contributions in this collection. - */ - user: User; -} - -/** - * Autogenerated return type of ConvertProjectCardNoteToIssue - */ -export interface ConvertProjectCardNoteToIssuePayload { - __typename?: 'ConvertProjectCardNoteToIssuePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The updated ProjectCard. - */ - projectCard?: Maybe; -} - -/** - * Autogenerated return type of ConvertPullRequestToDraft - */ -export interface ConvertPullRequestToDraftPayload { - __typename?: 'ConvertPullRequestToDraftPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The pull request that is now a draft. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'convert_to_draft' event on a given pull request. - */ -export interface ConvertToDraftEvent { - __typename?: 'ConvertToDraftEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; - /** - * The HTTP path for this convert to draft event. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this convert to draft event. - */ - url: ScalarsEnums['URI']; -} - -/** - * Represents a 'converted_note_to_issue' event on a given issue or pull request. - */ -export interface ConvertedNoteToIssueEvent { - __typename?: 'ConvertedNoteToIssueEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * Represents a 'converted_to_discussion' event on a given issue. - */ -export interface ConvertedToDiscussionEvent { - __typename?: 'ConvertedToDiscussionEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The discussion that the issue was converted into. - */ - discussion?: Maybe; - id: ScalarsEnums['ID']; -} - -/** - * Autogenerated return type of CreateBranchProtectionRule - */ -export interface CreateBranchProtectionRulePayload { - __typename?: 'CreateBranchProtectionRulePayload'; - /** - * The newly created BranchProtectionRule. - */ - branchProtectionRule?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of CreateCheckRun - */ -export interface CreateCheckRunPayload { - __typename?: 'CreateCheckRunPayload'; - /** - * The newly created check run. - */ - checkRun?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of CreateCheckSuite - */ -export interface CreateCheckSuitePayload { - __typename?: 'CreateCheckSuitePayload'; - /** - * The newly created check suite. - */ - checkSuite?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of CreateCommitOnBranch - */ -export interface CreateCommitOnBranchPayload { - __typename?: 'CreateCommitOnBranchPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new commit. - */ - commit?: Maybe; - /** - * The ref which has been updated to point to the new commit. - */ - ref?: Maybe; -} - -/** - * Autogenerated return type of CreateDiscussion - */ -export interface CreateDiscussionPayload { - __typename?: 'CreateDiscussionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The discussion that was just created. - */ - discussion?: Maybe; -} - -/** - * Autogenerated return type of CreateEnterpriseOrganization - */ -export interface CreateEnterpriseOrganizationPayload { - __typename?: 'CreateEnterpriseOrganizationPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The enterprise that owns the created organization. - */ - enterprise?: Maybe; - /** - * The organization that was created. - */ - organization?: Maybe; -} - -/** - * Autogenerated return type of CreateEnvironment - */ -export interface CreateEnvironmentPayload { - __typename?: 'CreateEnvironmentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new or existing environment. - */ - environment?: Maybe; -} - -/** - * Autogenerated return type of CreateIpAllowListEntry - */ -export interface CreateIpAllowListEntryPayload { - __typename?: 'CreateIpAllowListEntryPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The IP allow list entry that was created. - */ - ipAllowListEntry?: Maybe; -} - -/** - * Autogenerated return type of CreateIssue - */ -export interface CreateIssuePayload { - __typename?: 'CreateIssuePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new issue. - */ - issue?: Maybe; -} - -/** - * Autogenerated return type of CreateProject - */ -export interface CreateProjectPayload { - __typename?: 'CreateProjectPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new project. - */ - project?: Maybe; -} - -/** - * Autogenerated return type of CreatePullRequest - */ -export interface CreatePullRequestPayload { - __typename?: 'CreatePullRequestPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new pull request. - */ - pullRequest?: Maybe; -} - -/** - * Autogenerated return type of CreateRef - */ -export interface CreateRefPayload { - __typename?: 'CreateRefPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The newly created ref. - */ - ref?: Maybe; -} - -/** - * Autogenerated return type of CreateRepository - */ -export interface CreateRepositoryPayload { - __typename?: 'CreateRepositoryPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new repository. - */ - repository?: Maybe; -} - -/** - * Autogenerated return type of CreateSponsorship - */ -export interface CreateSponsorshipPayload { - __typename?: 'CreateSponsorshipPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The sponsorship that was started. - */ - sponsorship?: Maybe; -} - -/** - * Autogenerated return type of CreateTeamDiscussionComment - */ -export interface CreateTeamDiscussionCommentPayload { - __typename?: 'CreateTeamDiscussionCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new comment. - */ - teamDiscussionComment?: Maybe; -} - -/** - * Autogenerated return type of CreateTeamDiscussion - */ -export interface CreateTeamDiscussionPayload { - __typename?: 'CreateTeamDiscussionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The new discussion. - */ - teamDiscussion?: Maybe; -} - -/** - * Represents the contribution a user made by committing to a repository. - */ -export interface CreatedCommitContribution { - __typename?: 'CreatedCommitContribution'; - /** - * How many commits were made on this day to this repository by the user. - */ - commitCount: ScalarsEnums['Int']; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The repository the user made a commit in. - */ - repository: Repository; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * The connection type for CreatedCommitContribution. - */ -export interface CreatedCommitContributionConnection { - __typename?: 'CreatedCommitContributionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of commits across days and repositories in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CreatedCommitContributionEdge { - __typename?: 'CreatedCommitContributionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents the contribution a user made on GitHub by opening an issue. - */ -export interface CreatedIssueContribution { - __typename?: 'CreatedIssueContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * The issue that was opened. - */ - issue: Issue; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * The connection type for CreatedIssueContribution. - */ -export interface CreatedIssueContributionConnection { - __typename?: 'CreatedIssueContributionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CreatedIssueContributionEdge { - __typename?: 'CreatedIssueContributionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents either a issue the viewer can access or a restricted contribution. - */ -export interface CreatedIssueOrRestrictedContribution { - __typename?: 'CreatedIssueContribution' | 'RestrictedContribution'; - $on: $CreatedIssueOrRestrictedContribution; -} - -/** - * Represents the contribution a user made on GitHub by opening a pull request. - */ -export interface CreatedPullRequestContribution { - __typename?: 'CreatedPullRequestContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The pull request that was opened. - */ - pullRequest: PullRequest; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * The connection type for CreatedPullRequestContribution. - */ -export interface CreatedPullRequestContributionConnection { - __typename?: 'CreatedPullRequestContributionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CreatedPullRequestContributionEdge { - __typename?: 'CreatedPullRequestContributionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents either a pull request the viewer can access or a restricted contribution. - */ -export interface CreatedPullRequestOrRestrictedContribution { - __typename?: 'CreatedPullRequestContribution' | 'RestrictedContribution'; - $on: $CreatedPullRequestOrRestrictedContribution; -} - -/** - * Represents the contribution a user made by leaving a review on a pull request. - */ -export interface CreatedPullRequestReviewContribution { - __typename?: 'CreatedPullRequestReviewContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The pull request the user reviewed. - */ - pullRequest: PullRequest; - /** - * The review the user left on the pull request. - */ - pullRequestReview: PullRequestReview; - /** - * The repository containing the pull request that the user reviewed. - */ - repository: Repository; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * The connection type for CreatedPullRequestReviewContribution. - */ -export interface CreatedPullRequestReviewContributionConnection { - __typename?: 'CreatedPullRequestReviewContributionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CreatedPullRequestReviewContributionEdge { - __typename?: 'CreatedPullRequestReviewContributionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents the contribution a user made on GitHub by creating a repository. - */ -export interface CreatedRepositoryContribution { - __typename?: 'CreatedRepositoryContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The repository that was created. - */ - repository: Repository; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * The connection type for CreatedRepositoryContribution. - */ -export interface CreatedRepositoryContributionConnection { - __typename?: 'CreatedRepositoryContributionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface CreatedRepositoryContributionEdge { - __typename?: 'CreatedRepositoryContributionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents either a repository the viewer can access or a restricted contribution. - */ -export interface CreatedRepositoryOrRestrictedContribution { - __typename?: 'CreatedRepositoryContribution' | 'RestrictedContribution'; - $on: $CreatedRepositoryOrRestrictedContribution; -} - -/** - * Represents a mention made by one issue or pull request to another. - */ -export interface CrossReferencedEvent { - __typename?: 'CrossReferencedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Reference originated in a different repository. - */ - isCrossRepository: ScalarsEnums['Boolean']; - /** - * Identifies when the reference was made. - */ - referencedAt: ScalarsEnums['DateTime']; - /** - * The HTTP path for this pull request. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Issue or pull request that made the reference. - */ - source: ReferencedSubject; - /** - * Issue or pull request to which the reference was made. - */ - target: ReferencedSubject; - /** - * The HTTP URL for this pull request. - */ - url: ScalarsEnums['URI']; - /** - * Checks if the target will be closed when the source is merged. - */ - willCloseTarget: ScalarsEnums['Boolean']; -} - -/** - * Autogenerated return type of DeclineTopicSuggestion - */ -export interface DeclineTopicSuggestionPayload { - __typename?: 'DeclineTopicSuggestionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The declined topic. - */ - topic?: Maybe; -} - -/** - * Entities that can be deleted. - */ -export interface Deletable { - __typename?: - | 'CommitComment' - | 'Discussion' - | 'DiscussionComment' - | 'GistComment' - | 'IssueComment' - | 'PullRequestReview' - | 'PullRequestReviewComment' - | 'TeamDiscussion' - | 'TeamDiscussionComment'; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - $on: $Deletable; -} - -/** - * Autogenerated return type of DeleteBranchProtectionRule - */ -export interface DeleteBranchProtectionRulePayload { - __typename?: 'DeleteBranchProtectionRulePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteDeployment - */ -export interface DeleteDeploymentPayload { - __typename?: 'DeleteDeploymentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteDiscussionComment - */ -export interface DeleteDiscussionCommentPayload { - __typename?: 'DeleteDiscussionCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The discussion comment that was just deleted. - */ - comment?: Maybe; -} - -/** - * Autogenerated return type of DeleteDiscussion - */ -export interface DeleteDiscussionPayload { - __typename?: 'DeleteDiscussionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The discussion that was just deleted. - */ - discussion?: Maybe; -} - -/** - * Autogenerated return type of DeleteEnvironment - */ -export interface DeleteEnvironmentPayload { - __typename?: 'DeleteEnvironmentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteIpAllowListEntry - */ -export interface DeleteIpAllowListEntryPayload { - __typename?: 'DeleteIpAllowListEntryPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The IP allow list entry that was deleted. - */ - ipAllowListEntry?: Maybe; -} - -/** - * Autogenerated return type of DeleteIssueComment - */ -export interface DeleteIssueCommentPayload { - __typename?: 'DeleteIssueCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteIssue - */ -export interface DeleteIssuePayload { - __typename?: 'DeleteIssuePayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The repository the issue belonged to - */ - repository?: Maybe; -} - -/** - * Autogenerated return type of DeleteProjectCard - */ -export interface DeleteProjectCardPayload { - __typename?: 'DeleteProjectCardPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The column the deleted card was in. - */ - column?: Maybe; - /** - * The deleted card ID. - */ - deletedCardId?: Maybe; -} - -/** - * Autogenerated return type of DeleteProjectColumn - */ -export interface DeleteProjectColumnPayload { - __typename?: 'DeleteProjectColumnPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The deleted column ID. - */ - deletedColumnId?: Maybe; - /** - * The project the deleted column was in. - */ - project?: Maybe; -} - -/** - * Autogenerated return type of DeleteProjectNextItem - */ -export interface DeleteProjectNextItemPayload { - __typename?: 'DeleteProjectNextItemPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The ID of the deleted item. - */ - deletedItemId?: Maybe; -} - -/** - * Autogenerated return type of DeleteProject - */ -export interface DeleteProjectPayload { - __typename?: 'DeleteProjectPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The repository or organization the project was removed from. - */ - owner?: Maybe; -} - -/** - * Autogenerated return type of DeletePullRequestReviewComment - */ -export interface DeletePullRequestReviewCommentPayload { - __typename?: 'DeletePullRequestReviewCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The pull request review the deleted comment belonged to. - */ - pullRequestReview?: Maybe; -} - -/** - * Autogenerated return type of DeletePullRequestReview - */ -export interface DeletePullRequestReviewPayload { - __typename?: 'DeletePullRequestReviewPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The deleted pull request review. - */ - pullRequestReview?: Maybe; -} - -/** - * Autogenerated return type of DeleteRef - */ -export interface DeleteRefPayload { - __typename?: 'DeleteRefPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteTeamDiscussionComment - */ -export interface DeleteTeamDiscussionCommentPayload { - __typename?: 'DeleteTeamDiscussionCommentPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteTeamDiscussion - */ -export interface DeleteTeamDiscussionPayload { - __typename?: 'DeleteTeamDiscussionPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; -} - -/** - * Autogenerated return type of DeleteVerifiableDomain - */ -export interface DeleteVerifiableDomainPayload { - __typename?: 'DeleteVerifiableDomainPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The owning account from which the domain was deleted. - */ - owner?: Maybe; -} - -/** - * Represents a 'demilestoned' event on a given issue or pull request. - */ -export interface DemilestonedEvent { - __typename?: 'DemilestonedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Identifies the milestone title associated with the 'demilestoned' event. - */ - milestoneTitle: ScalarsEnums['String']; - /** - * Object referenced by event. - */ - subject: MilestoneItem; -} - -/** - * A repository deploy key. - */ -export interface DeployKey { - __typename?: 'DeployKey'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * The deploy key. - */ - key: ScalarsEnums['String']; - /** - * Whether or not the deploy key is read only. - */ - readOnly: ScalarsEnums['Boolean']; - /** - * The deploy key title. - */ - title: ScalarsEnums['String']; - /** - * Whether or not the deploy key has been verified. - */ - verified: ScalarsEnums['Boolean']; -} - -/** - * The connection type for DeployKey. - */ -export interface DeployKeyConnection { - __typename?: 'DeployKeyConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeployKeyEdge { - __typename?: 'DeployKeyEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents a 'deployed' event on a given pull request. - */ -export interface DeployedEvent { - __typename?: 'DeployedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The deployment associated with the 'deployed' event. - */ - deployment: Deployment; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; - /** - * The ref associated with the 'deployed' event. - */ - ref?: Maybe; -} - -/** - * Represents triggered deployment instance. - */ -export interface Deployment { - __typename?: 'Deployment'; - /** - * Identifies the commit sha of the deployment. - */ - commit?: Maybe; - /** - * Identifies the oid of the deployment commit, even if the commit has been deleted. - */ - commitOid: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the actor who triggered the deployment. - */ - creator: Actor; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The deployment description. - */ - description?: Maybe; - /** - * The latest environment to which this deployment was made. - */ - environment?: Maybe; - id: ScalarsEnums['ID']; - /** - * The latest environment to which this deployment was made. - */ - latestEnvironment?: Maybe; - /** - * The latest status of this deployment. - */ - latestStatus?: Maybe; - /** - * The original environment to which this deployment was made. - */ - originalEnvironment?: Maybe; - /** - * Extra information that a deployment system might need. - */ - payload?: Maybe; - /** - * Identifies the Ref of the deployment, if the deployment was created by ref. - */ - ref?: Maybe; - /** - * Identifies the repository associated with the deployment. - */ - repository: Repository; - /** - * The current state of the deployment. - */ - state?: Maybe; - /** - * A list of statuses associated with the deployment. - */ - statuses: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * The deployment task. - */ - task?: Maybe; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for Deployment. - */ -export interface DeploymentConnection { - __typename?: 'DeploymentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentEdge { - __typename?: 'DeploymentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents a 'deployment_environment_changed' event on a given pull request. - */ -export interface DeploymentEnvironmentChangedEvent { - __typename?: 'DeploymentEnvironmentChangedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The deployment status that updated the deployment environment. - */ - deploymentStatus: DeploymentStatus; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * A protection rule. - */ -export interface DeploymentProtectionRule { - __typename?: 'DeploymentProtectionRule'; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The teams or users that can review the deployment - */ - reviewers: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => DeploymentReviewerConnection; - /** - * The timeout in minutes for this protection rule. - */ - timeout: ScalarsEnums['Int']; - /** - * The type of protection rule. - */ - type: ScalarsEnums['DeploymentProtectionRuleType']; -} - -/** - * The connection type for DeploymentProtectionRule. - */ -export interface DeploymentProtectionRuleConnection { - __typename?: 'DeploymentProtectionRuleConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentProtectionRuleEdge { - __typename?: 'DeploymentProtectionRuleEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A request to deploy a workflow run to an environment. - */ -export interface DeploymentRequest { - __typename?: 'DeploymentRequest'; - /** - * Whether or not the current user can approve the deployment - */ - currentUserCanApprove: ScalarsEnums['Boolean']; - /** - * The target environment of the deployment - */ - environment: Environment; - /** - * The teams or users that can review the deployment - */ - reviewers: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => DeploymentReviewerConnection; - /** - * The wait timer in minutes configured in the environment - */ - waitTimer: ScalarsEnums['Int']; - /** - * The wait timer in minutes configured in the environment - */ - waitTimerStartedAt?: Maybe; -} - -/** - * The connection type for DeploymentRequest. - */ -export interface DeploymentRequestConnection { - __typename?: 'DeploymentRequestConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentRequestEdge { - __typename?: 'DeploymentRequestEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A deployment review. - */ -export interface DeploymentReview { - __typename?: 'DeploymentReview'; - /** - * The comment the user left. - */ - comment: ScalarsEnums['String']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The environments approved or rejected - */ - environments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => EnvironmentConnection; - id: ScalarsEnums['ID']; - /** - * The decision of the user. - */ - state: ScalarsEnums['DeploymentReviewState']; - /** - * The user that reviewed the deployment. - */ - user: User; -} - -/** - * The connection type for DeploymentReview. - */ -export interface DeploymentReviewConnection { - __typename?: 'DeploymentReviewConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentReviewEdge { - __typename?: 'DeploymentReviewEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Users and teams. - */ -export interface DeploymentReviewer { - __typename?: 'Team' | 'User'; - $on: $DeploymentReviewer; -} - -/** - * The connection type for DeploymentReviewer. - */ -export interface DeploymentReviewerConnection { - __typename?: 'DeploymentReviewerConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentReviewerEdge { - __typename?: 'DeploymentReviewerEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Describes the status of a given deployment attempt. - */ -export interface DeploymentStatus { - __typename?: 'DeploymentStatus'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the actor who triggered the deployment. - */ - creator: Actor; - /** - * Identifies the deployment associated with status. - */ - deployment: Deployment; - /** - * Identifies the description of the deployment. - */ - description?: Maybe; - /** - * Identifies the environment URL of the deployment. - */ - environmentUrl?: Maybe; - id: ScalarsEnums['ID']; - /** - * Identifies the log URL of the deployment. - */ - logUrl?: Maybe; - /** - * Identifies the current state of the deployment. - */ - state: ScalarsEnums['DeploymentStatusState']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for DeploymentStatus. - */ -export interface DeploymentStatusConnection { - __typename?: 'DeploymentStatusConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DeploymentStatusEdge { - __typename?: 'DeploymentStatusEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Autogenerated return type of DisablePullRequestAutoMerge - */ -export interface DisablePullRequestAutoMergePayload { - __typename?: 'DisablePullRequestAutoMergePayload'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The pull request auto merge was disabled on. - */ - pullRequest?: Maybe; -} - -/** - * Represents a 'disconnected' event on a given issue or pull request. - */ -export interface DisconnectedEvent { - __typename?: 'DisconnectedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Reference originated in a different repository. - */ - isCrossRepository: ScalarsEnums['Boolean']; - /** - * Issue or pull request from which the issue was disconnected. - */ - source: ReferencedSubject; - /** - * Issue or pull request which was disconnected. - */ - subject: ReferencedSubject; -} - -/** - * A discussion in a repository. - */ -export interface Discussion { - __typename?: 'Discussion'; - /** - * Reason that the conversation was locked. - */ - activeLockReason?: Maybe; - /** - * The comment chosen as this discussion's answer, if any. - */ - answer?: Maybe; - /** - * The time when a user chose this discussion's answer, if answered. - */ - answerChosenAt?: Maybe; - /** - * The user who chose this discussion's answer, if answered. - */ - answerChosenBy?: Maybe; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * The main text of the discussion post. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * The category for this discussion. - */ - category: DiscussionCategory; - /** - * The replies to the discussion. - */ - comments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => DiscussionCommentConnection; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * A list of labels associated with the object. - */ - labels: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for labels returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => Maybe; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * `true` if the object is locked - */ - locked: ScalarsEnums['Boolean']; - /** - * The number identifying this discussion within the repository. - */ - number: ScalarsEnums['Int']; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * A list of reactions grouped by content left on the subject. - */ - reactionGroups?: Maybe>; - /** - * A list of Reactions left on the Issue. - */ - reactions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Allows filtering Reactions by emoji. - */ - content?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows specifying the order in which reactions are returned. - */ - orderBy?: Maybe; - }) => ReactionConnection; - /** - * The repository associated with this node. - */ - repository: Repository; - /** - * The path for this discussion. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The title of this discussion. - */ - title: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * Number of upvotes that this subject has received. - */ - upvoteCount: ScalarsEnums['Int']; - /** - * The URL for this discussion. - */ - url: ScalarsEnums['URI']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - /** - * Can user react to this subject - */ - viewerCanReact: ScalarsEnums['Boolean']; - /** - * Check if the viewer is able to change their subscription status for the repository. - */ - viewerCanSubscribe: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Whether or not the current user can add or remove an upvote on this subject. - */ - viewerCanUpvote: ScalarsEnums['Boolean']; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; - /** - * Whether or not the current user has already upvoted this subject. - */ - viewerHasUpvoted: ScalarsEnums['Boolean']; - /** - * Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. - */ - viewerSubscription?: Maybe; -} - -/** - * A category for discussions in a repository. - */ -export interface DiscussionCategory { - __typename?: 'DiscussionCategory'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * A description of this category. - */ - description?: Maybe; - /** - * An emoji representing this category. - */ - emoji: ScalarsEnums['String']; - /** - * This category's emoji rendered as HTML. - */ - emojiHTML: ScalarsEnums['HTML']; - id: ScalarsEnums['ID']; - /** - * Whether or not discussions in this category support choosing an answer with the markDiscussionCommentAsAnswer mutation. - */ - isAnswerable: ScalarsEnums['Boolean']; - /** - * The name of this category. - */ - name: ScalarsEnums['String']; - /** - * The repository associated with this node. - */ - repository: Repository; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for DiscussionCategory. - */ -export interface DiscussionCategoryConnection { - __typename?: 'DiscussionCategoryConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DiscussionCategoryEdge { - __typename?: 'DiscussionCategoryEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A comment on a discussion. - */ -export interface DiscussionComment { - __typename?: 'DiscussionComment'; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * The body as Markdown. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The time when this replied-to comment was deleted - */ - deletedAt?: Maybe; - /** - * The discussion this comment was created in - */ - discussion?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * Has this comment been chosen as the answer of its discussion? - */ - isAnswer: ScalarsEnums['Boolean']; - /** - * Returns whether or not a comment has been minimized. - */ - isMinimized: ScalarsEnums['Boolean']; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * Returns why the comment was minimized. - */ - minimizedReason?: Maybe; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * A list of reactions grouped by content left on the subject. - */ - reactionGroups?: Maybe>; - /** - * A list of Reactions left on the Issue. - */ - reactions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Allows filtering Reactions by emoji. - */ - content?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows specifying the order in which reactions are returned. - */ - orderBy?: Maybe; - }) => ReactionConnection; - /** - * The threaded replies to this comment. - */ - replies: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => DiscussionCommentConnection; - /** - * The discussion comment this comment is a reply to - */ - replyTo?: Maybe; - /** - * The path for this discussion comment. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * Number of upvotes that this subject has received. - */ - upvoteCount: ScalarsEnums['Int']; - /** - * The URL for this discussion comment. - */ - url: ScalarsEnums['URI']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - /** - * Can the current user mark this comment as an answer? - */ - viewerCanMarkAsAnswer: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can minimize this object. - */ - viewerCanMinimize: ScalarsEnums['Boolean']; - /** - * Can user react to this subject - */ - viewerCanReact: ScalarsEnums['Boolean']; - /** - * Can the current user unmark this comment as an answer? - */ - viewerCanUnmarkAsAnswer: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Whether or not the current user can add or remove an upvote on this subject. - */ - viewerCanUpvote: ScalarsEnums['Boolean']; - /** - * Reasons why the current viewer can not update this comment. - */ - viewerCannotUpdateReasons: Array; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; - /** - * Whether or not the current user has already upvoted this subject. - */ - viewerHasUpvoted: ScalarsEnums['Boolean']; -} - -/** - * The connection type for DiscussionComment. - */ -export interface DiscussionCommentConnection { - __typename?: 'DiscussionCommentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DiscussionCommentEdge { - __typename?: 'DiscussionCommentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for Discussion. - */ -export interface DiscussionConnection { - __typename?: 'DiscussionConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface DiscussionEdge { - __typename?: 'DiscussionEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Autogenerated return type of DismissPullRequestReview - */ -export interface DismissPullRequestReviewPayload { - __typename?: 'DismissPullRequestReviewPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The dismissed pull request review. - */ - pullRequestReview?: Maybe; -} - -/** - * Autogenerated return type of DismissRepositoryVulnerabilityAlert - */ -export interface DismissRepositoryVulnerabilityAlertPayload { - __typename?: 'DismissRepositoryVulnerabilityAlertPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The Dependabot alert that was dismissed - */ - repositoryVulnerabilityAlert?: Maybe; -} - -/** - * Autogenerated return type of EnablePullRequestAutoMerge - */ -export interface EnablePullRequestAutoMergePayload { - __typename?: 'EnablePullRequestAutoMergePayload'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The pull request auto-merge was enabled on. - */ - pullRequest?: Maybe; -} - -/** - * An account to manage multiple organizations with consolidated policy and billing. - */ -export interface Enterprise { - __typename?: 'Enterprise'; - /** - * A URL pointing to the enterprise's public avatar. - */ - avatarUrl: (args?: { - /** - * The size of the resulting square image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * Enterprise billing information visible to enterprise billing managers. - */ - billingInfo?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The description of the enterprise. - */ - description?: Maybe; - /** - * The description of the enterprise as HTML. - */ - descriptionHTML: ScalarsEnums['HTML']; - id: ScalarsEnums['ID']; - /** - * The location of the enterprise. - */ - location?: Maybe; - /** - * A list of users who are members of this enterprise. - */ - members: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Only return members within the selected GitHub Enterprise deployment - */ - deployment?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for members returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * Only return members within the organizations with these logins - */ - organizationLogins?: Maybe>; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * The role of the user in the enterprise organization or server. - */ - role?: Maybe; - }) => EnterpriseMemberConnection; - /** - * The name of the enterprise. - */ - name: ScalarsEnums['String']; - /** - * A list of organizations that belong to this enterprise. - */ - organizations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * The viewer's role in an organization. - */ - viewerOrganizationRole?: Maybe; - }) => OrganizationConnection; - /** - * Enterprise information only visible to enterprise owners. - */ - ownerInfo?: Maybe; - /** - * The HTTP path for this enterprise. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The URL-friendly identifier for the enterprise. - */ - slug: ScalarsEnums['String']; - /** - * The HTTP URL for this enterprise. - */ - url: ScalarsEnums['URI']; - /** - * A list of user accounts on this enterprise. - */ - userAccounts: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => EnterpriseUserAccountConnection; - /** - * Is the current viewer an admin of this enterprise? - */ - viewerIsAdmin: ScalarsEnums['Boolean']; - /** - * The URL of the enterprise website. - */ - websiteUrl?: Maybe; -} - -/** - * The connection type for User. - */ -export interface EnterpriseAdministratorConnection { - __typename?: 'EnterpriseAdministratorConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * A User who is an administrator of an enterprise. - */ -export interface EnterpriseAdministratorEdge { - __typename?: 'EnterpriseAdministratorEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; - /** - * The role of the administrator. - */ - role: ScalarsEnums['EnterpriseAdministratorRole']; -} - -/** - * An invitation for a user to become an owner or billing manager of an enterprise. - */ -export interface EnterpriseAdministratorInvitation { - __typename?: 'EnterpriseAdministratorInvitation'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The email of the person who was invited to the enterprise. - */ - email?: Maybe; - /** - * The enterprise the invitation is for. - */ - enterprise: Enterprise; - id: ScalarsEnums['ID']; - /** - * The user who was invited to the enterprise. - */ - invitee?: Maybe; - /** - * The user who created the invitation. - */ - inviter?: Maybe; - /** - * The invitee's pending role in the enterprise (owner or billing_manager). - */ - role: ScalarsEnums['EnterpriseAdministratorRole']; -} - -/** - * The connection type for EnterpriseAdministratorInvitation. - */ -export interface EnterpriseAdministratorInvitationConnection { - __typename?: 'EnterpriseAdministratorInvitationConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseAdministratorInvitationEdge { - __typename?: 'EnterpriseAdministratorInvitationEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Metadata for an audit entry containing enterprise account information. - */ -export interface EnterpriseAuditEntryData { - __typename?: - | 'MembersCanDeleteReposClearAuditEntry' - | 'MembersCanDeleteReposDisableAuditEntry' - | 'MembersCanDeleteReposEnableAuditEntry' - | 'OrgInviteToBusinessAuditEntry' - | 'PrivateRepositoryForkingDisableAuditEntry' - | 'PrivateRepositoryForkingEnableAuditEntry' - | 'RepositoryVisibilityChangeDisableAuditEntry' - | 'RepositoryVisibilityChangeEnableAuditEntry'; - /** - * The HTTP path for this enterprise. - */ - enterpriseResourcePath?: Maybe; - /** - * The slug of the enterprise. - */ - enterpriseSlug?: Maybe; - /** - * The HTTP URL for this enterprise. - */ - enterpriseUrl?: Maybe; - $on: $EnterpriseAuditEntryData; -} - -/** - * Enterprise billing information visible to enterprise billing managers and owners. - */ -export interface EnterpriseBillingInfo { - __typename?: 'EnterpriseBillingInfo'; - /** - * The number of licenseable users/emails across the enterprise. - */ - allLicensableUsersCount: ScalarsEnums['Int']; - /** - * The number of data packs used by all organizations owned by the enterprise. - */ - assetPacks: ScalarsEnums['Int']; - /** - * The number of available seats across all owned organizations based on the unique number of billable users. - * @deprecated `availableSeats` will be replaced with `totalAvailableLicenses` to provide more clarity on the value being returned Use EnterpriseBillingInfo.totalAvailableLicenses instead. Removal on 2020-01-01 UTC. - */ - availableSeats: ScalarsEnums['Int']; - /** - * The bandwidth quota in GB for all organizations owned by the enterprise. - */ - bandwidthQuota: ScalarsEnums['Float']; - /** - * The bandwidth usage in GB for all organizations owned by the enterprise. - */ - bandwidthUsage: ScalarsEnums['Float']; - /** - * The bandwidth usage as a percentage of the bandwidth quota. - */ - bandwidthUsagePercentage: ScalarsEnums['Int']; - /** - * The total seats across all organizations owned by the enterprise. - * @deprecated `seats` will be replaced with `totalLicenses` to provide more clarity on the value being returned Use EnterpriseBillingInfo.totalLicenses instead. Removal on 2020-01-01 UTC. - */ - seats: ScalarsEnums['Int']; - /** - * The storage quota in GB for all organizations owned by the enterprise. - */ - storageQuota: ScalarsEnums['Float']; - /** - * The storage usage in GB for all organizations owned by the enterprise. - */ - storageUsage: ScalarsEnums['Float']; - /** - * The storage usage as a percentage of the storage quota. - */ - storageUsagePercentage: ScalarsEnums['Int']; - /** - * The number of available licenses across all owned organizations based on the unique number of billable users. - */ - totalAvailableLicenses: ScalarsEnums['Int']; - /** - * The total number of licenses allocated. - */ - totalLicenses: ScalarsEnums['Int']; -} - -/** - * An identity provider configured to provision identities for an enterprise. - */ -export interface EnterpriseIdentityProvider { - __typename?: 'EnterpriseIdentityProvider'; - /** - * The digest algorithm used to sign SAML requests for the identity provider. - */ - digestMethod?: Maybe; - /** - * The enterprise this identity provider belongs to. - */ - enterprise?: Maybe; - /** - * ExternalIdentities provisioned by this identity provider. - */ - externalIdentities: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Filter to external identities with valid org membership only - */ - membersOnly?: Maybe; - }) => ExternalIdentityConnection; - id: ScalarsEnums['ID']; - /** - * The x509 certificate used by the identity provider to sign assertions and responses. - */ - idpCertificate?: Maybe; - /** - * The Issuer Entity ID for the SAML identity provider. - */ - issuer?: Maybe; - /** - * Recovery codes that can be used by admins to access the enterprise if the identity provider is unavailable. - */ - recoveryCodes?: Maybe>; - /** - * The signature algorithm used to sign SAML requests for the identity provider. - */ - signatureMethod?: Maybe; - /** - * The URL endpoint for the identity provider's SAML SSO. - */ - ssoUrl?: Maybe; -} - -/** - * An object that is a member of an enterprise. - */ -export interface EnterpriseMember { - __typename?: 'EnterpriseUserAccount' | 'User'; - $on: $EnterpriseMember; -} - -/** - * The connection type for EnterpriseMember. - */ -export interface EnterpriseMemberConnection { - __typename?: 'EnterpriseMemberConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * A User who is a member of an enterprise through one or more organizations. - */ -export interface EnterpriseMemberEdge { - __typename?: 'EnterpriseMemberEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * Whether the user does not have a license for the enterprise. - * @deprecated All members consume a license Removal on 2021-01-01 UTC. - */ - isUnlicensed: ScalarsEnums['Boolean']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for Organization. - */ -export interface EnterpriseOrganizationMembershipConnection { - __typename?: 'EnterpriseOrganizationMembershipConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An enterprise organization that a user is a member of. - */ -export interface EnterpriseOrganizationMembershipEdge { - __typename?: 'EnterpriseOrganizationMembershipEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; - /** - * The role of the user in the enterprise membership. - */ - role: ScalarsEnums['EnterpriseUserAccountMembershipRole']; -} - -/** - * The connection type for User. - */ -export interface EnterpriseOutsideCollaboratorConnection { - __typename?: 'EnterpriseOutsideCollaboratorConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * A User who is an outside collaborator of an enterprise through one or more organizations. - */ -export interface EnterpriseOutsideCollaboratorEdge { - __typename?: 'EnterpriseOutsideCollaboratorEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * Whether the outside collaborator does not have a license for the enterprise. - * @deprecated All outside collaborators consume a license Removal on 2021-01-01 UTC. - */ - isUnlicensed: ScalarsEnums['Boolean']; - /** - * The item at the end of the edge. - */ - node?: Maybe; - /** - * The enterprise organization repositories this user is a member of. - */ - repositories: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for repositories. - * @defaultValue `{"field":"NAME","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseRepositoryInfoConnection; -} - -/** - * Enterprise information only visible to enterprise owners. - */ -export interface EnterpriseOwnerInfo { - __typename?: 'EnterpriseOwnerInfo'; - /** - * A list of all of the administrators for this enterprise. - */ - admins: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for administrators returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * The role to filter by. - */ - role?: Maybe; - }) => EnterpriseAdministratorConnection; - /** - * A list of users in the enterprise who currently have two-factor authentication disabled. - */ - affiliatedUsersWithTwoFactorDisabled: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => UserConnection; - /** - * Whether or not affiliated users with two-factor authentication disabled exist in the enterprise. - */ - affiliatedUsersWithTwoFactorDisabledExist: ScalarsEnums['Boolean']; - /** - * The setting value for whether private repository forking is enabled for repositories in organizations in this enterprise. - */ - allowPrivateRepositoryForkingSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided private repository forking setting value. - */ - allowPrivateRepositoryForkingSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for base repository permissions for organizations in this enterprise. - */ - defaultRepositoryPermissionSetting: ScalarsEnums['EnterpriseDefaultRepositoryPermissionSettingValue']; - /** - * A list of enterprise organizations configured with the provided base repository permission. - */ - defaultRepositoryPermissionSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The permission to find organizations for. - */ - value: DefaultRepositoryPermissionField; - }) => OrganizationConnection; - /** - * A list of domains owned by the enterprise. - */ - domains: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Filter whether or not the domain is approved. - */ - isApproved?: Maybe; - /** - * Filter whether or not the domain is verified. - */ - isVerified?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for verifiable domains returned. - * @defaultValue `{"field":"DOMAIN","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => VerifiableDomainConnection; - /** - * Enterprise Server installations owned by the enterprise. - */ - enterpriseServerInstallations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Whether or not to only return installations discovered via GitHub Connect. - * @defaultValue `false` - */ - connectedOnly?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for Enterprise Server installations returned. - * @defaultValue `{"field":"HOST_NAME","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseServerInstallationConnection; - /** - * The setting value for whether the enterprise has an IP allow list enabled. - */ - ipAllowListEnabledSetting: ScalarsEnums['IpAllowListEnabledSettingValue']; - /** - * The IP addresses that are allowed to access resources owned by the enterprise. - */ - ipAllowListEntries: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for IP allow list entries returned. - * @defaultValue `{"field":"ALLOW_LIST_VALUE","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => IpAllowListEntryConnection; - /** - * The setting value for whether the enterprise has IP allow list configuration for installed GitHub Apps enabled. - */ - ipAllowListForInstalledAppsEnabledSetting: ScalarsEnums['IpAllowListForInstalledAppsEnabledSettingValue']; - /** - * Whether or not the base repository permission is currently being updated. - */ - isUpdatingDefaultRepositoryPermission: ScalarsEnums['Boolean']; - /** - * Whether the two-factor authentication requirement is currently being enforced. - */ - isUpdatingTwoFactorRequirement: ScalarsEnums['Boolean']; - /** - * The setting value for whether organization members with admin permissions on a repository can change repository visibility. - */ - membersCanChangeRepositoryVisibilitySetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided can change repository visibility setting value. - */ - membersCanChangeRepositoryVisibilitySettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for whether members of organizations in the enterprise can create internal repositories. - */ - membersCanCreateInternalRepositoriesSetting?: Maybe; - /** - * The setting value for whether members of organizations in the enterprise can create private repositories. - */ - membersCanCreatePrivateRepositoriesSetting?: Maybe; - /** - * The setting value for whether members of organizations in the enterprise can create public repositories. - */ - membersCanCreatePublicRepositoriesSetting?: Maybe; - /** - * The setting value for whether members of organizations in the enterprise can create repositories. - */ - membersCanCreateRepositoriesSetting?: Maybe< - ScalarsEnums['EnterpriseMembersCanCreateRepositoriesSettingValue'] - >; - /** - * A list of enterprise organizations configured with the provided repository creation setting value. - */ - membersCanCreateRepositoriesSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting to find organizations for. - */ - value: OrganizationMembersCanCreateRepositoriesSettingValue; - }) => OrganizationConnection; - /** - * The setting value for whether members with admin permissions for repositories can delete issues. - */ - membersCanDeleteIssuesSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided members can delete issues setting value. - */ - membersCanDeleteIssuesSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for whether members with admin permissions for repositories can delete or transfer repositories. - */ - membersCanDeleteRepositoriesSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided members can delete repositories setting value. - */ - membersCanDeleteRepositoriesSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for whether members of organizations in the enterprise can invite outside collaborators. - */ - membersCanInviteCollaboratorsSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided members can invite collaborators setting value. - */ - membersCanInviteCollaboratorsSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * Indicates whether members of this enterprise's organizations can purchase additional services for those organizations. - */ - membersCanMakePurchasesSetting: ScalarsEnums['EnterpriseMembersCanMakePurchasesSettingValue']; - /** - * The setting value for whether members with admin permissions for repositories can update protected branches. - */ - membersCanUpdateProtectedBranchesSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided members can update protected branches setting value. - */ - membersCanUpdateProtectedBranchesSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for whether members can view dependency insights. - */ - membersCanViewDependencyInsightsSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided members can view dependency insights setting value. - */ - membersCanViewDependencyInsightsSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * Indicates if email notification delivery for this enterprise is restricted to verified or approved domains. - */ - notificationDeliveryRestrictionEnabledSetting: ScalarsEnums['NotificationRestrictionSettingValue']; - /** - * The OIDC Identity Provider for the enterprise. - */ - oidcProvider?: Maybe; - /** - * The setting value for whether organization projects are enabled for organizations in this enterprise. - */ - organizationProjectsSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided organization projects setting value. - */ - organizationProjectsSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * A list of outside collaborators across the repositories in the enterprise. - */ - outsideCollaborators: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * The login of one specific outside collaborator. - */ - login?: Maybe; - /** - * Ordering options for outside collaborators returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * Only return outside collaborators on repositories with this visibility. - */ - visibility?: Maybe; - }) => EnterpriseOutsideCollaboratorConnection; - /** - * A list of pending administrator invitations for the enterprise. - */ - pendingAdminInvitations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pending enterprise administrator invitations returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"DESC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * The role to filter by. - */ - role?: Maybe; - }) => EnterpriseAdministratorInvitationConnection; - /** - * A list of pending collaborator invitations across the repositories in the enterprise. - */ - pendingCollaboratorInvitations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pending repository collaborator invitations returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"DESC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - }) => RepositoryInvitationConnection; - /** - * A list of pending collaborators across the repositories in the enterprise. - * @deprecated Repository invitations can now be associated with an email, not only an invitee. Use the `pendingCollaboratorInvitations` field instead. Removal on 2020-10-01 UTC. - */ - pendingCollaborators: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pending repository collaborator invitations returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"DESC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - }) => EnterprisePendingCollaboratorConnection; - /** - * A list of pending member invitations for organizations in the enterprise. - */ - pendingMemberInvitations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - }) => EnterprisePendingMemberInvitationConnection; - /** - * The setting value for whether repository projects are enabled in this enterprise. - */ - repositoryProjectsSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided repository projects setting value. - */ - repositoryProjectsSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The SAML Identity Provider for the enterprise. - */ - samlIdentityProvider?: Maybe; - /** - * A list of enterprise organizations configured with the SAML single sign-on setting value. - */ - samlIdentityProviderSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: IdentityProviderConfigurationState; - }) => OrganizationConnection; - /** - * A list of members with a support entitlement. - */ - supportEntitlements: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for support entitlement users returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseMemberConnection; - /** - * The setting value for whether team discussions are enabled for organizations in this enterprise. - */ - teamDiscussionsSetting: ScalarsEnums['EnterpriseEnabledDisabledSettingValue']; - /** - * A list of enterprise organizations configured with the provided team discussions setting value. - */ - teamDiscussionsSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; - /** - * The setting value for whether the enterprise requires two-factor authentication for its organizations and users. - */ - twoFactorRequiredSetting: ScalarsEnums['EnterpriseEnabledSettingValue']; - /** - * A list of enterprise organizations configured with the two-factor authentication setting value. - */ - twoFactorRequiredSettingOrganizations: (args: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations with this setting. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The setting value to find organizations for. - */ - value: Scalars['Boolean']; - }) => OrganizationConnection; -} - -/** - * The connection type for User. - */ -export interface EnterprisePendingCollaboratorConnection { - __typename?: 'EnterprisePendingCollaboratorConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * A user with an invitation to be a collaborator on a repository owned by an organization in an enterprise. - */ -export interface EnterprisePendingCollaboratorEdge { - __typename?: 'EnterprisePendingCollaboratorEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * Whether the invited collaborator does not have a license for the enterprise. - * @deprecated All pending collaborators consume a license Removal on 2021-01-01 UTC. - */ - isUnlicensed: ScalarsEnums['Boolean']; - /** - * The item at the end of the edge. - */ - node?: Maybe; - /** - * The enterprise organization repositories this user is a member of. - */ - repositories: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for repositories. - * @defaultValue `{"field":"NAME","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseRepositoryInfoConnection; -} - -/** - * The connection type for OrganizationInvitation. - */ -export interface EnterprisePendingMemberInvitationConnection { - __typename?: 'EnterprisePendingMemberInvitationConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; - /** - * Identifies the total count of unique users in the connection. - */ - totalUniqueUserCount: ScalarsEnums['Int']; -} - -/** - * An invitation to be a member in an enterprise organization. - */ -export interface EnterprisePendingMemberInvitationEdge { - __typename?: 'EnterprisePendingMemberInvitationEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * Whether the invitation has a license for the enterprise. - * @deprecated All pending members consume a license Removal on 2020-07-01 UTC. - */ - isUnlicensed: ScalarsEnums['Boolean']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A subset of repository information queryable from an enterprise. - */ -export interface EnterpriseRepositoryInfo { - __typename?: 'EnterpriseRepositoryInfo'; - id: ScalarsEnums['ID']; - /** - * Identifies if the repository is private or internal. - */ - isPrivate: ScalarsEnums['Boolean']; - /** - * The repository's name. - */ - name: ScalarsEnums['String']; - /** - * The repository's name with owner. - */ - nameWithOwner: ScalarsEnums['String']; -} - -/** - * The connection type for EnterpriseRepositoryInfo. - */ -export interface EnterpriseRepositoryInfoConnection { - __typename?: 'EnterpriseRepositoryInfoConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseRepositoryInfoEdge { - __typename?: 'EnterpriseRepositoryInfoEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An Enterprise Server installation. - */ -export interface EnterpriseServerInstallation { - __typename?: 'EnterpriseServerInstallation'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The customer name to which the Enterprise Server installation belongs. - */ - customerName: ScalarsEnums['String']; - /** - * The host name of the Enterprise Server installation. - */ - hostName: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - /** - * Whether or not the installation is connected to an Enterprise Server installation via GitHub Connect. - */ - isConnected: ScalarsEnums['Boolean']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * User accounts on this Enterprise Server installation. - */ - userAccounts: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for Enterprise Server user accounts returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseServerUserAccountConnection; - /** - * User accounts uploads for the Enterprise Server installation. - */ - userAccountsUploads: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for Enterprise Server user accounts uploads returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"DESC"}` - */ - orderBy?: Maybe; - }) => EnterpriseServerUserAccountsUploadConnection; -} - -/** - * The connection type for EnterpriseServerInstallation. - */ -export interface EnterpriseServerInstallationConnection { - __typename?: 'EnterpriseServerInstallationConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseServerInstallationEdge { - __typename?: 'EnterpriseServerInstallationEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A user account on an Enterprise Server installation. - */ -export interface EnterpriseServerUserAccount { - __typename?: 'EnterpriseServerUserAccount'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * User emails belonging to this user account. - */ - emails: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for Enterprise Server user account emails returned from the connection. - * @defaultValue `{"field":"EMAIL","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => EnterpriseServerUserAccountEmailConnection; - /** - * The Enterprise Server installation on which this user account exists. - */ - enterpriseServerInstallation: EnterpriseServerInstallation; - id: ScalarsEnums['ID']; - /** - * Whether the user account is a site administrator on the Enterprise Server installation. - */ - isSiteAdmin: ScalarsEnums['Boolean']; - /** - * The login of the user account on the Enterprise Server installation. - */ - login: ScalarsEnums['String']; - /** - * The profile name of the user account on the Enterprise Server installation. - */ - profileName?: Maybe; - /** - * The date and time when the user account was created on the Enterprise Server installation. - */ - remoteCreatedAt: ScalarsEnums['DateTime']; - /** - * The ID of the user account on the Enterprise Server installation. - */ - remoteUserId: ScalarsEnums['Int']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for EnterpriseServerUserAccount. - */ -export interface EnterpriseServerUserAccountConnection { - __typename?: 'EnterpriseServerUserAccountConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseServerUserAccountEdge { - __typename?: 'EnterpriseServerUserAccountEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An email belonging to a user account on an Enterprise Server installation. - */ -export interface EnterpriseServerUserAccountEmail { - __typename?: 'EnterpriseServerUserAccountEmail'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The email address. - */ - email: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - /** - * Indicates whether this is the primary email of the associated user account. - */ - isPrimary: ScalarsEnums['Boolean']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The user account to which the email belongs. - */ - userAccount: EnterpriseServerUserAccount; -} - -/** - * The connection type for EnterpriseServerUserAccountEmail. - */ -export interface EnterpriseServerUserAccountEmailConnection { - __typename?: 'EnterpriseServerUserAccountEmailConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseServerUserAccountEmailEdge { - __typename?: 'EnterpriseServerUserAccountEmailEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A user accounts upload from an Enterprise Server installation. - */ -export interface EnterpriseServerUserAccountsUpload { - __typename?: 'EnterpriseServerUserAccountsUpload'; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The enterprise to which this upload belongs. - */ - enterprise: Enterprise; - /** - * The Enterprise Server installation for which this upload was generated. - */ - enterpriseServerInstallation: EnterpriseServerInstallation; - id: ScalarsEnums['ID']; - /** - * The name of the file uploaded. - */ - name: ScalarsEnums['String']; - /** - * The synchronization state of the upload - */ - syncState: ScalarsEnums['EnterpriseServerUserAccountsUploadSyncState']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for EnterpriseServerUserAccountsUpload. - */ -export interface EnterpriseServerUserAccountsUploadConnection { - __typename?: 'EnterpriseServerUserAccountsUploadConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseServerUserAccountsUploadEdge { - __typename?: 'EnterpriseServerUserAccountsUploadEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An account for a user who is an admin of an enterprise or a member of an enterprise through one or more organizations. - */ -export interface EnterpriseUserAccount { - __typename?: 'EnterpriseUserAccount'; - /** - * A URL pointing to the enterprise user account's public avatar. - */ - avatarUrl: (args?: { - /** - * The size of the resulting square image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The enterprise in which this user account exists. - */ - enterprise: Enterprise; - id: ScalarsEnums['ID']; - /** - * An identifier for the enterprise user account, a login or email address - */ - login: ScalarsEnums['String']; - /** - * The name of the enterprise user account - */ - name?: Maybe; - /** - * A list of enterprise organizations this user is a member of. - */ - organizations: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for organizations returned from the connection. - * @defaultValue `{"field":"LOGIN","direction":"ASC"}` - */ - orderBy?: Maybe; - /** - * The search string to look for. - */ - query?: Maybe; - /** - * The role of the user in the enterprise organization. - */ - role?: Maybe; - }) => EnterpriseOrganizationMembershipConnection; - /** - * The HTTP path for this user. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this user. - */ - url: ScalarsEnums['URI']; - /** - * The user within the enterprise. - */ - user?: Maybe; -} - -/** - * The connection type for EnterpriseUserAccount. - */ -export interface EnterpriseUserAccountConnection { - __typename?: 'EnterpriseUserAccountConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnterpriseUserAccountEdge { - __typename?: 'EnterpriseUserAccountEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An environment. - */ -export interface Environment { - __typename?: 'Environment'; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - id: ScalarsEnums['ID']; - /** - * The name of the environment - */ - name: ScalarsEnums['String']; - /** - * The protection rules defined for this environment - */ - protectionRules: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => DeploymentProtectionRuleConnection; -} - -/** - * The connection type for Environment. - */ -export interface EnvironmentConnection { - __typename?: 'EnvironmentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface EnvironmentEdge { - __typename?: 'EnvironmentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An external identity provisioned by SAML SSO or SCIM. - */ -export interface ExternalIdentity { - __typename?: 'ExternalIdentity'; - /** - * The GUID for this identity - */ - guid: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - /** - * Organization invitation for this SCIM-provisioned external identity - */ - organizationInvitation?: Maybe; - /** - * SAML Identity attributes - */ - samlIdentity?: Maybe; - /** - * SCIM Identity attributes - */ - scimIdentity?: Maybe; - /** - * User linked to this external identity. Will be NULL if this identity has not been claimed by an organization member. - */ - user?: Maybe; -} - -/** - * The connection type for ExternalIdentity. - */ -export interface ExternalIdentityConnection { - __typename?: 'ExternalIdentityConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface ExternalIdentityEdge { - __typename?: 'ExternalIdentityEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * SAML attributes for the External Identity - */ -export interface ExternalIdentitySamlAttributes { - __typename?: 'ExternalIdentitySamlAttributes'; - /** - * The emails associated with the SAML identity - */ - emails?: Maybe>; - /** - * Family name of the SAML identity - */ - familyName?: Maybe; - /** - * Given name of the SAML identity - */ - givenName?: Maybe; - /** - * The groups linked to this identity in IDP - */ - groups?: Maybe>; - /** - * The NameID of the SAML identity - */ - nameId?: Maybe; - /** - * The userName of the SAML identity - */ - username?: Maybe; -} - -/** - * SCIM attributes for the External Identity - */ -export interface ExternalIdentityScimAttributes { - __typename?: 'ExternalIdentityScimAttributes'; - /** - * The emails associated with the SCIM identity - */ - emails?: Maybe>; - /** - * Family name of the SCIM identity - */ - familyName?: Maybe; - /** - * Given name of the SCIM identity - */ - givenName?: Maybe; - /** - * The groups linked to this identity in IDP - */ - groups?: Maybe>; - /** - * The userName of the SCIM identity - */ - username?: Maybe; -} - -/** - * Autogenerated return type of FollowUser - */ -export interface FollowUserPayload { - __typename?: 'FollowUserPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The user that was followed. - */ - user?: Maybe; -} - -/** - * The connection type for User. - */ -export interface FollowerConnection { - __typename?: 'FollowerConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * The connection type for User. - */ -export interface FollowingConnection { - __typename?: 'FollowingConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * A funding platform link for a repository. - */ -export interface FundingLink { - __typename?: 'FundingLink'; - /** - * The funding platform this link is for. - */ - platform: ScalarsEnums['FundingPlatform']; - /** - * The configured URL for this funding link. - */ - url: ScalarsEnums['URI']; -} - -/** - * A generic hovercard context with a message and icon - */ -export interface GenericHovercardContext { - __typename?: 'GenericHovercardContext'; - /** - * A string describing this context - */ - message: ScalarsEnums['String']; - /** - * An octicon to accompany this context - */ - octicon: ScalarsEnums['String']; -} - -/** - * A Gist. - */ -export interface Gist { - __typename?: 'Gist'; - /** - * A list of comments associated with the gist - */ - comments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => GistCommentConnection; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * The gist description. - */ - description?: Maybe; - /** - * The files in this gist. - */ - files: (args?: { - /** - * The maximum number of files to return. - * @defaultValue `10` - */ - limit?: Maybe; - /** - * The oid of the files to return - */ - oid?: Maybe; - }) => Maybe>>; - /** - * A list of forks associated with the gist - */ - forks: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for gists returned from the connection - */ - orderBy?: Maybe; - }) => GistConnection; - id: ScalarsEnums['ID']; - /** - * Identifies if the gist is a fork. - */ - isFork: ScalarsEnums['Boolean']; - /** - * Whether the gist is public or not. - */ - isPublic: ScalarsEnums['Boolean']; - /** - * The gist name. - */ - name: ScalarsEnums['String']; - /** - * The gist owner. - */ - owner?: Maybe; - /** - * Identifies when the gist was last pushed to. - */ - pushedAt?: Maybe; - /** - * The HTML path to this resource. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Returns a count of how many stargazers there are on this object - */ - stargazerCount: ScalarsEnums['Int']; - /** - * A list of users who have starred this starrable. - */ - stargazers: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Order for connection - */ - orderBy?: Maybe; - }) => StargazerConnection; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this Gist. - */ - url: ScalarsEnums['URI']; - /** - * Returns a boolean indicating whether the viewing user has starred this starrable. - */ - viewerHasStarred: ScalarsEnums['Boolean']; -} - -/** - * Represents a comment on an Gist. - */ -export interface GistComment { - __typename?: 'GistComment'; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the gist. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * Identifies the comment body. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - /** - * The associated gist. - */ - gist: Gist; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * Returns whether or not a comment has been minimized. - */ - isMinimized: ScalarsEnums['Boolean']; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * Returns why the comment was minimized. - */ - minimizedReason?: Maybe; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can minimize this object. - */ - viewerCanMinimize: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Reasons why the current viewer can not update this comment. - */ - viewerCannotUpdateReasons: Array; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; -} - -/** - * The connection type for GistComment. - */ -export interface GistCommentConnection { - __typename?: 'GistCommentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface GistCommentEdge { - __typename?: 'GistCommentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for Gist. - */ -export interface GistConnection { - __typename?: 'GistConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface GistEdge { - __typename?: 'GistEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * A file in a gist. - */ -export interface GistFile { - __typename?: 'GistFile'; - /** - * The file name encoded to remove characters that are invalid in URL paths. - */ - encodedName?: Maybe; - /** - * The gist file encoding. - */ - encoding?: Maybe; - /** - * The file extension from the file name. - */ - extension?: Maybe; - /** - * Indicates if this file is an image. - */ - isImage: ScalarsEnums['Boolean']; - /** - * Whether the file's contents were truncated. - */ - isTruncated: ScalarsEnums['Boolean']; - /** - * The programming language this file is written in. - */ - language?: Maybe; - /** - * The gist file name. - */ - name?: Maybe; - /** - * The gist file size in bytes. - */ - size?: Maybe; - /** - * UTF8 text data or null if the file is binary - */ - text: (args?: { - /** - * Optionally truncate the returned file to this length. - */ - truncate?: Maybe; - }) => Maybe; -} - -/** - * Represents an actor in a Git commit (ie. an author or committer). - */ -export interface GitActor { - __typename?: 'GitActor'; - /** - * A URL pointing to the author's public avatar. - */ - avatarUrl: (args?: { - /** - * The size of the resulting square image. - */ - size?: Maybe; - }) => ScalarsEnums['URI']; - /** - * The timestamp of the Git action (authoring or committing). - */ - date?: Maybe; - /** - * The email in the Git commit. - */ - email?: Maybe; - /** - * The name in the Git commit. - */ - name?: Maybe; - /** - * The GitHub user corresponding to the email field. Null if no such user exists. - */ - user?: Maybe; -} - -/** - * The connection type for GitActor. - */ -export interface GitActorConnection { - __typename?: 'GitActorConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface GitActorEdge { - __typename?: 'GitActorEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents information about the GitHub instance. - */ -export interface GitHubMetadata { - __typename?: 'GitHubMetadata'; - /** - * Returns a String that's a SHA of `github-services` - */ - gitHubServicesSha: ScalarsEnums['GitObjectID']; - /** - * IP addresses that users connect to for git operations - */ - gitIpAddresses?: Maybe>; - /** - * IP addresses that service hooks are sent from - */ - hookIpAddresses?: Maybe>; - /** - * IP addresses that the importer connects from - */ - importerIpAddresses?: Maybe>; - /** - * Whether or not users are verified - */ - isPasswordAuthenticationVerifiable: ScalarsEnums['Boolean']; - /** - * IP addresses for GitHub Pages' A records - */ - pagesIpAddresses?: Maybe>; -} - -/** - * Represents a Git object. - */ -export interface GitObject { - __typename?: 'Blob' | 'Commit' | 'Tag' | 'Tree'; - /** - * An abbreviated version of the Git object ID - */ - abbreviatedOid: ScalarsEnums['String']; - /** - * The HTTP path for this Git object - */ - commitResourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this Git object - */ - commitUrl: ScalarsEnums['URI']; - id: ScalarsEnums['ID']; - /** - * The Git object ID - */ - oid: ScalarsEnums['GitObjectID']; - /** - * The Repository the Git object belongs to - */ - repository: Repository; - $on: $GitObject; -} - -/** - * Information about a signature (GPG or S/MIME) on a Commit or Tag. - */ -export interface GitSignature { - __typename?: 'GpgSignature' | 'SmimeSignature' | 'UnknownSignature'; - /** - * Email used to sign this object. - */ - email: ScalarsEnums['String']; - /** - * True if the signature is valid and verified by GitHub. - */ - isValid: ScalarsEnums['Boolean']; - /** - * Payload for GPG signing object. Raw ODB object without the signature header. - */ - payload: ScalarsEnums['String']; - /** - * ASCII-armored signature header from object. - */ - signature: ScalarsEnums['String']; - /** - * GitHub user corresponding to the email signing this commit. - */ - signer?: Maybe; - /** - * The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid. - */ - state: ScalarsEnums['GitSignatureState']; - /** - * True if the signature was made with GitHub's signing key. - */ - wasSignedByGitHub: ScalarsEnums['Boolean']; - $on: $GitSignature; -} - -/** - * Represents a GPG signature on a Commit or Tag. - */ -export interface GpgSignature { - __typename?: 'GpgSignature'; - /** - * Email used to sign this object. - */ - email: ScalarsEnums['String']; - /** - * True if the signature is valid and verified by GitHub. - */ - isValid: ScalarsEnums['Boolean']; - /** - * Hex-encoded ID of the key that signed this object. - */ - keyId?: Maybe; - /** - * Payload for GPG signing object. Raw ODB object without the signature header. - */ - payload: ScalarsEnums['String']; - /** - * ASCII-armored signature header from object. - */ - signature: ScalarsEnums['String']; - /** - * GitHub user corresponding to the email signing this commit. - */ - signer?: Maybe; - /** - * The state of this signature. `VALID` if signature is valid and verified by GitHub, otherwise represents reason why signature is considered invalid. - */ - state: ScalarsEnums['GitSignatureState']; - /** - * True if the signature was made with GitHub's signing key. - */ - wasSignedByGitHub: ScalarsEnums['Boolean']; -} - -/** - * Represents a 'head_ref_deleted' event on a given pull request. - */ -export interface HeadRefDeletedEvent { - __typename?: 'HeadRefDeletedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Identifies the Ref associated with the `head_ref_deleted` event. - */ - headRef?: Maybe; - /** - * Identifies the name of the Ref associated with the `head_ref_deleted` event. - */ - headRefName: ScalarsEnums['String']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * Represents a 'head_ref_force_pushed' event on a given pull request. - */ -export interface HeadRefForcePushedEvent { - __typename?: 'HeadRefForcePushedEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the after commit SHA for the 'head_ref_force_pushed' event. - */ - afterCommit?: Maybe; - /** - * Identifies the before commit SHA for the 'head_ref_force_pushed' event. - */ - beforeCommit?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; - /** - * Identifies the fully qualified ref name for the 'head_ref_force_pushed' event. - */ - ref?: Maybe; -} - -/** - * Represents a 'head_ref_restored' event on a given pull request. - */ -export interface HeadRefRestoredEvent { - __typename?: 'HeadRefRestoredEvent'; - /** - * Identifies the actor who performed the event. - */ - actor?: Maybe; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * PullRequest referenced by event. - */ - pullRequest: PullRequest; -} - -/** - * Detail needed to display a hovercard for a user - */ -export interface Hovercard { - __typename?: 'Hovercard'; - /** - * Each of the contexts for this hovercard - */ - contexts: Array; -} - -/** - * An individual line of a hovercard - */ -export interface HovercardContext { - __typename?: - | 'GenericHovercardContext' - | 'OrganizationTeamsHovercardContext' - | 'OrganizationsHovercardContext' - | 'ReviewStatusHovercardContext' - | 'ViewerHovercardContext'; - /** - * A string describing this context - */ - message: ScalarsEnums['String']; - /** - * An octicon to accompany this context - */ - octicon: ScalarsEnums['String']; - $on: $HovercardContext; -} - -/** - * Autogenerated return type of InviteEnterpriseAdmin - */ -export interface InviteEnterpriseAdminPayload { - __typename?: 'InviteEnterpriseAdminPayload'; - /** - * A unique identifier for the client performing the mutation. - */ - clientMutationId?: Maybe; - /** - * The created enterprise administrator invitation. - */ - invitation?: Maybe; -} - -/** - * An IP address or range of addresses that is allowed to access an owner's resources. - */ -export interface IpAllowListEntry { - __typename?: 'IpAllowListEntry'; - /** - * A single IP address or range of IP addresses in CIDR notation. - */ - allowListValue: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - id: ScalarsEnums['ID']; - /** - * Whether the entry is currently active. - */ - isActive: ScalarsEnums['Boolean']; - /** - * The name of the IP allow list entry. - */ - name?: Maybe; - /** - * The owner of the IP allow list entry. - */ - owner: IpAllowListOwner; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * The connection type for IpAllowListEntry. - */ -export interface IpAllowListEntryConnection { - __typename?: 'IpAllowListEntryConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface IpAllowListEntryEdge { - __typename?: 'IpAllowListEntryEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Types that can own an IP allow list. - */ -export interface IpAllowListOwner { - __typename?: 'App' | 'Enterprise' | 'Organization'; - $on: $IpAllowListOwner; -} - -/** - * An Issue is a place to discuss ideas, enhancements, tasks, and bugs for a project. - */ -export interface Issue { - __typename?: 'Issue'; - /** - * Reason that the conversation was locked. - */ - activeLockReason?: Maybe; - /** - * A list of Users assigned to this object. - */ - assignees: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => UserConnection; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * Identifies the body of the issue. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The http path for this issue body - */ - bodyResourcePath: ScalarsEnums['URI']; - /** - * Identifies the body of the issue rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * The http URL for this issue body - */ - bodyUrl: ScalarsEnums['URI']; - /** - * `true` if the object is closed (definition of closed may depend on type) - */ - closed: ScalarsEnums['Boolean']; - /** - * Identifies the date and time when the object was closed. - */ - closedAt?: Maybe; - /** - * A list of comments associated with the Issue. - */ - comments: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for issue comments returned from the connection. - */ - orderBy?: Maybe; - }) => IssueCommentConnection; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - /** - * The hovercard information for this issue - */ - hovercard: (args?: { - /** - * Whether or not to include notification contexts - * @defaultValue `true` - */ - includeNotificationContexts?: Maybe; - }) => Hovercard; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * Indicates whether or not this issue is currently pinned to the repository issues list - */ - isPinned?: Maybe; - /** - * Is this issue read by the viewer - */ - isReadByViewer?: Maybe; - /** - * A list of labels associated with the object. - */ - labels: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for labels returned from the connection. - * @defaultValue `{"field":"CREATED_AT","direction":"ASC"}` - */ - orderBy?: Maybe; - }) => Maybe; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * `true` if the object is locked - */ - locked: ScalarsEnums['Boolean']; - /** - * Identifies the milestone associated with the issue. - */ - milestone?: Maybe; - /** - * Identifies the issue number. - */ - number: ScalarsEnums['Int']; - /** - * A list of Users that are participating in the Issue conversation. - */ - participants: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => UserConnection; - /** - * List of project cards associated with this issue. - */ - projectCards: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * A list of archived states to filter the cards by - * @defaultValue `["ARCHIVED","NOT_ARCHIVED"]` - */ - archivedStates?: Maybe>>; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => ProjectCardConnection; - /** - * Find a project by project (beta) number. - */ - projectNext: (args: { - /** - * The project (beta) number. - */ - number: Scalars['Int']; - }) => Maybe; - /** - * A list of project (beta) items under the owner. - */ - projectsNext: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * A project (beta) to search for under the the owner. - */ - query?: Maybe; - /** - * How to order the returned projects (beta). - * @defaultValue `"TITLE"` - */ - sortBy?: Maybe; - }) => ProjectNextConnection; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * A list of reactions grouped by content left on the subject. - */ - reactionGroups?: Maybe>; - /** - * A list of Reactions left on the Issue. - */ - reactions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Allows filtering Reactions by emoji. - */ - content?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows specifying the order in which reactions are returned. - */ - orderBy?: Maybe; - }) => ReactionConnection; - /** - * The repository associated with this node. - */ - repository: Repository; - /** - * The HTTP path for this issue - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the state of the issue. - */ - state: ScalarsEnums['IssueState']; - /** - * A list of events, comments, commits, etc. associated with the issue. - * @deprecated `timeline` will be removed Use Issue.timelineItems instead. Removal on 2020-10-01 UTC. - */ - timeline: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows filtering timeline events by a `since` timestamp. - */ - since?: Maybe; - }) => IssueTimelineConnection; - /** - * A list of events, comments, commits, etc. associated with the issue. - */ - timelineItems: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Filter timeline items by type. - */ - itemTypes?: Maybe>; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Filter timeline items by a `since` timestamp. - */ - since?: Maybe; - /** - * Skips the first _n_ elements in the list. - */ - skip?: Maybe; - }) => IssueTimelineItemsConnection; - /** - * Identifies the issue title. - */ - title: ScalarsEnums['String']; - /** - * Identifies the issue title rendered to HTML. - */ - titleHTML: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this issue - */ - url: ScalarsEnums['URI']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Can user react to this subject - */ - viewerCanReact: ScalarsEnums['Boolean']; - /** - * Check if the viewer is able to change their subscription status for the repository. - */ - viewerCanSubscribe: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Reasons why the current viewer can not update this comment. - */ - viewerCannotUpdateReasons: Array; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; - /** - * Identifies if the viewer is watching, not watching, or ignoring the subscribable entity. - */ - viewerSubscription?: Maybe; -} - -/** - * Represents a comment on an Issue. - */ -export interface IssueComment { - __typename?: 'IssueComment'; - /** - * The actor who authored the comment. - */ - author?: Maybe; - /** - * Author's association with the subject of the comment. - */ - authorAssociation: ScalarsEnums['CommentAuthorAssociation']; - /** - * The body as Markdown. - */ - body: ScalarsEnums['String']; - /** - * The body rendered to HTML. - */ - bodyHTML: ScalarsEnums['HTML']; - /** - * The body rendered to text. - */ - bodyText: ScalarsEnums['String']; - /** - * Identifies the date and time when the object was created. - */ - createdAt: ScalarsEnums['DateTime']; - /** - * Check if this comment was created via an email reply. - */ - createdViaEmail: ScalarsEnums['Boolean']; - /** - * Identifies the primary key from the database. - */ - databaseId?: Maybe; - /** - * The actor who edited the comment. - */ - editor?: Maybe; - id: ScalarsEnums['ID']; - /** - * Check if this comment was edited and includes an edit with the creation data - */ - includesCreatedEdit: ScalarsEnums['Boolean']; - /** - * Returns whether or not a comment has been minimized. - */ - isMinimized: ScalarsEnums['Boolean']; - /** - * Identifies the issue associated with the comment. - */ - issue: Issue; - /** - * The moment the editor made the last edit - */ - lastEditedAt?: Maybe; - /** - * Returns why the comment was minimized. - */ - minimizedReason?: Maybe; - /** - * Identifies when the comment was published at. - */ - publishedAt?: Maybe; - /** - * Returns the pull request associated with the comment, if this comment was made on a - * pull request. - */ - pullRequest?: Maybe; - /** - * A list of reactions grouped by content left on the subject. - */ - reactionGroups?: Maybe>; - /** - * A list of Reactions left on the Issue. - */ - reactions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Allows filtering Reactions by emoji. - */ - content?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Allows specifying the order in which reactions are returned. - */ - orderBy?: Maybe; - }) => ReactionConnection; - /** - * The repository associated with this node. - */ - repository: Repository; - /** - * The HTTP path for this issue comment - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the object was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; - /** - * The HTTP URL for this issue comment - */ - url: ScalarsEnums['URI']; - /** - * A list of edits to this content. - */ - userContentEdits: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - }) => Maybe; - /** - * Check if the current viewer can delete this object. - */ - viewerCanDelete: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can minimize this object. - */ - viewerCanMinimize: ScalarsEnums['Boolean']; - /** - * Can user react to this subject - */ - viewerCanReact: ScalarsEnums['Boolean']; - /** - * Check if the current viewer can update this object. - */ - viewerCanUpdate: ScalarsEnums['Boolean']; - /** - * Reasons why the current viewer can not update this comment. - */ - viewerCannotUpdateReasons: Array; - /** - * Did the viewer author this comment. - */ - viewerDidAuthor: ScalarsEnums['Boolean']; -} - -/** - * The connection type for IssueComment. - */ -export interface IssueCommentConnection { - __typename?: 'IssueCommentConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface IssueCommentEdge { - __typename?: 'IssueCommentEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * The connection type for Issue. - */ -export interface IssueConnection { - __typename?: 'IssueConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * This aggregates issues opened by a user within one repository. - */ -export interface IssueContributionsByRepository { - __typename?: 'IssueContributionsByRepository'; - /** - * The issue contributions. - */ - contributions: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for contributions returned from the connection. - * @defaultValue `{"direction":"DESC"}` - */ - orderBy?: Maybe; - }) => CreatedIssueContributionConnection; - /** - * The repository in which the issues were opened. - */ - repository: Repository; -} - -/** - * An edge in a connection. - */ -export interface IssueEdge { - __typename?: 'IssueEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Used for return value of Repository.issueOrPullRequest. - */ -export interface IssueOrPullRequest { - __typename?: 'Issue' | 'PullRequest'; - $on: $IssueOrPullRequest; -} - -/** - * A repository issue template. - */ -export interface IssueTemplate { - __typename?: 'IssueTemplate'; - /** - * The template purpose. - */ - about?: Maybe; - /** - * The suggested issue body. - */ - body?: Maybe; - /** - * The template name. - */ - name: ScalarsEnums['String']; - /** - * The suggested issue title. - */ - title?: Maybe; -} - -/** - * The connection type for IssueTimelineItem. - */ -export interface IssueTimelineConnection { - __typename?: 'IssueTimelineConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An item in an issue timeline - */ -export interface IssueTimelineItem { - __typename?: - | 'AssignedEvent' - | 'ClosedEvent' - | 'Commit' - | 'CrossReferencedEvent' - | 'DemilestonedEvent' - | 'IssueComment' - | 'LabeledEvent' - | 'LockedEvent' - | 'MilestonedEvent' - | 'ReferencedEvent' - | 'RenamedTitleEvent' - | 'ReopenedEvent' - | 'SubscribedEvent' - | 'TransferredEvent' - | 'UnassignedEvent' - | 'UnlabeledEvent' - | 'UnlockedEvent' - | 'UnsubscribedEvent' - | 'UserBlockedEvent'; - $on: $IssueTimelineItem; -} - -/** - * An edge in a connection. - */ -export interface IssueTimelineItemEdge { - __typename?: 'IssueTimelineItemEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * An item in an issue timeline - */ -export interface IssueTimelineItems { - __typename?: - | 'AddedToProjectEvent' - | 'AssignedEvent' - | 'ClosedEvent' - | 'CommentDeletedEvent' - | 'ConnectedEvent' - | 'ConvertedNoteToIssueEvent' - | 'ConvertedToDiscussionEvent' - | 'CrossReferencedEvent' - | 'DemilestonedEvent' - | 'DisconnectedEvent' - | 'IssueComment' - | 'LabeledEvent' - | 'LockedEvent' - | 'MarkedAsDuplicateEvent' - | 'MentionedEvent' - | 'MilestonedEvent' - | 'MovedColumnsInProjectEvent' - | 'PinnedEvent' - | 'ReferencedEvent' - | 'RemovedFromProjectEvent' - | 'RenamedTitleEvent' - | 'ReopenedEvent' - | 'SubscribedEvent' - | 'TransferredEvent' - | 'UnassignedEvent' - | 'UnlabeledEvent' - | 'UnlockedEvent' - | 'UnmarkedAsDuplicateEvent' - | 'UnpinnedEvent' - | 'UnsubscribedEvent' - | 'UserBlockedEvent'; - $on: $IssueTimelineItems; -} - -/** - * The connection type for IssueTimelineItems. - */ -export interface IssueTimelineItemsConnection { - __typename?: 'IssueTimelineItemsConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * Identifies the count of items after applying `before` and `after` filters. - */ - filteredCount: ScalarsEnums['Int']; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Identifies the count of items after applying `before`/`after` filters and `first`/`last`/`skip` slicing. - */ - pageCount: ScalarsEnums['Int']; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; - /** - * Identifies the date and time when the timeline was last updated. - */ - updatedAt: ScalarsEnums['DateTime']; -} - -/** - * An edge in a connection. - */ -export interface IssueTimelineItemsEdge { - __typename?: 'IssueTimelineItemsEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe; -} - -/** - * Represents a user signing up for a GitHub account. - */ -export interface JoinedGitHubContribution { - __typename?: 'JoinedGitHubContribution'; - /** - * Whether this contribution is associated with a record you do not have access to. For - * example, your own 'first issue' contribution may have been made on a repository you can no - * longer access. - */ - isRestricted: ScalarsEnums['Boolean']; - /** - * When this contribution was made. - */ - occurredAt: ScalarsEnums['DateTime']; - /** - * The HTTP path for this contribution. - */ - resourcePath: ScalarsEnums['URI']; - /** - * The HTTP URL for this contribution. - */ - url: ScalarsEnums['URI']; - /** - * The user who made this contribution. - */ - user: User; -} - -/** - * A label for categorizing Issues, Pull Requests, Milestones, or Discussions with a given Repository. - */ -export interface Label { - __typename?: 'Label'; - /** - * Identifies the label color. - */ - color: ScalarsEnums['String']; - /** - * Identifies the date and time when the label was created. - */ - createdAt?: Maybe; - /** - * A brief description of this label. - */ - description?: Maybe; - id: ScalarsEnums['ID']; - /** - * Indicates whether or not this is a default label. - */ - isDefault: ScalarsEnums['Boolean']; - /** - * A list of issues associated with this label. - */ - issues: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Filtering options for issues returned from the connection. - */ - filterBy?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * A list of label names to filter the pull requests by. - */ - labels?: Maybe>; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for issues returned from the connection. - */ - orderBy?: Maybe; - /** - * A list of states to filter the issues by. - */ - states?: Maybe>; - }) => IssueConnection; - /** - * Identifies the label name. - */ - name: ScalarsEnums['String']; - /** - * A list of pull requests associated with this label. - */ - pullRequests: (args?: { - /** - * Returns the elements in the list that come after the specified cursor. - */ - after?: Maybe; - /** - * The base ref name to filter the pull requests by. - */ - baseRefName?: Maybe; - /** - * Returns the elements in the list that come before the specified cursor. - */ - before?: Maybe; - /** - * Returns the first _n_ elements from the list. - */ - first?: Maybe; - /** - * The head ref name to filter the pull requests by. - */ - headRefName?: Maybe; - /** - * A list of label names to filter the pull requests by. - */ - labels?: Maybe>; - /** - * Returns the last _n_ elements from the list. - */ - last?: Maybe; - /** - * Ordering options for pull requests returned from the connection. - */ - orderBy?: Maybe; - /** - * A list of states to filter the pull requests by. - */ - states?: Maybe>; - }) => PullRequestConnection; - /** - * The repository associated with this label. - */ - repository: Repository; - /** - * The HTTP path for this label. - */ - resourcePath: ScalarsEnums['URI']; - /** - * Identifies the date and time when the label was last updated. - */ - updatedAt?: Maybe; - /** - * The HTTP URL for this label. - */ - url: ScalarsEnums['URI']; -} - -/** - * The connection type for Label. - */ -export interface LabelConnection { - __typename?: 'LabelConnection'; - /** - * A list of edges. - */ - edges?: Maybe>>; - /** - * A list of nodes. - */ - nodes?: Maybe>>; - /** - * Information to aid in pagination. - */ - pageInfo: PageInfo; - /** - * Identifies the total count of items in the connection. - */ - totalCount: ScalarsEnums['Int']; -} - -/** - * An edge in a connection. - */ -export interface LabelEdge { - __typename?: 'LabelEdge'; - /** - * A cursor for use in pagination. - */ - cursor: ScalarsEnums['String']; - /** - * The item at the end of the edge. - */ - node?: Maybe
); }; diff --git a/examples/gnt/app/backflow/page.tsx b/examples/gnt/app/backflow/page.tsx index 303f7cc99..810273ab0 100644 --- a/examples/gnt/app/backflow/page.tsx +++ b/examples/gnt/app/backflow/page.tsx @@ -1,26 +1,75 @@ 'use client'; -import { useState } from 'react'; -import { useQuery, type Query } from '~/gqty'; +import { DataTable, Grommet, Layer } from 'grommet'; +import { hpe } from 'grommet-theme-hpe'; +import { useState, type FunctionComponent } from 'react'; +import { useQuery, type Character, type Query } from '~/gqty'; import ChildComponent from './ChildComponent'; +const CharacterList: FunctionComponent<{ + query: Query; + onClick?: (character: Character) => void; +}> = ({ query, onClick }) => ( + onClick?.(datum!)} + data={query.characters({ filter: { name: 'Alien' } })?.results ?? []} + columns={[ + { + property: 'id', + header: 'ID', + primary: true, + }, + { + property: 'name', + header: 'Name', + }, + ]} + /> +); + +const LocationList: FunctionComponent<{ query: Query }> = ({ query }) => ( + {}} + data={query.locations()?.results ?? []} + columns={[ + { + property: 'id', + header: 'ID', + primary: true, + }, + { + property: 'name', + header: 'Name', + }, + ]} + /> +); + export default function Home() { const query = useQuery(); const [childQuery, setChildQuery] = useState(); return ( -
-

Parent

+ +
+
+

Parent

+ +

Query using self scope

+ + -

Query using self: {query.character({ id: '1' })?.name}

+ {childQuery && ( + setChildQuery(undefined)}> +

Query using child scope:

- {childQuery ? ( -

Query using child: {childQuery?.character({ id: '2' })?.name}

- ) : ( -

Waiting child to pass query upwards...

- )} + +
+ )} +
- setChildQuery(query)} /> -
+ setChildQuery(query)} /> +
+ ); } diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 513ddbb12..3d37894f0 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -13,6 +13,8 @@ "@react-hookz/web": "^22.0.0", "autoprefixer": "10.4.14", "gqty": "workspace:^", + "grommet": "^2.32.0", + "grommet-theme-hpe": "^5.0.2", "next": "^13.3.0", "postcss": "8.4.21", "react": "^18.2.0", diff --git a/packages/gqty/test/tsconfig.json b/packages/gqty/test/tsconfig.json index 34441f2c6..486625850 100644 --- a/packages/gqty/test/tsconfig.json +++ b/packages/gqty/test/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "target": "es2019", - "module": "commonjs", "strict": true, "esModuleInterop": true, "jsx": "react", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 95411fd79..33cc61329 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,6 +125,12 @@ importers: gqty: specifier: workspace:^ version: link:../../packages/gqty/dist + grommet: + specifier: ^2.32.0 + version: 2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) + grommet-theme-hpe: + specifier: ^5.0.2 + version: 5.0.2(grommet-icons@4.10.0)(grommet@2.32.0)(react@18.2.0)(styled-components@5.3.10) next: specifier: ^13.3.0 version: 13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) @@ -920,7 +926,7 @@ packages: '@babel/traverse': 7.21.2 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -942,7 +948,7 @@ packages: '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -961,10 +967,10 @@ packages: '@babel/helpers': 7.21.5 '@babel/parser': 7.21.8 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 + '@babel/traverse': 7.21.5(supports-color@5.5.0) '@babel/types': 7.21.5 convert-source-map: 1.9.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -1108,7 +1114,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -1181,7 +1187,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 + '@babel/traverse': 7.21.5(supports-color@5.5.0) '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color @@ -1291,7 +1297,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 + '@babel/traverse': 7.21.5(supports-color@5.5.0) '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color @@ -2661,7 +2667,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2678,12 +2684,12 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.21.5: + /@babel/traverse@7.21.5(supports-color@5.5.0): resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} dependencies: @@ -2695,7 +2701,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.8 '@babel/types': 7.21.5 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3808,6 +3814,14 @@ packages: react: 17.0.2 dev: false + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false + /@emotion/unitless@0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} dev: false @@ -4277,7 +4291,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) espree: 9.5.1 globals: 13.20.0 ignore: 5.2.0 @@ -4997,7 +5011,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6264,7 +6278,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/type-utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 @@ -6289,7 +6303,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.35.0 typescript: 5.0.4 transitivePeerDependencies: @@ -6309,7 +6323,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: @@ -6336,7 +6350,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 @@ -6360,7 +6374,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.2 '@typescript-eslint/visitor-keys': 5.59.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -6473,7 +6487,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -6736,7 +6750,7 @@ packages: resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} dependencies: archy: 1.0.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) fastq: 1.13.0 transitivePeerDependencies: - supports-color @@ -6845,6 +6859,23 @@ packages: - supports-color dev: true + /babel-plugin-styled-components@2.1.1(styled-components@5.3.10): + resolution: {integrity: sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: false + + /babel-plugin-syntax-jsx@6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: false + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: false @@ -7235,6 +7266,10 @@ packages: engines: {node: '>=14.16'} dev: true + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: false + /caniuse-lite@1.0.30001474: resolution: {integrity: sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==} @@ -7636,6 +7671,19 @@ packages: tiny-invariant: 1.3.1 dev: false + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: false + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: false + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true @@ -7736,7 +7784,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4: + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -7746,6 +7794,7 @@ packages: optional: true dependencies: ms: 2.1.2 + supports-color: 5.5.0 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -8221,7 +8270,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.12.0 eslint: 8.35.0 eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) @@ -8423,7 +8472,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -8474,7 +8523,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -9247,6 +9296,63 @@ packages: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + /grommet-icons@4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): + resolution: {integrity: sha512-f3Re6jFRh93n2Cn2hyrJUANG7wOsv3wlEuyW/A1kIYzamDWnNfoZLgDQZXbAmMUMb1NdN7OU/0JrINxTCUOAEA==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + styled-components: '>= 5.x' + dependencies: + grommet-styles: 0.2.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: false + + /grommet-styles@0.2.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): + resolution: {integrity: sha512-0OMSYuGeyifYKpg4Gv2HzL8rUdd0ddnJ5LbCBKgDuloC71XIwr9g/Fxa6rs737MbPV7OZ4pEm4wvrjH4epzf1A==} + engines: {node: '>= 8'} + peerDependencies: + react: '>= 16.4.1' + react-dom: '>= 16.4.1' + styled-components: '>= 4.X' + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: false + + /grommet-theme-hpe@5.0.2(grommet-icons@4.10.0)(grommet@2.32.0)(react@18.2.0)(styled-components@5.3.10): + resolution: {integrity: sha512-lUor9EhZfEmFhbBsJrSKoZAZufVAZzyKdLanVavefFO3c0th+UxqBe7F98G1QotjWHZIPWrJakGcXG1mA8/gCA==} + peerDependencies: + grommet: ^2.31.0 + grommet-icons: ^4.10.0 + react: ^16.13.1 || ^17.0.1 || ^18.0.0 + styled-components: ^5.0.0 + dependencies: + grommet: 2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) + grommet-icons: 4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) + react: 18.2.0 + styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: false + + /grommet@2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): + resolution: {integrity: sha512-KSDg8kqpEUcNYf4uOSTpu2KLF8hCNlTk/V0HPTZhNXS3Mz95C/A10v8TntvxdtUha9wkiWBwssRelyCGb45aDA==} + engines: {node: '>= 16'} + peerDependencies: + react: ^16.6.1 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.1 || ^17.0.0 || ^18.0.0 + styled-components: '>= 5.1' + dependencies: + grommet-icons: 4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) + hoist-non-react-statics: 3.3.2 + markdown-to-jsx: 7.2.0(react@18.2.0) + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: false + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -9350,7 +9456,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -9360,7 +9466,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -9848,7 +9954,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -10732,6 +10838,15 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true + /markdown-to-jsx@7.2.0(react@18.2.0): + resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + dependencies: + react: 18.2.0 + dev: false + /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} @@ -12454,6 +12569,10 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + dev: false + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -12802,6 +12921,29 @@ packages: tslib: 2.5.0 dev: false + /styled-components@5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3kSzSBN0TiCnGJM04UwO1HklIQQSXW7rCARUk+VyMR7clz8XVlA3jijtf5ypqoDIdNMKx3la4VvaPFR855SFcg==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + dependencies: + '@babel/helper-module-imports': 7.21.4 + '@babel/traverse': 7.21.5(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.0 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.1(styled-components@5.3.10) + css-to-react-native: 3.2.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + shallowequal: 1.1.0 + supports-color: 5.5.0 + dev: false + /styled-jsx@5.0.7(@babel/core@7.21.0)(react@17.0.2): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} From 9cc43d25ad30a2ebbe32be84e0fd1c6d682f7798 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 15 May 2023 15:42:25 +0800 Subject: [PATCH 078/122] fix(react): properly dispose cache subscribers --- examples/gnt/app/backflow/ChildComponent.tsx | 35 ---- examples/gnt/app/backflow/page.tsx | 119 ++++++------ examples/gnt/package.json | 2 - packages/react/src/query/useQuery.ts | 28 +-- pnpm-lock.yaml | 183 +++---------------- 5 files changed, 96 insertions(+), 271 deletions(-) delete mode 100644 examples/gnt/app/backflow/ChildComponent.tsx diff --git a/examples/gnt/app/backflow/ChildComponent.tsx b/examples/gnt/app/backflow/ChildComponent.tsx deleted file mode 100644 index f443bd140..000000000 --- a/examples/gnt/app/backflow/ChildComponent.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { type FunctionComponent } from 'react'; -import Button from '~/components/tailwindui/Button'; -import { useQuery, type Query } from '~/gqty'; - -export type Props = { - onBackflow?: (query: Query) => void; -}; - -const ChildComponent: FunctionComponent = ({ onBackflow }) => { - const query = useQuery(); - - return ( -
-

Child

- -

- The name is{' '} - {query.character({ id: '1' })?.name?.concat('.') ?? - 'the Primeagent! No, just kidding...'} -

- - -
- ); -}; - -export default ChildComponent; diff --git a/examples/gnt/app/backflow/page.tsx b/examples/gnt/app/backflow/page.tsx index 810273ab0..3962f0884 100644 --- a/examples/gnt/app/backflow/page.tsx +++ b/examples/gnt/app/backflow/page.tsx @@ -1,75 +1,80 @@ 'use client'; -import { DataTable, Grommet, Layer } from 'grommet'; -import { hpe } from 'grommet-theme-hpe'; import { useState, type FunctionComponent } from 'react'; -import { useQuery, type Character, type Query } from '~/gqty'; -import ChildComponent from './ChildComponent'; +import Button from '~/components/tailwindui/Button'; +import { useQuery, type Query } from '~/gqty'; const CharacterList: FunctionComponent<{ - query: Query; - onClick?: (character: Character) => void; -}> = ({ query, onClick }) => ( - onClick?.(datum!)} - data={query.characters({ filter: { name: 'Alien' } })?.results ?? []} - columns={[ - { - property: 'id', - header: 'ID', - primary: true, - }, - { - property: 'name', - header: 'Name', - }, - ]} - /> -); + onClick?: (query: Query) => void; +}> = ({ onClick }) => { + const query = useQuery(); -const LocationList: FunctionComponent<{ query: Query }> = ({ query }) => ( - {}} - data={query.locations()?.results ?? []} - columns={[ - { - property: 'id', - header: 'ID', - primary: true, - }, - { - property: 'name', - header: 'Name', - }, - ]} - /> -); + console.debug('render chars'); -export default function Home() { + return ( + <> + {query + .characters({ filter: { name: 'Alien' } }) + ?.results?.map((character) => ( + + ))} + + ); +}; + +const LocationList: FunctionComponent = () => { const query = useQuery(); - const [childQuery, setChildQuery] = useState(); + + console.debug('render location'); return ( - -
-
-

Parent

+ <> + {query.locations()?.results?.map((location) => ( +
+ {location?.id}. {location?.name} ( + {location?.residents.map((r) => r?.id).length}) +
+ ))} + + ); +}; -

Query using self scope

+export default function Home() { + const [childQuery, setChildQuery] = useState(); - + console.debug('render parent'); - {childQuery && ( - setChildQuery(undefined)}> -

Query using child scope:

+ return ( +
+ {childQuery && ( +
+ - - - )} +
+ )} + +
+

Parent

+ +

Query using self scope

- setChildQuery(query)} /> -
- + setChildQuery(query)} /> +
+
); } diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 3d37894f0..513ddbb12 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -13,8 +13,6 @@ "@react-hookz/web": "^22.0.0", "autoprefixer": "10.4.14", "gqty": "workspace:^", - "grommet": "^2.32.0", - "grommet-theme-hpe": "^5.0.2", "next": "^13.3.0", "postcss": "8.4.21", "react": "^18.2.0", diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 632536dd1..50c9232e1 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -1,5 +1,4 @@ import { - useDebouncedCallback, useIntervalEffect, usePrevious, useRerender, @@ -13,7 +12,7 @@ import { type RetryOptions, } from 'gqty'; import { MultiDict } from 'multidict'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import { useCallback, useEffect, useMemo, useState } from 'react'; import { translateFetchPolicy, type LegacyFetchPolicy, @@ -119,7 +118,6 @@ export const createUseQuery = ( staleWhileRevalidate = defaultStaleWhileRevalidate, } = {}) => { const render = useRerender(); - const debouncedRender = useDebouncedCallback(render, [render], 50); const getIsRendering = useIsRendering(); const resolver = useMemo(() => { const resolver = client.createResolver({ @@ -186,24 +184,14 @@ export const createUseQuery = ( if (state.promise && !context.hasCacheHit) throw state.promise; } - // Subscribe current selection to cache changes. Selection size changes - // after render so it cannot be done via useEffect, instead refs has to be - // used. - { - const selectionSizeRef = useRef(0); - const unsubscribeRef = useRef<() => void>(); - - useEffect(() => { - if (selections.size === selectionSizeRef.current) return; - selectionSizeRef.current = selections.size; - - unsubscribeRef.current?.(); - unsubscribeRef.current = context.cache.subscribe( + useEffect( + () => + context.cache.subscribe( [...selections].map((s) => s.cacheKeys.join('.')), - debouncedRender - ); - }, [debouncedRender, selections.size]); - } + render + ), + [render, selections.size] + ); const refetch = useCallback( async (options?: { ignoreCache?: boolean; skipPrepass?: boolean }) => { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33cc61329..ae8998f29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,15 +125,9 @@ importers: gqty: specifier: workspace:^ version: link:../../packages/gqty/dist - grommet: - specifier: ^2.32.0 - version: 2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) - grommet-theme-hpe: - specifier: ^5.0.2 - version: 5.0.2(grommet-icons@4.10.0)(grommet@2.32.0)(react@18.2.0)(styled-components@5.3.10) next: specifier: ^13.3.0 - version: 13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) + version: 13.3.0(react-dom@18.2.0)(react@18.2.0) postcss: specifier: 8.4.21 version: 8.4.21 @@ -145,7 +139,7 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: 3.3.1 - version: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) + version: 3.3.1(postcss@8.4.21) devDependencies: '@types/node': specifier: 18.15.11 @@ -3814,14 +3808,6 @@ packages: react: 17.0.2 dev: false - /@emotion/stylis@0.8.5: - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} - dev: false - - /@emotion/unitless@0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - dev: false - /@emotion/unitless@0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} dev: false @@ -4291,7 +4277,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 espree: 9.5.1 globals: 13.20.0 ignore: 5.2.0 @@ -5011,7 +4997,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -6303,7 +6289,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.35.0 typescript: 5.0.4 transitivePeerDependencies: @@ -6374,7 +6360,7 @@ packages: dependencies: '@typescript-eslint/types': 5.59.2 '@typescript-eslint/visitor-keys': 5.59.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.0 @@ -6859,23 +6845,6 @@ packages: - supports-color dev: true - /babel-plugin-styled-components@2.1.1(styled-components@5.3.10): - resolution: {integrity: sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==} - peerDependencies: - styled-components: '>= 2' - dependencies: - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - babel-plugin-syntax-jsx: 6.18.0 - lodash: 4.17.21 - picomatch: 2.3.1 - styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - dev: false - - /babel-plugin-syntax-jsx@6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} - dev: false - /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: false @@ -7266,10 +7235,6 @@ packages: engines: {node: '>=14.16'} dev: true - /camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - dev: false - /caniuse-lite@1.0.30001474: resolution: {integrity: sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==} @@ -7671,19 +7636,6 @@ packages: tiny-invariant: 1.3.1 dev: false - /css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - dev: false - - /css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - dev: false - /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true @@ -7784,6 +7736,18 @@ packages: ms: 2.1.3 dev: true + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + /debug@4.3.4(supports-color@5.5.0): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -8270,7 +8234,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 enhanced-resolve: 5.12.0 eslint: 8.35.0 eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) @@ -8472,7 +8436,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 @@ -9296,63 +9260,6 @@ packages: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - /grommet-icons@4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): - resolution: {integrity: sha512-f3Re6jFRh93n2Cn2hyrJUANG7wOsv3wlEuyW/A1kIYzamDWnNfoZLgDQZXbAmMUMb1NdN7OU/0JrINxTCUOAEA==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - styled-components: '>= 5.x' - dependencies: - grommet-styles: 0.2.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - dev: false - - /grommet-styles@0.2.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): - resolution: {integrity: sha512-0OMSYuGeyifYKpg4Gv2HzL8rUdd0ddnJ5LbCBKgDuloC71XIwr9g/Fxa6rs737MbPV7OZ4pEm4wvrjH4epzf1A==} - engines: {node: '>= 8'} - peerDependencies: - react: '>= 16.4.1' - react-dom: '>= 16.4.1' - styled-components: '>= 4.X' - dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - dev: false - - /grommet-theme-hpe@5.0.2(grommet-icons@4.10.0)(grommet@2.32.0)(react@18.2.0)(styled-components@5.3.10): - resolution: {integrity: sha512-lUor9EhZfEmFhbBsJrSKoZAZufVAZzyKdLanVavefFO3c0th+UxqBe7F98G1QotjWHZIPWrJakGcXG1mA8/gCA==} - peerDependencies: - grommet: ^2.31.0 - grommet-icons: ^4.10.0 - react: ^16.13.1 || ^17.0.1 || ^18.0.0 - styled-components: ^5.0.0 - dependencies: - grommet: 2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) - grommet-icons: 4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) - react: 18.2.0 - styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - dev: false - - /grommet@2.32.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10): - resolution: {integrity: sha512-KSDg8kqpEUcNYf4uOSTpu2KLF8hCNlTk/V0HPTZhNXS3Mz95C/A10v8TntvxdtUha9wkiWBwssRelyCGb45aDA==} - engines: {node: '>= 16'} - peerDependencies: - react: ^16.6.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.1 || ^17.0.0 || ^18.0.0 - styled-components: '>= 5.1' - dependencies: - grommet-icons: 4.10.0(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.10) - hoist-non-react-statics: 3.3.2 - markdown-to-jsx: 7.2.0(react@18.2.0) - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-components: 5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - dev: false - /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -10838,15 +10745,6 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /markdown-to-jsx@7.2.0(react@18.2.0): - resolution: {integrity: sha512-3l4/Bigjm4bEqjCR6Xr+d4DtM1X6vvtGsMGSjJYyep8RjjIvcWtrXBS8Wbfe1/P+atKNMccpsraESIaWVplzVg==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - dependencies: - react: 18.2.0 - dev: false - /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} @@ -11094,7 +10992,7 @@ packages: - '@babel/core' - babel-plugin-macros - /next@13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): + /next@13.3.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} engines: {node: '>=14.6.0'} hasBin: true @@ -11122,7 +11020,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.21.8)(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 13.3.0 '@next/swc-darwin-x64': 13.3.0 @@ -11699,7 +11597,7 @@ packages: postcss: 8.4.21 dev: false - /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): + /postcss-load-config@3.1.4(postcss@8.4.21): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -11713,7 +11611,6 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) yaml: 1.10.2 dev: false @@ -12569,10 +12466,6 @@ packages: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - dev: false - /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -12921,29 +12814,6 @@ packages: tslib: 2.5.0 dev: false - /styled-components@5.3.10(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3kSzSBN0TiCnGJM04UwO1HklIQQSXW7rCARUk+VyMR7clz8XVlA3jijtf5ypqoDIdNMKx3la4VvaPFR855SFcg==} - engines: {node: '>=10'} - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - react-is: '>= 16.8.0' - dependencies: - '@babel/helper-module-imports': 7.21.4 - '@babel/traverse': 7.21.5(supports-color@5.5.0) - '@emotion/is-prop-valid': 1.2.0 - '@emotion/stylis': 0.8.5 - '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.1(styled-components@5.3.10) - css-to-react-native: 3.2.0 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-is: 18.2.0 - shallowequal: 1.1.0 - supports-color: 5.5.0 - dev: false - /styled-jsx@5.0.7(@babel/core@7.21.0)(react@17.0.2): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} @@ -12960,7 +12830,7 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 - /styled-jsx@5.1.1(@babel/core@7.21.8)(react@18.2.0): + /styled-jsx@5.1.1(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -12973,7 +12843,6 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.21.8 client-only: 0.0.1 react: 18.2.0 dev: false @@ -13053,7 +12922,7 @@ packages: tslib: 2.5.0 dev: true - /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): + /tailwindcss@3.3.1(postcss@8.4.21): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} hasBin: true @@ -13077,7 +12946,7 @@ packages: postcss: 8.4.21 postcss-import: 14.1.0(postcss@8.4.21) postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-load-config: 3.1.4(postcss@8.4.21) postcss-nested: 6.0.0(postcss@8.4.21) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 From 528f40f1aab7c62b7df43de6702ff484562df7e7 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 16 May 2023 00:33:13 +0800 Subject: [PATCH 079/122] chore(deps): update esbuild --- package.json | 2 +- pnpm-lock.yaml | 381 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 327 insertions(+), 56 deletions(-) diff --git a/package.json b/package.json index 85fe1fa0f..6a75548f4 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "chalk": "^5.2.0", "changesets-github-release": "^0.1.0", "concurrently": "^7.6.0", - "esbuild": "^0.17.12", + "esbuild": "^0.17.19", "globby": "^13.1.3", "husky": "^8.0.3", "jest": "^29.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae8998f29..41048a115 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,16 +43,16 @@ importers: version: 18.15.11 bob-esbuild: specifier: ^4.0.3 - version: 4.0.3(esbuild@0.17.12)(typescript@5.0.4) + version: 4.0.3(esbuild@0.17.19)(typescript@5.0.4) bob-esbuild-cli: specifier: ^4.0.0 version: 4.0.0(bob-esbuild@4.0.3) bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@5.0.4) + version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.19)(typescript@5.0.4) bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@5.0.4) + version: 1.1.2(esbuild@0.17.19)(typescript@5.0.4) bufferutil: specifier: ^4.0.7 version: 4.0.7 @@ -66,8 +66,8 @@ importers: specifier: ^7.6.0 version: 7.6.0 esbuild: - specifier: ^0.17.12 - version: 0.17.12 + specifier: ^0.17.19 + version: 0.17.19 globby: specifier: ^13.1.3 version: 13.1.3 @@ -94,7 +94,7 @@ importers: version: 7.3.8 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.8)(esbuild@0.17.12)(jest@29.5.0)(typescript@5.0.4) + version: 29.1.0(@babel/core@7.21.8)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.0.4) ts-node: specifier: ^10.9.1 version: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) @@ -127,7 +127,7 @@ importers: version: link:../../packages/gqty/dist next: specifier: ^13.3.0 - version: 13.3.0(react-dom@18.2.0)(react@18.2.0) + version: 13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) postcss: specifier: 8.4.21 version: 8.4.21 @@ -139,7 +139,7 @@ importers: version: 18.2.0(react@18.2.0) tailwindcss: specifier: 3.3.1 - version: 3.3.1(postcss@8.4.21) + version: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) devDependencies: '@types/node': specifier: 18.15.11 @@ -920,7 +920,7 @@ packages: '@babel/traverse': 7.21.2 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -942,7 +942,7 @@ packages: '@babel/traverse': 7.21.4 '@babel/types': 7.21.4 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -961,10 +961,10 @@ packages: '@babel/helpers': 7.21.5 '@babel/parser': 7.21.8 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5(supports-color@5.5.0) + '@babel/traverse': 7.21.5 '@babel/types': 7.21.5 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 @@ -1108,7 +1108,7 @@ packages: '@babel/core': 7.21.0 '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.1 semver: 6.3.0 @@ -1181,7 +1181,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5(supports-color@5.5.0) + '@babel/traverse': 7.21.5 '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color @@ -1291,7 +1291,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5(supports-color@5.5.0) + '@babel/traverse': 7.21.5 '@babel/types': 7.21.5 transitivePeerDependencies: - supports-color @@ -2661,7 +2661,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2678,12 +2678,12 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.4 '@babel/types': 7.21.4 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/traverse@7.21.5(supports-color@5.5.0): + /@babel/traverse@7.21.5: resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} engines: {node: '>=6.9.0'} dependencies: @@ -2695,7 +2695,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.21.8 '@babel/types': 7.21.5 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -3879,6 +3879,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.17.12: resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} engines: {node: '>=12'} @@ -3897,6 +3906,15 @@ packages: dev: true optional: true + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.17.12: resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} engines: {node: '>=12'} @@ -3915,6 +3933,15 @@ packages: dev: true optional: true + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.17.12: resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} engines: {node: '>=12'} @@ -3933,6 +3960,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.17.12: resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} engines: {node: '>=12'} @@ -3951,6 +3987,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.17.12: resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} engines: {node: '>=12'} @@ -3969,6 +4014,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.17.12: resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} engines: {node: '>=12'} @@ -3987,6 +4041,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.17.12: resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} engines: {node: '>=12'} @@ -4005,6 +4068,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.17.12: resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} engines: {node: '>=12'} @@ -4023,6 +4095,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.17.12: resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} engines: {node: '>=12'} @@ -4041,6 +4122,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.17.12: resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} engines: {node: '>=12'} @@ -4059,6 +4149,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.17.12: resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} engines: {node: '>=12'} @@ -4077,6 +4176,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.17.12: resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} engines: {node: '>=12'} @@ -4095,6 +4203,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.17.12: resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} engines: {node: '>=12'} @@ -4113,6 +4230,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.17.12: resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} engines: {node: '>=12'} @@ -4131,6 +4257,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64@0.17.12: resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} engines: {node: '>=12'} @@ -4149,6 +4284,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.17.12: resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} engines: {node: '>=12'} @@ -4167,6 +4311,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.17.12: resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} engines: {node: '>=12'} @@ -4185,6 +4338,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.17.12: resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} engines: {node: '>=12'} @@ -4203,6 +4365,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.17.12: resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} engines: {node: '>=12'} @@ -4221,6 +4392,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.17.12: resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} engines: {node: '>=12'} @@ -4239,6 +4419,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.17.12: resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} engines: {node: '>=12'} @@ -4257,6 +4446,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5760,7 +5958,7 @@ packages: peerDependencies: size-limit: 8.2.4 dependencies: - esbuild: 0.17.18 + esbuild: 0.17.19 nanoid: 3.3.6 size-limit: 8.2.4 dev: true @@ -6264,7 +6462,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/type-utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.39.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 @@ -6309,7 +6507,7 @@ packages: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.39.0 typescript: 5.0.4 transitivePeerDependencies: @@ -6336,7 +6534,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 eslint: 8.39.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 @@ -6473,7 +6671,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -6736,7 +6934,7 @@ packages: resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} dependencies: archy: 1.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 fastq: 1.13.0 transitivePeerDependencies: - supports-color @@ -6982,7 +7180,7 @@ packages: bob-esbuild: optional: true dependencies: - bob-esbuild: 4.0.3(esbuild@0.17.12)(typescript@5.0.4) + bob-esbuild: 4.0.3(esbuild@0.17.19)(typescript@5.0.4) commander: 9.5.0 dev: true @@ -7002,7 +7200,23 @@ packages: rollup: 2.79.1 dev: true - /bob-esbuild@4.0.3(esbuild@0.17.12)(typescript@5.0.4): + /bob-esbuild-plugin@4.0.0(esbuild@0.17.19)(rollup@2.79.1): + resolution: {integrity: sha512-Ymk0kEPc0JhL3eZQVnWpjT4/HMX8Hw7aD5CzqSvNAXeUgaR1+8m5O1RtkP/D42ZwNv+FPgD1wKM4pdoQ4ScmAQ==} + peerDependencies: + esbuild: '>=0.14.39' + rollup: '*' + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 4.2.1 + esbuild: 0.17.19 + rollup: 2.79.1 + dev: true + + /bob-esbuild@4.0.3(esbuild@0.17.19)(typescript@5.0.4): resolution: {integrity: sha512-9AGuh6V5Whsditj5n2oJjWAvHwgadgD2HD0qZ4rEBwY9tpj8YbfYeiaXQQV9qJxwT9oUYOsQE53wPNYBFDIfJA==} peerDependencies: esbuild: '>=0.14.39' @@ -7014,8 +7228,8 @@ packages: optional: true dependencies: '@pnpm/types': 8.8.0 - bob-esbuild-plugin: 4.0.0(esbuild@0.17.12)(rollup@2.79.1) - esbuild: 0.17.12 + bob-esbuild-plugin: 4.0.0(esbuild@0.17.19)(rollup@2.79.1) + esbuild: 0.17.19 rollup: 2.79.1 typescript: 5.0.4 dev: true @@ -7041,6 +7255,27 @@ packages: typescript: 5.0.4 dev: true + /bob-ts@4.1.1(@types/node@18.15.11)(esbuild@0.17.19)(typescript@5.0.4): + resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} + engines: {node: '>=14.13.1'} + hasBin: true + peerDependencies: + '@types/node': '*' + esbuild: '>=0.14.39' + typescript: '*' + peerDependenciesMeta: + '@types/node': + optional: true + typescript: + optional: true + dependencies: + '@types/node': 18.15.11 + bob-esbuild-plugin: 4.0.0(esbuild@0.17.19)(rollup@2.79.1) + esbuild: 0.17.19 + rollup: 2.79.1 + typescript: 5.0.4 + dev: true + /bob-tsm@1.1.2(esbuild@0.17.12)(typescript@5.0.4): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} @@ -7058,6 +7293,23 @@ packages: fsevents: 2.3.2 dev: true + /bob-tsm@1.1.2(esbuild@0.17.19)(typescript@5.0.4): + resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} + engines: {node: '>=14.13.1'} + hasBin: true + peerDependencies: + esbuild: '>=0.14.39' + typescript: '>=4.7.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + esbuild: 0.17.19 + typescript: 5.0.4 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} @@ -7746,19 +7998,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true - - /debug@4.3.4(supports-color@5.5.0): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 5.5.0 /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -8163,6 +8402,36 @@ packages: '@esbuild/win32-x64': 0.17.18 dev: true + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -8487,7 +8756,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 @@ -9363,7 +9632,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -9373,7 +9642,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -9861,7 +10130,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -10992,7 +11261,7 @@ packages: - '@babel/core' - babel-plugin-macros - /next@13.3.0(react-dom@18.2.0)(react@18.2.0): + /next@13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} engines: {node: '>=14.6.0'} hasBin: true @@ -11020,7 +11289,7 @@ packages: postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.21.8)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 13.3.0 '@next/swc-darwin-x64': 13.3.0 @@ -11597,7 +11866,7 @@ packages: postcss: 8.4.21 dev: false - /postcss-load-config@3.1.4(postcss@8.4.21): + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -11611,6 +11880,7 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 + ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) yaml: 1.10.2 dev: false @@ -12830,7 +13100,7 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 - /styled-jsx@5.1.1(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.21.8)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -12843,6 +13113,7 @@ packages: babel-plugin-macros: optional: true dependencies: + '@babel/core': 7.21.8 client-only: 0.0.1 react: 18.2.0 dev: false @@ -12922,7 +13193,7 @@ packages: tslib: 2.5.0 dev: true - /tailwindcss@3.3.1(postcss@8.4.21): + /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} engines: {node: '>=12.13.0'} hasBin: true @@ -12946,7 +13217,7 @@ packages: postcss: 8.4.21 postcss-import: 14.1.0(postcss@8.4.21) postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21) + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) postcss-nested: 6.0.0(postcss@8.4.21) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 @@ -13139,7 +13410,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: false - /ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.17.12)(jest@29.5.0)(typescript@5.0.4): + /ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13162,7 +13433,7 @@ packages: dependencies: '@babel/core': 7.21.8 bs-logger: 0.2.6 - esbuild: 0.17.12 + esbuild: 0.17.19 fast-json-stable-stringify: 2.1.0 jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) jest-util: 29.5.0 @@ -13554,7 +13825,7 @@ packages: optional: true dependencies: '@types/node': 18.15.11 - esbuild: 0.17.12 + esbuild: 0.17.19 postcss: 8.4.21 resolve: 1.22.1 rollup: 3.21.0 From 8169668bd5b516be0b13c0be1f8a9192646064da Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 16 May 2023 18:00:20 +0800 Subject: [PATCH 080/122] feat(cli): prompt for destination --- packages/cli/src/commands/default.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index 281ff1363..e7c14a85e 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -140,6 +140,10 @@ export const addCommand = (command: Command) => { config.javascriptOutput = !(await promptTypescript( !config.javascriptOutput )); + + config.destination ??= await promptTarget( + config.javascriptOutput ? 'gqty/index.js' : 'gqty/index.ts' + ); } config.destination ??= config.javascriptOutput @@ -261,6 +265,17 @@ const promptEndpoints = async () => { .filter(Boolean); }; +const promptTarget = async (defaultTarget: string) => { + const { target } = await inquirer.prompt<{ target: string }>({ + name: 'target', + type: 'input', + message: 'Where should the client be generated?', + default: defaultTarget, + }); + + return target; +}; + const promptReact = async (defaultValue: boolean) => { const { react } = await inquirer.prompt<{ react: boolean }>({ name: 'react', From cc57ba4462f208114a98488389db41c4f0e3b603 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 16 May 2023 23:40:56 +0800 Subject: [PATCH 081/122] fix(packages/react): infinite fetch via stale proxy #1588 --- bob-esbuild.config.ts | 2 +- examples/gnt/.eslintrc.json | 2 +- .../gnt/app/1588-infinite-fetch/gqty/index.ts | 109 ++++++ .../gqty/schema.generated.ts | 370 ++++++++++++++++++ examples/gnt/app/1588-infinite-fetch/page.tsx | 65 +++ examples/gnt/app/backflow/page.tsx | 80 ---- examples/gnt/next.config.js | 3 - examples/gnt/package.json | 6 +- examples/gnt/tailwind.config.js | 6 +- packages/gqty/src/Accessor/resolve.ts | 19 +- packages/gqty/src/Cache/index.ts | 31 +- packages/gqty/test/client.test.ts | 2 +- pnpm-lock.yaml | 250 ++++++------ 13 files changed, 725 insertions(+), 220 deletions(-) create mode 100644 examples/gnt/app/1588-infinite-fetch/gqty/index.ts create mode 100644 examples/gnt/app/1588-infinite-fetch/gqty/schema.generated.ts create mode 100644 examples/gnt/app/1588-infinite-fetch/page.tsx delete mode 100644 examples/gnt/app/backflow/page.tsx diff --git a/bob-esbuild.config.ts b/bob-esbuild.config.ts index ccd37e88c..eb2a2ba2a 100644 --- a/bob-esbuild.config.ts +++ b/bob-esbuild.config.ts @@ -1,5 +1,5 @@ -import { sep } from 'path'; import { readFileSync } from 'fs'; +import { sep } from 'path'; const isCLIPackage = process.cwd().endsWith(sep + 'cli'); diff --git a/examples/gnt/.eslintrc.json b/examples/gnt/.eslintrc.json index 97a2bb84e..a2ceebebd 100644 --- a/examples/gnt/.eslintrc.json +++ b/examples/gnt/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": ["next", "next/core-web-vitals"] + "extends": ["next/babel", "next/core-web-vitals"] } diff --git a/examples/gnt/app/1588-infinite-fetch/gqty/index.ts b/examples/gnt/app/1588-infinite-fetch/gqty/index.ts new file mode 100644 index 000000000..0e411ac07 --- /dev/null +++ b/examples/gnt/app/1588-infinite-fetch/gqty/index.ts @@ -0,0 +1,109 @@ +/** + * GQty: You can safely modify this file based on your needs. + */ + +import { createLogger } from '@gqty/logger'; +import { createReactClient } from '@gqty/react'; +import type { QueryFetcher } from 'gqty'; +import { Cache, GQtyError, createClient } from 'gqty'; +import type { GeneratedSchema } from './schema.generated'; +import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + +const queryFetcher: QueryFetcher = async function ( + { query, variables, operationName }, + fetchOptions +) { + // Modify "https://rickandmortyapi.com/graphql" if needed + const response = await fetch('https://rickandmortyapi.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query, + variables, + operationName, + }), + mode: 'cors', + ...fetchOptions, + }); + + if (response.status >= 400) { + throw new GQtyError( + `GraphQL endpoint responded with HTTP ${response.status}: ${response.statusText}.` + ); + } + + const text = await response.text(); + + try { + return JSON.parse(text); + } catch { + throw new GQtyError( + `Malformed JSON response: ${ + text.length > 50 ? text.slice(0, 50) + '...' : text + }` + ); + } +}; + +const cache = new Cache( + undefined, + /** + * Default option is immediate cache expiry but keep it for 5 minutes, + * allowing soft refetches in background. + */ + { + maxAge: 0, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, + } +); + +export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions: { + fetcher: queryFetcher, + }, +}); + +if (typeof window !== 'undefined') { + createLogger(client, {}).start(); +} + +// Core functions +export const { resolve, subscribe, schema } = client; + +// Legacy functions +export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +} = client; + +export const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, +} = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, +}); + +export * from './schema.generated'; diff --git a/examples/gnt/app/1588-infinite-fetch/gqty/schema.generated.ts b/examples/gnt/app/1588-infinite-fetch/gqty/schema.generated.ts new file mode 100644 index 000000000..ec868660f --- /dev/null +++ b/examples/gnt/app/1588-infinite-fetch/gqty/schema.generated.ts @@ -0,0 +1,370 @@ +/** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ + +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; +}; +/** All built-in and custom scalars, mapped to their actual values */ +export interface Scalars { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + /** The `Upload` scalar type represents a file upload. */ + Upload: any; +} + +export enum CacheControlScope { + PRIVATE = 'PRIVATE', + PUBLIC = 'PUBLIC', +} + +export interface FilterCharacter { + gender?: InputMaybe; + name?: InputMaybe; + species?: InputMaybe; + status?: InputMaybe; + type?: InputMaybe; +} + +export interface FilterEpisode { + episode?: InputMaybe; + name?: InputMaybe; +} + +export interface FilterLocation { + dimension?: InputMaybe; + name?: InputMaybe; + type?: InputMaybe; +} + +export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { + Boolean: true, + CacheControlScope: true, + ID: true, + Int: true, + String: true, + Upload: true, +}; +export const generatedSchema = { + Character: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + episode: { __type: '[Episode]!' }, + gender: { __type: 'String' }, + id: { __type: 'ID' }, + image: { __type: 'String' }, + location: { __type: 'Location' }, + name: { __type: 'String' }, + origin: { __type: 'Location' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + Characters: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Character]' }, + }, + Episode: { + __typename: { __type: 'String!' }, + air_date: { __type: 'String' }, + characters: { __type: '[Character]!' }, + created: { __type: 'String' }, + episode: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + }, + Episodes: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Episode]' }, + }, + FilterCharacter: { + gender: { __type: 'String' }, + name: { __type: 'String' }, + species: { __type: 'String' }, + status: { __type: 'String' }, + type: { __type: 'String' }, + }, + FilterEpisode: { episode: { __type: 'String' }, name: { __type: 'String' } }, + FilterLocation: { + dimension: { __type: 'String' }, + name: { __type: 'String' }, + type: { __type: 'String' }, + }, + Info: { + __typename: { __type: 'String!' }, + count: { __type: 'Int' }, + next: { __type: 'Int' }, + pages: { __type: 'Int' }, + prev: { __type: 'Int' }, + }, + Location: { + __typename: { __type: 'String!' }, + created: { __type: 'String' }, + dimension: { __type: 'String' }, + id: { __type: 'ID' }, + name: { __type: 'String' }, + residents: { __type: '[Character]!' }, + type: { __type: 'String' }, + }, + Locations: { + __typename: { __type: 'String!' }, + info: { __type: 'Info' }, + results: { __type: '[Location]' }, + }, + mutation: {}, + query: { + __typename: { __type: 'String!' }, + character: { __type: 'Character', __args: { id: 'ID!' } }, + characters: { + __type: 'Characters', + __args: { filter: 'FilterCharacter', page: 'Int' }, + }, + charactersByIds: { __type: '[Character]', __args: { ids: '[ID!]!' } }, + episode: { __type: 'Episode', __args: { id: 'ID!' } }, + episodes: { + __type: 'Episodes', + __args: { filter: 'FilterEpisode', page: 'Int' }, + }, + episodesByIds: { __type: '[Episode]', __args: { ids: '[ID!]!' } }, + location: { __type: 'Location', __args: { id: 'ID!' } }, + locations: { + __type: 'Locations', + __args: { filter: 'FilterLocation', page: 'Int' }, + }, + locationsByIds: { __type: '[Location]', __args: { ids: '[ID!]!' } }, + }, + subscription: {}, +} as const; + +export interface Character { + __typename?: 'Character'; + /** + * Time at which the character was created in the database. + */ + created?: Maybe; + /** + * Episodes in which this character appeared. + */ + episode: Array>; + /** + * The gender of the character ('Female', 'Male', 'Genderless' or 'unknown'). + */ + gender?: Maybe; + /** + * The id of the character. + */ + id?: Maybe; + /** + * Link to the character's image. + * All images are 300x300px and most are medium shots or portraits since they are intended to be used as avatars. + */ + image?: Maybe; + /** + * The character's last known location + */ + location?: Maybe; + /** + * The name of the character. + */ + name?: Maybe; + /** + * The character's origin location + */ + origin?: Maybe; + /** + * The species of the character. + */ + species?: Maybe; + /** + * The status of the character ('Alive', 'Dead' or 'unknown'). + */ + status?: Maybe; + /** + * The type or subspecies of the character. + */ + type?: Maybe; +} + +export interface Characters { + __typename?: 'Characters'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Episode { + __typename?: 'Episode'; + /** + * The air date of the episode. + */ + air_date?: Maybe; + /** + * List of characters who have been seen in the episode. + */ + characters: Array>; + /** + * Time at which the episode was created in the database. + */ + created?: Maybe; + /** + * The code of the episode. + */ + episode?: Maybe; + /** + * The id of the episode. + */ + id?: Maybe; + /** + * The name of the episode. + */ + name?: Maybe; +} + +export interface Episodes { + __typename?: 'Episodes'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Info { + __typename?: 'Info'; + /** + * The length of the response. + */ + count?: Maybe; + /** + * Number of the next page (if it exists) + */ + next?: Maybe; + /** + * The amount of pages. + */ + pages?: Maybe; + /** + * Number of the previous page (if it exists) + */ + prev?: Maybe; +} + +export interface Location { + __typename?: 'Location'; + /** + * Time at which the location was created in the database. + */ + created?: Maybe; + /** + * The dimension in which the location is located. + */ + dimension?: Maybe; + /** + * The id of the location. + */ + id?: Maybe; + /** + * The name of the location. + */ + name?: Maybe; + /** + * List of characters who have been last seen in the location. + */ + residents: Array>; + /** + * The type of the location. + */ + type?: Maybe; +} + +export interface Locations { + __typename?: 'Locations'; + info?: Maybe; + results?: Maybe>>; +} + +export interface Mutation { + __typename?: 'Mutation'; +} + +export interface Query { + __typename?: 'Query'; + /** + * Get a specific character by ID + */ + character: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all characters + */ + characters: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of characters selected by ids + */ + charactersByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific episode by ID + */ + episode: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all episodes + */ + episodes: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of episodes selected by ids + */ + episodesByIds: (args: { + ids: Array; + }) => Maybe>>; + /** + * Get a specific locations by ID + */ + location: (args: { id: Scalars['ID'] }) => Maybe; + /** + * Get the list of all locations + */ + locations: (args?: { + filter?: Maybe; + page?: Maybe; + }) => Maybe; + /** + * Get a list of locations selected by ids + */ + locationsByIds: (args: { + ids: Array; + }) => Maybe>>; +} + +export interface Subscription { + __typename?: 'Subscription'; +} + +export interface GeneratedSchema { + query: Query; + mutation: Mutation; + subscription: Subscription; +} + +export type MakeNullable = { + [K in keyof T]: T[K] | undefined; +}; + +export interface ScalarsEnums extends MakeNullable { + CacheControlScope: CacheControlScope | undefined; +} diff --git a/examples/gnt/app/1588-infinite-fetch/page.tsx b/examples/gnt/app/1588-infinite-fetch/page.tsx new file mode 100644 index 000000000..df64061ad --- /dev/null +++ b/examples/gnt/app/1588-infinite-fetch/page.tsx @@ -0,0 +1,65 @@ +'use client'; + +import { useEffect, useState, type FunctionComponent } from 'react'; +import Button from '~/components/tailwindui/Button'; +import { useQuery, type Character } from './gqty'; + +const CharacterList: FunctionComponent<{ + onClick?: (p: Character) => void; +}> = ({ onClick }) => { + const query = useQuery({ + refetchOnWindowVisible: false, + refetchOnRender: false, + }); + + useEffect(() => { + query.$refetch(false); + }, []); + + // console.log('render: characters'); + + return ( + <> + {query.characters()?.results?.map((character) => ( + + ))} + + ); +}; + +export default function Home() { + const query = useQuery({ + refetchOnWindowVisible: false, + }); + const [character, setCharacter] = useState(); + + return ( +
+
+

+ We have{' '} + {query.locations()?.results?.map((loc) => loc?.id).length ?? '-'}{' '} + locations, click on a character to assign a location. +

+ + setCharacter(datum)} /> + + {character && ( +
+ + +

Current character: {character.name}.

+
+ )} +
+
+ ); +} diff --git a/examples/gnt/app/backflow/page.tsx b/examples/gnt/app/backflow/page.tsx deleted file mode 100644 index 3962f0884..000000000 --- a/examples/gnt/app/backflow/page.tsx +++ /dev/null @@ -1,80 +0,0 @@ -'use client'; - -import { useState, type FunctionComponent } from 'react'; -import Button from '~/components/tailwindui/Button'; -import { useQuery, type Query } from '~/gqty'; - -const CharacterList: FunctionComponent<{ - onClick?: (query: Query) => void; -}> = ({ onClick }) => { - const query = useQuery(); - - console.debug('render chars'); - - return ( - <> - {query - .characters({ filter: { name: 'Alien' } }) - ?.results?.map((character) => ( - - ))} - - ); -}; - -const LocationList: FunctionComponent = () => { - const query = useQuery(); - - console.debug('render location'); - - return ( - <> - {query.locations()?.results?.map((location) => ( -
- {location?.id}. {location?.name} ( - {location?.residents.map((r) => r?.id).length}) -
- ))} - - ); -}; - -export default function Home() { - const [childQuery, setChildQuery] = useState(); - - console.debug('render parent'); - - return ( -
- {childQuery && ( -
- - - -
- )} - -
-

Parent

- -

Query using self scope

- - setChildQuery(query)} /> -
-
- ); -} diff --git a/examples/gnt/next.config.js b/examples/gnt/next.config.js index ab2d427d0..eb31e2c31 100644 --- a/examples/gnt/next.config.js +++ b/examples/gnt/next.config.js @@ -1,8 +1,5 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - experimental: { - appDir: true, - }, images: { domains: ['rickandmortyapi.com'], }, diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 513ddbb12..d2615f917 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -9,15 +9,15 @@ "lint": "next lint" }, "dependencies": { + "@gqty/logger": "workspace:^", "@gqty/react": "workspace:^", - "@react-hookz/web": "^22.0.0", "autoprefixer": "10.4.14", "gqty": "workspace:^", - "next": "^13.3.0", + "next": "^13.4.2", "postcss": "8.4.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "tailwindcss": "3.3.1" + "tailwindcss": "^3.3.2" }, "devDependencies": { "@types/node": "18.15.11", diff --git a/examples/gnt/tailwind.config.js b/examples/gnt/tailwind.config.js index 0c544fe5e..d1964ccfa 100644 --- a/examples/gnt/tailwind.config.js +++ b/examples/gnt/tailwind.config.js @@ -1,9 +1,9 @@ /** @type {import('tailwindcss').Config} */ module.exports = { content: [ - './pages/**/*.{js,ts,jsx,tsx}', - './components/**/*.{js,ts,jsx,tsx}', - './app/**/*.{js,ts,jsx,tsx}', + './app/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './pages/**/*.{js,ts,jsx,tsx,mdx}', ], theme: { extend: { diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index fd9634c70..71d178f8a 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -395,6 +395,9 @@ export const deepMetadata = (input: any) => { /** * Read data from cache, creates an empty data slot that never expires when * target is not found. + * + * `expiresAt` and `swrBefore` is read from cache real-time, allowing stale + * accessor references to keep working. */ const ensureCache = ( type: string, @@ -405,7 +408,21 @@ const ensureCache = ( cache.set({ [type]: { [field]: undefined } }); } - return cache.get(`${type}.${field}`, cacheOptions)!; + const { data } = cache.get(`${type}.${field}`, cacheOptions)!; + + return { + data, + get expiresAt() { + return ( + cache.get(`${type}.${field}`, cacheOptions)?.expiresAt ?? -Infinity + ); + }, + get swrBefore() { + return ( + cache.get(`${type}.${field}`, cacheOptions)?.swrBefore ?? -Infinity + ); + }, + }; }; /** diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index 13d5ac363..4fadfd81b 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -59,6 +59,11 @@ export type CacheDataContainer = { */ swrBefore?: number; + /** + * Remove internal data reference, allowing WeakRefs to be garbase collected. + * + * For StrongRefs, calling this function has no effect. + */ unref?: () => void; }; @@ -107,8 +112,8 @@ export class Cache { /** Look up table for normalized objects. */ #normalizedObjects = new Map>(); - /** Temporary strong references in parallel with the WeakRef in FrailMap. */ - #dataRefs = new Map(); + /** Temporary strong references for the WeakRefs in FrailMap. */ + #dataRefs = new Set(); constructor( data?: CacheSnapshot, @@ -365,13 +370,16 @@ export class Cache { for (const [type, cacheObjects = {}] of Object.entries(values)) { for (const [field, data] of Object.entries(cacheObjects as CacheObject)) { - const __ref = Symbol(); + // TODO: Cache should reuse existing data containers (if any) and + // update the data, age, swr, and unref timer via Object.assign(). + + const cacheKey = `${type}.${field}`; + let unrefTimer: ReturnType | undefined; const unref = () => { clearTimeout(unrefTimer); - this.#dataRefs.delete(__ref); + this.#dataRefs.delete(dataContainer); }; - const cacheKey = `${type}.${field}`; const dataContainer: CacheDataContainer = // Mutation and subscription results should be returned right away for @@ -394,7 +402,14 @@ export class Cache { }; // Opens up previous cache value for GC. - this.#data.get(cacheKey)?.unref?.(); + const existing = this.#data.get(cacheKey); + if (existing) { + existing.unref?.(); + + Object.assign(existing, dataContainer); + } else { + this.#data.set(cacheKey, dataContainer, { strong: !isFinite(age) }); + } if (isFinite(age + swr)) { unrefTimer = setTimeout(unref, age + swr); @@ -403,10 +418,8 @@ export class Cache { unrefTimer.unref(); } - this.#dataRefs.set(__ref, dataContainer); + this.#dataRefs.add(dataContainer); } - - this.#data.set(cacheKey, dataContainer, { strong: !isFinite(age) }); } } diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 0f7e6dfd0..3a6d3e3ad 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -1,4 +1,4 @@ -import { Cache, GQtyError, QueryPayload, prepass } from '../src'; +import { Cache, GQtyError, prepass, type QueryPayload } from '../src'; import { $meta } from '../src/Accessor'; import { fetchSelections } from '../src/Client/resolveSelections'; import { updateCaches } from '../src/Client/updateCaches'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41048a115..032139ae3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,12 +113,12 @@ importers: examples/gnt: dependencies: + '@gqty/logger': + specifier: workspace:^ + version: link:../../packages/logger/dist '@gqty/react': specifier: workspace:^ version: link:../../packages/react/dist - '@react-hookz/web': - specifier: ^22.0.0 - version: 22.0.0(react-dom@18.2.0)(react@18.2.0) autoprefixer: specifier: 10.4.14 version: 10.4.14(postcss@8.4.21) @@ -126,8 +126,8 @@ importers: specifier: workspace:^ version: link:../../packages/gqty/dist next: - specifier: ^13.3.0 - version: 13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) + specifier: ^13.4.2 + version: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) postcss: specifier: 8.4.21 version: 8.4.21 @@ -138,8 +138,8 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) tailwindcss: - specifier: 3.3.1 - version: 3.3.1(postcss@8.4.21)(ts-node@10.9.1) + specifier: ^3.3.2 + version: 3.3.2(ts-node@10.9.1) devDependencies: '@types/node': specifier: 18.15.11 @@ -842,6 +842,11 @@ packages: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} dev: true + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: false + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} @@ -1110,7 +1115,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -5396,7 +5401,7 @@ packages: dependencies: '@babel/core': 7.21.4 '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -5428,14 +5433,14 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.17 /@jridgewell/gen-mapping@0.3.3: @@ -5450,6 +5455,10 @@ 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'} + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} @@ -5475,7 +5484,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 /@manypkg/find-root@1.1.0: @@ -5548,8 +5557,8 @@ packages: /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} - /@next/env@13.3.0: - resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==} + /@next/env@13.4.2: + resolution: {integrity: sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw==} dev: false /@next/eslint-plugin-next@13.3.0: @@ -5582,8 +5591,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64@13.3.0: - resolution: {integrity: sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==} + /@next/swc-darwin-arm64@13.4.2: + resolution: {integrity: sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -5599,8 +5608,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64@13.3.0: - resolution: {integrity: sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==} + /@next/swc-darwin-x64@13.4.2: + resolution: {integrity: sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -5632,8 +5641,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@13.3.0: - resolution: {integrity: sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==} + /@next/swc-linux-arm64-gnu@13.4.2: + resolution: {integrity: sha512-2xVabFtIge6BJTcJrW8YuUnYTuQjh4jEuRuS2mscyNVOj6zUZkom3CQg+egKOoS+zh2rrro66ffSKIS+ztFJTg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5649,8 +5658,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@13.3.0: - resolution: {integrity: sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==} + /@next/swc-linux-arm64-musl@13.4.2: + resolution: {integrity: sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5666,8 +5675,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@13.3.0: - resolution: {integrity: sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==} + /@next/swc-linux-x64-gnu@13.4.2: + resolution: {integrity: sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5683,8 +5692,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl@13.3.0: - resolution: {integrity: sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==} + /@next/swc-linux-x64-musl@13.4.2: + resolution: {integrity: sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5700,8 +5709,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@13.3.0: - resolution: {integrity: sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==} + /@next/swc-win32-arm64-msvc@13.4.2: + resolution: {integrity: sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -5717,8 +5726,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@13.3.0: - resolution: {integrity: sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==} + /@next/swc-win32-ia32-msvc@13.4.2: + resolution: {integrity: sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -5734,8 +5743,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@13.3.0: - resolution: {integrity: sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==} + /@next/swc-win32-x64-msvc@13.4.2: + resolution: {integrity: sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -5847,21 +5856,6 @@ packages: react-dom: 17.0.2(react@17.0.2) dev: false - /@react-hookz/web@22.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jl4JgUXaiSvvDVQD2z/rq2/RaykjjLrAZxHOEQj2H38j4UFWIVhv5oKUH8yrKF4wX6tMX9gdrj62f9yGq/nSaQ==} - peerDependencies: - js-cookie: ^3.0.1 - react: ^16.8 || ^17 || ^18 - react-dom: ^16.8 || ^17 || ^18 - peerDependenciesMeta: - js-cookie: - optional: true - dependencies: - '@react-hookz/deep-equal': 1.0.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@react-hookz/web@23.0.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-diBtlo17CJtZJ/Yb8veri7hZL7QPnqNZ+IAMHWWSb//nq+Z3XDHaXcozH7cyvMZj4gYwQeY/L/H4298etHxu1Q==} peerDependencies: @@ -5988,8 +5982,8 @@ packages: dependencies: tslib: 2.5.0 - /@swc/helpers@0.4.14: - resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + /@swc/helpers@0.5.1: + resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: tslib: 2.5.0 dev: false @@ -7004,7 +6998,7 @@ packages: dependencies: '@babel/runtime': 7.21.0 cosmiconfig: 7.1.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: false /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.0): @@ -8491,7 +8485,7 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.11.0 - resolve: 1.22.1 + resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: true @@ -8574,7 +8568,7 @@ packages: is-glob: 4.0.3 minimatch: 3.1.2 object.values: 1.1.6 - resolve: 1.22.1 + resolve: 1.22.2 semver: 6.3.0 tsconfig-paths: 3.14.2 transitivePeerDependencies: @@ -9856,6 +9850,12 @@ packages: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 + dev: true + + /is-core-module@2.12.0: + resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + dependencies: + has: 1.0.3 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -10466,7 +10466,7 @@ packages: jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 - resolve: 1.22.1 + resolve: 1.22.2 resolve.exports: 2.0.0 slash: 3.0.0 @@ -10858,15 +10858,9 @@ packages: set-cookie-parser: 2.5.1 dev: false - /lilconfig@2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - dev: false - /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -11197,7 +11191,6 @@ packages: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} @@ -11261,9 +11254,9 @@ packages: - '@babel/core' - babel-plugin-macros - /next@13.3.0(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==} - engines: {node: '>=14.6.0'} + /next@13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aNFqLs3a3nTGvLWlO9SUhCuMUHVPSFQC0+tDNGAsDXqx+WJDFSbvc233gOJ5H19SBc7nw36A9LwQepOJ2u/8Kg==} + engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -11282,24 +11275,25 @@ packages: sass: optional: true dependencies: - '@next/env': 13.3.0 - '@swc/helpers': 0.4.14 + '@next/env': 13.4.2 + '@swc/helpers': 0.5.1 busboy: 1.6.0 caniuse-lite: 1.0.30001474 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.21.8)(react@18.2.0) + zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.3.0 - '@next/swc-darwin-x64': 13.3.0 - '@next/swc-linux-arm64-gnu': 13.3.0 - '@next/swc-linux-arm64-musl': 13.3.0 - '@next/swc-linux-x64-gnu': 13.3.0 - '@next/swc-linux-x64-musl': 13.3.0 - '@next/swc-win32-arm64-msvc': 13.3.0 - '@next/swc-win32-ia32-msvc': 13.3.0 - '@next/swc-win32-x64-msvc': 13.3.0 + '@next/swc-darwin-arm64': 13.4.2 + '@next/swc-darwin-x64': 13.4.2 + '@next/swc-linux-arm64-gnu': 13.4.2 + '@next/swc-linux-arm64-musl': 13.4.2 + '@next/swc-linux-x64-gnu': 13.4.2 + '@next/swc-linux-x64-musl': 13.4.2 + '@next/swc-win32-arm64-msvc': 13.4.2 + '@next/swc-win32-ia32-msvc': 13.4.2 + '@next/swc-win32-x64-msvc': 13.4.2 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -11353,7 +11347,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -11363,7 +11357,7 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.11.0 + is-core-module: 2.12.0 semver: 7.5.0 validate-npm-package-license: 3.0.4 dev: true @@ -11373,7 +11367,7 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.11.0 + is-core-module: 2.12.0 semver: 7.5.0 validate-npm-package-license: 3.0.4 dev: true @@ -11844,31 +11838,31 @@ packages: tslib: 2.5.0 dev: false - /postcss-import@14.1.0(postcss@8.4.21): - resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} - engines: {node: '>=10.0.0'} + /postcss-import@15.1.0(postcss@8.4.23): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.1 + resolve: 1.22.2 dev: false - /postcss-js@4.0.1(postcss@8.4.21): + /postcss-js@4.0.1(postcss@8.4.23): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.21 + postcss: 8.4.23 dev: false - /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} + /postcss-load-config@4.0.1(postcss@8.4.23)(ts-node@10.9.1): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' ts-node: '>=9.0.0' @@ -11878,19 +11872,19 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 - postcss: 8.4.21 + lilconfig: 2.1.0 + postcss: 8.4.23 ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - yaml: 1.10.2 + yaml: 2.2.2 dev: false - /postcss-nested@6.0.0(postcss@8.4.21): - resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==} + /postcss-nested@6.0.1(postcss@8.4.23): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.21 + postcss: 8.4.23 postcss-selector-parser: 6.0.11 dev: false @@ -11910,7 +11904,7 @@ packages: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -11922,6 +11916,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss@8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -12072,11 +12075,6 @@ packages: engines: {node: '>=8'} dev: true - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: false - /quick-lru@6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} @@ -12507,7 +12505,16 @@ packages: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -12515,7 +12522,7 @@ packages: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -13136,11 +13143,12 @@ packages: symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /sucrase@3.31.0: - resolution: {integrity: sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ==} + /sucrase@3.32.0: + resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} engines: {node: '>=8'} hasBin: true dependencies: + '@jridgewell/gen-mapping': 0.3.3 commander: 4.1.1 glob: 7.1.6 lines-and-columns: 1.2.4 @@ -13193,37 +13201,34 @@ packages: tslib: 2.5.0 dev: true - /tailwindcss@3.3.1(postcss@8.4.21)(ts-node@10.9.1): - resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==} - engines: {node: '>=12.13.0'} + /tailwindcss@3.3.2(ts-node@10.9.1): + resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + engines: {node: '>=14.0.0'} hasBin: true - peerDependencies: - postcss: ^8.0.9 dependencies: + '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.5.3 - color-name: 1.1.4 didyoumean: 1.2.2 dlv: 1.1.3 fast-glob: 3.2.12 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.18.2 - lilconfig: 2.0.6 + lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.21 - postcss-import: 14.1.0(postcss@8.4.21) - postcss-js: 4.0.1(postcss@8.4.21) - postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) - postcss-nested: 6.0.0(postcss@8.4.21) + postcss: 8.4.23 + postcss-import: 15.1.0(postcss@8.4.23) + postcss-js: 4.0.1(postcss@8.4.23) + postcss-load-config: 4.0.1(postcss@8.4.23)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.23) postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 - sucrase: 3.31.0 + resolve: 1.22.2 + sucrase: 3.32.0 transitivePeerDependencies: - ts-node dev: false @@ -14089,6 +14094,11 @@ packages: engines: {node: '>= 6'} dev: false + /yaml@2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + engines: {node: '>= 14'} + dev: false + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -14153,3 +14163,7 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + + /zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false From a72be16530f8c3cea80348aae716b1de552ac3d5 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 17 May 2023 00:31:13 +0800 Subject: [PATCH 082/122] feat(examples/gnt): add bundle analyzer --- examples/gnt/next.config.js | 6 +- examples/gnt/package.json | 1 + pnpm-lock.yaml | 287 +++++++++++++++++++++++++++++++++++- 3 files changed, 290 insertions(+), 4 deletions(-) diff --git a/examples/gnt/next.config.js b/examples/gnt/next.config.js index eb31e2c31..16ead183d 100644 --- a/examples/gnt/next.config.js +++ b/examples/gnt/next.config.js @@ -1,3 +1,7 @@ +const withAnalyzer = require('@next/bundle-analyzer')({ + enabled: process.env.ANALYZE === 'true', +}); + /** @type {import('next').NextConfig} */ const nextConfig = { images: { @@ -5,4 +9,4 @@ const nextConfig = { }, }; -module.exports = nextConfig; +module.exports = withAnalyzer(nextConfig); diff --git a/examples/gnt/package.json b/examples/gnt/package.json index d2615f917..231cfa1c5 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -20,6 +20,7 @@ "tailwindcss": "^3.3.2" }, "devDependencies": { + "@next/bundle-analyzer": "^13.4.2", "@types/node": "18.15.11", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 032139ae3..6d9b6e929 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,6 +141,9 @@ importers: specifier: ^3.3.2 version: 3.3.2(ts-node@10.9.1) devDependencies: + '@next/bundle-analyzer': + specifier: ^13.4.2 + version: 13.4.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@types/node': specifier: 18.15.11 version: 18.15.11 @@ -590,7 +593,7 @@ importers: version: 8.5.4 bob-esbuild-cli: specifier: ^4.0.0 - version: 4.0.0(bob-esbuild@4.0.3) + version: 4.0.0 concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -611,7 +614,7 @@ importers: version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.15.11) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -647,7 +650,7 @@ importers: version: 7.0.1 ws: specifier: ^8.13.0 - version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + version: 8.13.0 publishDirectory: dist packages/logger: @@ -5240,6 +5243,48 @@ packages: jest-util: 29.5.0 slash: 3.0.0 + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.3 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@18.16.3) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5554,6 +5599,15 @@ packages: tslib: 2.5.0 dev: false + /@next/bundle-analyzer@13.4.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-VDFTWpRI5IFS++37A/eHfVNX8SoB4gbTd8HPUYMHAJ7zpK3t2oW8L+leTlPUw/pAt7Aia2MyYvSYBK4vYKSBlA==} + dependencies: + webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} @@ -5794,6 +5848,10 @@ packages: engines: {node: '>=14.6'} dev: true + /@polka/url@1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false @@ -7164,6 +7222,19 @@ packages: readable-stream: 3.6.0 dev: false + /bob-esbuild-cli@4.0.0: + resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} + engines: {node: '>=14.13.1'} + hasBin: true + peerDependencies: + bob-esbuild: ^4.0.0 + peerDependenciesMeta: + bob-esbuild: + optional: true + dependencies: + commander: 9.5.0 + dev: true + /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -7701,6 +7772,11 @@ packages: engines: {node: '>= 6'} dev: false + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -9523,6 +9599,13 @@ packages: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: true + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} @@ -10180,6 +10263,34 @@ packages: transitivePeerDependencies: - supports-color + /jest-cli@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@18.15.11) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10235,6 +10346,45 @@ packages: - ts-node dev: true + /jest-config@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.11 + babel-jest: 29.5.0(@babel/core@7.21.8) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10274,6 +10424,45 @@ packages: transitivePeerDependencies: - supports-color + /jest-config@29.5.0(@types/node@18.16.3): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.21.8 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.3 + babel-jest: 29.5.0(@babel/core@7.21.8) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10617,6 +10806,26 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 + /jest@29.5.0(@types/node@18.15.11): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@18.15.11) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11145,6 +11354,11 @@ packages: engines: {node: '>=4'} dev: true + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -11539,6 +11753,11 @@ packages: is-wsl: 2.2.0 dev: true + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: true + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -12784,6 +13003,15 @@ packages: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} dev: false + /sirv@1.0.19: + resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 1.1.0 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -13367,6 +13595,11 @@ packages: ieee754: 1.2.1 dev: true + /totalist@1.1.0: + resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} + engines: {node: '>=6'} + dev: true + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} @@ -13898,6 +14131,25 @@ packages: engines: {node: '>=12'} dev: true + /webpack-bundle-analyzer@4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + acorn: 8.8.2 + acorn-walk: 8.2.0 + chalk: 4.1.2 + commander: 7.2.0 + gzip-size: 6.0.0 + lodash: 4.17.21 + opener: 1.5.2 + sirv: 1.0.19 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -14040,6 +14292,35 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 + /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 + dev: true + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} From 75e5e1481e5262edd4b9f8e4a526cf4aaed01cf0 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 21 May 2023 02:23:35 +0800 Subject: [PATCH 083/122] fix(cli): compat with config.introspection --- packages/cli/src/commands/default.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index e7c14a85e..a8731a576 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -59,7 +59,11 @@ export const addCommand = (command: Command) => { process.exit(1); } - endpoints = await promptEndpoints(); + endpoints = await promptEndpoints( + config.introspections + ? Object.keys(config.introspections).join(', ') + : config.introspection?.endpoint + ); } endpoints = endpoints.map((endpoint) => endpoint.trim()).filter(Boolean); @@ -74,7 +78,8 @@ export const addCommand = (command: Command) => { } const schema = await fetchSchemas(endpoints, { - headers: convertHeadersInput(options.header), + headers: + convertHeadersInput(options.header) ?? config.introspection?.headers, headersByEndpoint: config.introspections, }); @@ -252,11 +257,12 @@ export const addCommand = (command: Command) => { }); }; -const promptEndpoints = async () => { +const promptEndpoints = async (defaultEndpoint?: string) => { const { endpoints } = await inquirer.prompt<{ endpoints: string }>({ name: 'endpoints', type: 'input', message: 'Where is your GraphQL endpoint or schema files?', + default: defaultEndpoint, }); return endpoints From ac43e8f5370db1f5eac16c9a2a2154d8f2146562 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 10 Jun 2023 16:15:46 +0800 Subject: [PATCH 084/122] fix(cli): fetch all schemas before merging --- packages/cli/package.json | 1 - .../cli/src/commands/default/fetchSchema.ts | 16 ++++++----- packages/cli/src/deps.ts | 2 +- pnpm-lock.yaml | 27 +++++++++++++++---- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 981c3e3e0..c37fa5e1d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,7 +46,6 @@ "@graphql-codegen/core": "^3.1.0", "@graphql-codegen/typescript": "^3.0.2", "@graphql-tools/delegate": "^9.0.25", - "@graphql-tools/schema": "^9.0.17", "@graphql-tools/utils": "^9.2.0", "@graphql-tools/wrap": "^9.3.4", "chalk": "^5.2.0", diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts index b8dbb54d8..d66ab6ab3 100644 --- a/packages/cli/src/commands/default/fetchSchema.ts +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -1,5 +1,5 @@ import { type AsyncExecutor } from '@graphql-tools/utils'; -import { GraphQLSchema, buildSchema, type ExecutionResult } from 'graphql'; +import { type ExecutionResult, type GraphQLSchema } from 'graphql'; import { readFile } from 'node:fs/promises'; import { extname } from 'path'; import { type GQtyConfig } from '../../config'; @@ -28,8 +28,8 @@ export type FetchSchemasOptions = { export const fetchSchemas = async ( endpoints: string[], options: FetchSchemasOptions -) => { - const schemas: GraphQLSchema[] = []; +): Promise => { + const schemas: string[] = []; if (!options.headersByEndpoint) { options.headersByEndpoint = {}; @@ -90,7 +90,7 @@ export const fetchSchemas = async ( console.log(''); } - return deps.mergeSchemas({ schemas }); + return deps.buildSchema(schemas.join('\n')); }; const terminateWithError = (e: unknown) => { @@ -105,7 +105,7 @@ const terminateWithError = (e: unknown) => { const fetchSchema = async ( endpoint: string, options?: Pick & { silent?: boolean } -): Promise => { +): Promise => { if (isURL(endpoint)) { if (!options?.silent) { logger.infoProgress( @@ -155,7 +155,9 @@ const fetchSchema = async ( } }; - return await deps.schemaFromExecutor(executor); + const schema = await deps.schemaFromExecutor(executor); + + return deps.printSchema(schema); } else { const files = await deps .fg(endpoint) @@ -175,7 +177,7 @@ const fetchSchema = async ( fileContents.push(await readFile(file, { encoding: 'utf-8' })); } - return buildSchema(fileContents.join('\n')); + return fileContents.join('\n'); } }; diff --git a/packages/cli/src/deps.ts b/packages/cli/src/deps.ts index 194095b61..ab7a21b7a 100644 --- a/packages/cli/src/deps.ts +++ b/packages/cli/src/deps.ts @@ -1,12 +1,12 @@ export { codegen } from '@graphql-codegen/core'; export * as typescriptPlugin from '@graphql-codegen/typescript'; -export { mergeSchemas } from '@graphql-tools/schema'; export { printSchemaWithDirectives } from '@graphql-tools/utils'; export { schemaFromExecutor, wrapSchema } from '@graphql-tools/wrap'; export { program } from 'commander'; export { cosmiconfig, type Loader } from 'cosmiconfig'; export { fetch } from 'cross-fetch'; export { default as fg } from 'fast-glob'; +export { buildSchema, printSchema } from 'graphql'; export { default as inquirer } from 'inquirer'; export { default as sortBy } from 'lodash-es/sortBy.js'; export { default as mkdirp } from 'mkdirp'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d9b6e929..be07948bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,8 @@ -lockfileVersion: '6.0' +lockfileVersion: '6.1' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false overrides: '@braintree/sanitize-url@<6.0.0': '>=6.0.0' @@ -432,9 +436,6 @@ importers: '@graphql-tools/delegate': specifier: ^9.0.25 version: 9.0.28(graphql@16.6.0) - '@graphql-tools/schema': - specifier: ^9.0.17 - version: 9.0.17(graphql@16.6.0) '@graphql-tools/utils': specifier: ^9.2.0 version: 9.2.1(graphql@16.6.0) @@ -504,7 +505,7 @@ importers: version: 18.15.11 bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@5.0.4) + version: 1.1.2(esbuild@0.17.12) esbuild: specifier: ^0.17.12 version: 0.17.12 @@ -7341,6 +7342,22 @@ packages: typescript: 5.0.4 dev: true + /bob-tsm@1.1.2(esbuild@0.17.12): + resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} + engines: {node: '>=14.13.1'} + hasBin: true + peerDependencies: + esbuild: '>=0.14.39' + typescript: '>=4.7.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + esbuild: 0.17.12 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /bob-tsm@1.1.2(esbuild@0.17.12)(typescript@5.0.4): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} From 70ed365b66b585386a7c228b9c5c3afcee7a688d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 16 Jun 2023 13:13:19 +0800 Subject: [PATCH 085/122] fix(cli): install peer dep 'graphql' --- packages/cli/src/commands/default/promptInstall.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/default/promptInstall.ts b/packages/cli/src/commands/default/promptInstall.ts index b9f6bd6f3..7dec26ef0 100644 --- a/packages/cli/src/commands/default/promptInstall.ts +++ b/packages/cli/src/commands/default/promptInstall.ts @@ -64,7 +64,7 @@ const getInstallCommand = (packager: PackageManager) => { }; const getInstallPackages = (configuration: GQtyConfig) => { - const packages = ['gqty']; + const packages = ['gqty', 'graphql']; if (configuration.react) { packages.push('@gqty/react'); From c1ed3d8a0f1e091129810a323cfb1ccf14df1c64 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 16 Jun 2023 13:13:58 +0800 Subject: [PATCH 086/122] fix(cli): allow disable subscription via arg --- packages/cli/src/commands/default.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index a8731a576..e63dcfadf 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -117,8 +117,9 @@ export const addCommand = (command: Command) => { config.react = true; } - if (options.subscriptions) { - config.subscriptions = options.subscriptions; + // Explicitly allow empty string + if (options.subscriptions !== undefined) { + config.subscriptions = options.subscriptions || false; } if (options.typescript) { From b94c360c809bd8bb3731b040dd1772f8259d34ce Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 3 Jul 2023 18:24:16 +0800 Subject: [PATCH 087/122] fix(packages/cli): typo on options definition --- packages/cli/src/commands/default.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index e63dcfadf..2e615651a 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -36,7 +36,7 @@ export const addCommand = (command: Command) => { '--subscriptions ', 'Includes specified package as subscription client, must be graphql-ws compatible.' ) - .option('--target', 'Destination path for the generated client.') + .option('--target ', 'Destination path for the generated client.') .option( '--typescript', 'Generates a TypeScript client over a JavaScript one.' From 4dac228fbff3256f21f175e58acbc59be290dcca Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 4 Jul 2023 12:49:12 +0800 Subject: [PATCH 088/122] feat(cli): add negative options --- packages/cli/package.json | 2 +- packages/cli/src/commands/default.ts | 18 +- packages/cli/src/generate.ts | 10 +- packages/cli/test/generate.test.ts | 30 ++- .../cli/test/inspectWriteGenerate.test.ts | 74 +++--- packages/cli/test/writeGenerate.test.ts | 10 +- pnpm-lock.yaml | 230 +----------------- 7 files changed, 97 insertions(+), 277 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index c37fa5e1d..ada5a2df2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -49,7 +49,7 @@ "@graphql-tools/utils": "^9.2.0", "@graphql-tools/wrap": "^9.3.4", "chalk": "^5.2.0", - "commander": "^10.0.0", + "commander": "^11.0.0", "cosmiconfig": "^8.1.3", "cross-fetch": "^3.1.5", "fast-glob": "^3.2.12", diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index 2e615651a..7594e7406 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -13,6 +13,7 @@ import { promptInstall, runInstall } from './default/promptInstall'; export type CommandOptions = { header?: string[]; + install?: boolean; react?: boolean; subscriptions?: string; target?: string; @@ -33,14 +34,21 @@ export const addCommand = (command: Command) => { ) .option('--react', 'Include React hooks in the generated client.') .option( - '--subscriptions ', + '--subscriptions [client]', 'Includes specified package as subscription client, must be graphql-ws compatible.' ) + .option('--no-subscriptions') .option('--target ', 'Destination path for the generated client.') .option( '--typescript', 'Generates a TypeScript client over a JavaScript one.' ) + .option('--no-typescript') + .option( + '--install', + 'Automatically install dependencies with current package manager.' + ) + .option('--no-install') .option( '-w, --watch', 'Activate watch mode, regenerate on change changes.', @@ -165,9 +173,9 @@ export const addCommand = (command: Command) => { ...config, }); - if (argv.length === 0) { + if (argv.length === 0 && options.install === undefined) { await promptInstall(config); - } else if (manifest) { + } else if (manifest && options.install !== false) { await runInstall(manifest, config); } @@ -298,11 +306,11 @@ const promptSubscriptions = async (defaultValue?: string) => { const { subscriptions } = await inquirer.prompt<{ subscriptions: string }>({ name: 'subscriptions', type: 'input', - message: 'Do you need a subscription client? (leave empty to skip)', + message: 'Do you need a subscription client? (Enter "-" to skip)', default: defaultValue?.trim() || undefined, }); - return subscriptions || false; + return subscriptions?.trim().replace(/^\-$/, '') || false; }; const promptTypescript = async (defaultValue: boolean) => { diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 1efac49c8..be13b296d 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -906,12 +906,12 @@ export async function generate( subscriptions === true ? 'graphql-ws' : subscriptions }";` : '', - isJavascriptOutput ? '' : 'import type { QueryFetcher } from "gqty";', - 'import { Cache, GQtyError, createClient } from "gqty";', isJavascriptOutput - ? '' - : 'import type { GeneratedSchema } from "./schema.generated";', - 'import { generatedSchema, scalarsEnumsHash } from "./schema.generated";', + ? 'import { Cache, GQtyError, createClient } from "gqty";' + : 'import { Cache, GQtyError, createClient, type QueryFetcher } from "gqty";', + isJavascriptOutput + ? 'import { generatedSchema, scalarsEnumsHash } from "./schema.generated";' + : 'import { generatedSchema, scalarsEnumsHash, type GeneratedSchema } from "./schema.generated";', ] .filter(Boolean) .join('\n')} diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index b65a934af..c4ae305c4 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -127,10 +127,12 @@ test('basic functionality works', async () => { import { createReactClient } from '@gqty/react'; import { createClient as createSubscriptionsClient } from 'graphql-ws'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -310,10 +312,12 @@ test('custom scalars works', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -1723,10 +1727,12 @@ test('ignoreArgs transform', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index e2d1ab1d0..1db6d19c3 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -1,10 +1,10 @@ import fs from 'fs'; import path from 'path'; import { - BuildContextArgs, createTestApp, - GetEnvelopedFn, gql, + type BuildContextArgs, + type GetEnvelopedFn, } from 'test-utils'; import tmp from 'tmp-promise'; import { inspectWriteGenerate } from '../src/inspectWriteGenerate'; @@ -59,10 +59,12 @@ test('basic inspectWriteGenerate functionality', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -272,10 +274,12 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -484,10 +488,12 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -695,10 +701,12 @@ describe('from file', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -950,10 +958,12 @@ describe('from multiple files', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -1221,10 +1231,12 @@ test('specify generateOptions to inspectWriteGenerate', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -1582,10 +1594,12 @@ describe('CLI behavior', () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 7c5cad043..5a4582c79 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -242,10 +242,12 @@ test('creates dir, generates code and writes new file', async () => { */ import { createReactClient } from '@gqty/react'; - import type { QueryFetcher } from 'gqty'; - import { Cache, GQtyError, createClient } from 'gqty'; - import type { GeneratedSchema } from './schema.generated'; - import { generatedSchema, scalarsEnumsHash } from './schema.generated'; + import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; + import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, + } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index be07948bf..8dbbfbe1b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -446,8 +446,8 @@ importers: specifier: ^5.2.0 version: 5.2.0 commander: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^11.0.0 + version: 11.0.0 cosmiconfig: specifier: ^8.1.3 version: 8.1.3 @@ -505,7 +505,7 @@ importers: version: 18.15.11 bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12) + version: 1.1.2(esbuild@0.17.12)(typescript@5.0.4) esbuild: specifier: ^0.17.12 version: 0.17.12 @@ -594,7 +594,7 @@ importers: version: 8.5.4 bob-esbuild-cli: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -615,7 +615,7 @@ importers: version: 5.11.3(graphql@16.6.0) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11) + version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -651,7 +651,7 @@ importers: version: 7.0.1 ws: specifier: ^8.13.0 - version: 8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) publishDirectory: dist packages/logger: @@ -5244,48 +5244,6 @@ packages: jest-util: 29.5.0 slash: 3.0.0 - /@jest/core@29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.16.3) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -7223,19 +7181,6 @@ packages: readable-stream: 3.6.0 dev: false - /bob-esbuild-cli@4.0.0: - resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} - engines: {node: '>=14.13.1'} - hasBin: true - peerDependencies: - bob-esbuild: ^4.0.0 - peerDependenciesMeta: - bob-esbuild: - optional: true - dependencies: - commander: 9.5.0 - dev: true - /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -7342,22 +7287,6 @@ packages: typescript: 5.0.4 dev: true - /bob-tsm@1.1.2(esbuild@0.17.12): - resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} - engines: {node: '>=14.13.1'} - hasBin: true - peerDependencies: - esbuild: '>=0.14.39' - typescript: '>=4.7.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - esbuild: 0.17.12 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /bob-tsm@1.1.2(esbuild@0.17.12)(typescript@5.0.4): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} @@ -7779,9 +7708,9 @@ packages: delayed-stream: 1.0.0 dev: true - /commander@10.0.0: - resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} - engines: {node: '>=14'} + /commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} dev: false /commander@4.1.1: @@ -10280,34 +10209,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.15.11) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10363,45 +10264,6 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.21.8 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.11 - babel-jest: 29.5.0(@babel/core@7.21.8) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10441,45 +10303,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-config@29.5.0(@types/node@18.16.3): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.21.8 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.3 - babel-jest: 29.5.0(@babel/core@7.21.8) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10823,26 +10646,6 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@18.15.11): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.15.11) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -14325,19 +14128,6 @@ packages: utf-8-validate: 6.0.3 dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} From 50e2117b12ced95058a77eb7d1772052ed2d62fe Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 22 Jul 2023 13:49:54 +0800 Subject: [PATCH 089/122] fix(gqty): safe auto-selection on nullable interfaces --- packages/gqty/src/Accessor/resolve.ts | 2 ++ packages/gqty/src/Utils/pick.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index 71d178f8a..9ed84051f 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -443,6 +443,8 @@ const selectIdentityFields = ( accessor: CacheObject, type: Record ) => { + if (accessor == null) return; + const meta = $meta(accessor); if (!meta) return; diff --git a/packages/gqty/src/Utils/pick.ts b/packages/gqty/src/Utils/pick.ts index 8538efc58..706745b84 100644 --- a/packages/gqty/src/Utils/pick.ts +++ b/packages/gqty/src/Utils/pick.ts @@ -11,6 +11,8 @@ export const pick = ( for (const { ancestry } of selections) { let node = schema; for (const { key, input } of ancestry) { + if (node == null) break; + if (input) { node = node[key](input.values); } else { From 2dc0209a84d9c6863513eb8b4c6c8e70ee18ba7e Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 22 Jul 2023 15:36:40 +0800 Subject: [PATCH 090/122] feat(gqty): remove default return from resolve() --- packages/gqty/src/Client/resolvers.ts | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 8134b784e..eda76635f 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -4,7 +4,6 @@ import { type Cache } from '../Cache'; import { type GQtyError, type RetryOptions } from '../Error'; import { type ScalarsEnumsHash, type Schema } from '../Schema'; import { type Selection } from '../Selection'; -import { pick } from '../Utils/pick'; import { addSelections, delSelectionsSet, getSelectionsSet } from './batching'; import { createContext, type SchemaContext } from './context'; import { type Debugger } from './debugger'; @@ -85,7 +84,7 @@ export type ResolveFn = < >( fn: DataFn, options?: ResolveOptions -) => Promise>; +) => Promise; const asyncItDoneMessage = { done: true } as IteratorResult; @@ -94,18 +93,12 @@ export type SubscribeFn = < >( fn: DataFn, options?: SubscribeOptions -) => AsyncGenerator, void, unknown> & { +) => AsyncGenerator & { unsubscribe: Unsubscribe; }; export type DataFn = (schema: TSchema) => TResult; -export type DataResult = TData extends undefined - ? TData - : TData extends void - ? unknown - : TData; - export type CreateResolverOptions = { /** * Defines how a query should fetch from the cache and network. @@ -410,12 +403,11 @@ export const createResolvers = ({ createResolver, resolve: async (fn, options) => { - const { accessor, resolve, selections } = createResolver(options); - - fn(accessor) as unknown; + const { accessor, resolve } = createResolver(options); + const dataFn = () => fn(accessor); - const dataFn = () => - ((fn(accessor) as unknown) ?? pick(accessor, selections)) as any; + // Run once to trigger selections + dataFn(); const fetchPromise = resolve().then(dataFn); From 2f91ae5fff130f313c1c63aada4d160e5ae58e9d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 30 Jul 2023 00:10:46 +0800 Subject: [PATCH 091/122] fix(react): clear selections post-fetch in useQuery (#1594) --- examples/gnt/.vscode/settings.json | 4 - examples/gnt/README.md | 5 +- examples/gnt/app/MyComponent.tsx | 35 +- examples/gnt/gqty/index.ts | 52 +- examples/gnt/gqty/react.ts | 22 + examples/gnt/package.json | 24 +- examples/gnt/tsconfig.json | 2 +- package.json | 2 +- packages/gqty/src/Utils/hash.ts | 2 +- packages/gqty/test/accessor.test.ts | 2 +- packages/gqty/test/subscriptions.test.ts | 12 +- packages/react/package.json | 8 +- packages/react/src/index.tsx | 2 +- packages/react/src/query/useQuery.ts | 2 + packages/react/test/tsconfig.json | 4 +- packages/react/test/useMutation.test.tsx | 44 +- pnpm-lock.yaml | 3769 +++++++++------------- 17 files changed, 1734 insertions(+), 2257 deletions(-) delete mode 100644 examples/gnt/.vscode/settings.json create mode 100644 examples/gnt/gqty/react.ts diff --git a/examples/gnt/.vscode/settings.json b/examples/gnt/.vscode/settings.json deleted file mode 100644 index 99438ebd2..000000000 --- a/examples/gnt/.vscode/settings.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "typescript.tsdk": "../../node_modules/.pnpm/typescript@4.9.5/node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true -} diff --git a/examples/gnt/README.md b/examples/gnt/README.md index 86b2e40e0..ad4d311a6 100644 --- a/examples/gnt/README.md +++ b/examples/gnt/README.md @@ -1,7 +1,8 @@ # GQty Next.js Template (GNT) -Created via `create-next-app` for Next v13 and React 18. +Created via `create-next-app` for Next 13 and React 18. -This is a playground for experimenting edge cases and behavior for `@gqty/react`, it doesn't serves a purpose of an example on it's own. +This is a playground for experimenting edge cases and behavior for +`@gqty/react`, it doesn't serves a purpose of an example on it's own. Future examples will be born from the results of this playground. diff --git a/examples/gnt/app/MyComponent.tsx b/examples/gnt/app/MyComponent.tsx index d0267bfd0..f242b9c93 100644 --- a/examples/gnt/app/MyComponent.tsx +++ b/examples/gnt/app/MyComponent.tsx @@ -1,7 +1,7 @@ 'use client'; -import { type FunctionComponent } from 'react'; -import { useQuery } from '~/gqty'; +import { useDeferredValue, useState, type FunctionComponent } from 'react'; +import { useQuery } from '~/gqty/react'; import Avatar from './Avatar'; import Card from './Card'; import SmallText from './SmallText'; @@ -10,21 +10,32 @@ import Text from './Text'; export type Props = {}; const MyComponent: FunctionComponent = () => { + const [name, setName] = useState('Rick'); + const deferredName = useDeferredValue(name); const query = useQuery(); return ( <> - {query.characters()?.results?.map((character) => ( - - + setName(e.target.value)} + className="border border-gray-300 rounded-md px-3 py-2 w-full text-black" + /> -
- {character?.name} - {character?.species} - {character?.origin?.name} -
-
- ))} + {query + .characters({ filter: { name: deferredName } }) + ?.results?.map((character) => ( + + + +
+ {character?.name} + {character?.species} + {character?.origin?.name} +
+
+ ))} ); }; diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts index 844a41a88..6f9e4939e 100644 --- a/examples/gnt/gqty/index.ts +++ b/examples/gnt/gqty/index.ts @@ -2,11 +2,12 @@ * GQty: You can safely modify this file based on your needs. */ -import { createReactClient } from '@gqty/react'; -import type { QueryFetcher } from 'gqty'; -import { Cache, createClient } from 'gqty'; -import type { GeneratedSchema } from './schema.generated'; -import { generatedSchema, scalarsEnumsHash } from './schema.generated'; +import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; +import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, +} from './schema.generated'; const queryFetcher: QueryFetcher = async function ( { query, variables, operationName }, @@ -29,16 +30,30 @@ const queryFetcher: QueryFetcher = async function ( ...fetchOptions, }); - const json = await response.json(); + if (response.status >= 400) { + throw new GQtyError( + `GraphQL endpoint responded with HTTP ${response.status}: ${response.statusText}.` + ); + } + + const text = await response.text(); - return json; + try { + return JSON.parse(text); + } catch { + throw new GQtyError( + `Malformed JSON response: ${ + text.length > 50 ? text.slice(0, 50) + '...' : text + }` + ); + } }; const cache = new Cache( undefined, /** - * Default cache options immediate expiry with a 5 minutes window of - * stale-while-revalidate. + * Default option is immediate cache expiry but keep it for 5 minutes, + * allowing soft refetches in background. */ { maxAge: 0, @@ -70,23 +85,4 @@ export const { track, } = client; -export const { - graphql, - useQuery, - usePaginatedQuery, - useTransactionQuery, - useLazyQuery, - useRefetch, - useMutation, - useMetaState, - prepareReactRender, - useHydrateCache, - prepareQuery, -} = createReactClient(client, { - defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, - }, -}); - export * from './schema.generated'; diff --git a/examples/gnt/gqty/react.ts b/examples/gnt/gqty/react.ts new file mode 100644 index 000000000..1d7b51221 --- /dev/null +++ b/examples/gnt/gqty/react.ts @@ -0,0 +1,22 @@ +import { createReactClient } from '@gqty/react'; +import { client } from '.'; +import type { GeneratedSchema } from './schema.generated'; + +export const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, +} = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: false, + }, +}); diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 231cfa1c5..507ac6928 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -11,20 +11,22 @@ "dependencies": { "@gqty/logger": "workspace:^", "@gqty/react": "workspace:^", - "autoprefixer": "10.4.14", "gqty": "workspace:^", - "next": "^13.4.2", - "postcss": "8.4.21", + "graphql": "^16.7.1", + "next": "13.4.12", "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwindcss": "^3.3.2" + "react-dom": "^18.2.0" }, "devDependencies": { - "@next/bundle-analyzer": "^13.4.2", - "@types/node": "18.15.11", - "@types/react": "^18.2.6", - "@types/react-dom": "^18.2.4", - "eslint": "^8.35.0", - "eslint-config-next": "13.3.0" + "@next/bundle-analyzer": "^13.4.12", + "@types/node": "20.4.5", + "@types/react": "18.2.17", + "@types/react-dom": "18.2.7", + "autoprefixer": "10.4.14", + "eslint": "8.46.0", + "eslint-config-next": "13.3.0", + "postcss": "8.4.21", + "tailwindcss": "^3.3.3", + "typescript": "^5.0.4" } } diff --git a/examples/gnt/tsconfig.json b/examples/gnt/tsconfig.json index a194d778a..ba756c01c 100644 --- a/examples/gnt/tsconfig.json +++ b/examples/gnt/tsconfig.json @@ -8,7 +8,7 @@ "jsx": "preserve", "lib": ["dom", "dom.iterable", "esnext"], "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "noEmit": true, "paths": { "~/*": ["./*"] }, "plugins": [{ "name": "next" }], diff --git a/package.json b/package.json index 6a75548f4..54a63492e 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "chalk": "^5.2.0", "changesets-github-release": "^0.1.0", "concurrently": "^7.6.0", - "esbuild": "^0.17.19", + "esbuild": "^0.18.17", "globby": "^13.1.3", "husky": "^8.0.3", "jest": "^29.5.0", diff --git a/packages/gqty/src/Utils/hash.ts b/packages/gqty/src/Utils/hash.ts index 03450f4e1..e2a771964 100644 --- a/packages/gqty/src/Utils/hash.ts +++ b/packages/gqty/src/Utils/hash.ts @@ -5,5 +5,5 @@ import objectHash from 'object-hash'; * Memoized hash function, with a prefix to avoid starting with a number. */ export const hash = memoize((...args: unknown[]) => - objectHash(args).replace(/^(\d)/, 'a$1') + objectHash(args, { unorderedObjects: false }).replace(/^(\d)/, 'a$1') ); diff --git a/packages/gqty/test/accessor.test.ts b/packages/gqty/test/accessor.test.ts index 8eba6c9ce..84fa80ba1 100644 --- a/packages/gqty/test/accessor.test.ts +++ b/packages/gqty/test/accessor.test.ts @@ -1,6 +1,6 @@ import { getArrayFields, GQtyError } from '../src'; import { $meta, assignSelections, setCache } from '../src/Accessor'; -import { createTestClient, Dog, expectConsoleWarn } from './utils'; +import { createTestClient, expectConsoleWarn, type Dog } from './utils'; test('legacy warning', async () => { const { query } = await createTestClient(); diff --git a/packages/gqty/test/subscriptions.test.ts b/packages/gqty/test/subscriptions.test.ts index e2a7d161f..1ba1d41c7 100644 --- a/packages/gqty/test/subscriptions.test.ts +++ b/packages/gqty/test/subscriptions.test.ts @@ -9,9 +9,7 @@ describe('core#resolve', () => { const [data] = await Promise.all([ (async () => { - return resolve(({ subscription }) => { - subscription.newNotification; - }); + return resolve(({ subscription }) => subscription.newNotification); })(), (async () => { await new Promise((r) => setTimeout(r, 1000)); @@ -23,13 +21,7 @@ describe('core#resolve', () => { })(), ]); - expect(data).toMatchInlineSnapshot(` - { - "subscription": { - "newNotification": "THIS_IS_A_MESSAGE", - }, - } - `); + expect(data).toStrictEqual('THIS_IS_A_MESSAGE'); }); }); diff --git a/packages/react/package.json b/packages/react/package.json index 09519864e..7247dbe05 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -14,12 +14,12 @@ "sideEffects": false, "exports": { ".": { - "require": "./dist/index.js", - "import": "./dist/index.mjs" + "import": "./dist/index.mjs", + "require": "./dist/index.js" }, "./*": { - "require": "./dist/*.js", - "import": "./dist/*.mjs" + "import": "./dist/*.mjs", + "require": "./dist/*.js" } }, "main": "dist/index.js", diff --git a/packages/react/src/index.tsx b/packages/react/src/index.tsx index 957ff320b..582a89c5c 100644 --- a/packages/react/src/index.tsx +++ b/packages/react/src/index.tsx @@ -13,8 +13,8 @@ export type { } from './mutation/useMutation'; export type { GraphQLHOC, GraphQLHOCOptions } from './query/hoc'; export type { - PreparedQuery, PrepareQuery, + PreparedQuery, UsePreparedQueryOptions, } from './query/preparedQuery'; export type { diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 50c9232e1..0e66d3ed2 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -250,6 +250,8 @@ export const createUseQuery = ( context.notifyCacheUpdate = cachePolicy !== 'default'; state.promise = undefined; + selections.clear(); + setState({}); } }, diff --git a/packages/react/test/tsconfig.json b/packages/react/test/tsconfig.json index 8a4068dd3..b5f92e578 100644 --- a/packages/react/test/tsconfig.json +++ b/packages/react/test/tsconfig.json @@ -4,10 +4,8 @@ "declaration": false, "esModuleInterop": true, "jsx": "react", - "module": "commonjs", "noEmit": true, - "strict": true, - "target": "es2019" + "strict": true }, "exclude": [], "include": ["**/*.ts", "**/*.tsx"] diff --git a/packages/react/test/useMutation.test.tsx b/packages/react/test/useMutation.test.tsx index 91b81d729..390eca90a 100644 --- a/packages/react/test/useMutation.test.tsx +++ b/packages/react/test/useMutation.test.tsx @@ -8,8 +8,10 @@ describe('useMutation', () => { return useMutation((mutation, { name }: { name: string }) => { const human = mutation.humanMutation({ nameArg: name }); - human?.id; - human?.name; + return { + id: human.id, + name: human.name, + }; }); }); @@ -20,13 +22,8 @@ describe('useMutation', () => { expect(result.current[1]).toMatchInlineSnapshot(` { "data": { - "mutation": { - "a75a2": { - "__typename": "Human", - "id": "1", - "name": "John Doe", - }, - }, + "id": "1", + "name": "John Doe", }, "error": undefined, "isLoading": false, @@ -41,8 +38,10 @@ describe('useMutation', () => { (mutation, { name }: { name: string }) => { const human = mutation.humanMutation({ nameArg: name }); - human?.id; - human?.name; + return { + id: human.id, + name: human.name, + }; }, { suspense: true } ); @@ -55,13 +54,8 @@ describe('useMutation', () => { expect(result.current[1]).toMatchInlineSnapshot(` { "data": { - "mutation": { - "ba497": { - "__typename": "Human", - "id": "1", - "name": "Jane Doe", - }, - }, + "id": "1", + "name": "Jane Doe", }, "error": undefined, "isLoading": false, @@ -74,10 +68,10 @@ describe('useMutation', () => { const q = renderHook(() => { const human = useQuery().human({ name: 'Uno' }); - human.id; - human.name; - - return human; + return { + id: human.id, + name: human.name, + }; }); const m = renderHook(() => { @@ -85,8 +79,10 @@ describe('useMutation', () => { (mutation, args: { name: string; newName: string }) => { const human = mutation.renameHuman(args); - human?.id; - human?.name; + return { + id: human.id, + name: human.name, + }; } ); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8dbbfbe1b..3bce21c26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,19 +44,19 @@ importers: version: 1.1.3 '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 bob-esbuild: specifier: ^4.0.3 - version: 4.0.3(esbuild@0.17.19)(typescript@5.0.4) + version: 4.0.3(esbuild@0.18.17)(typescript@5.0.4) bob-esbuild-cli: specifier: ^4.0.0 version: 4.0.0(bob-esbuild@4.0.3) bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.19)(typescript@5.0.4) + version: 4.1.1(@types/node@18.16.3)(esbuild@0.18.17)(typescript@5.0.4) bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.19)(typescript@5.0.4) + version: 1.1.2(esbuild@0.18.17)(typescript@5.0.4) bufferutil: specifier: ^4.0.7 version: 4.0.7 @@ -70,8 +70,8 @@ importers: specifier: ^7.6.0 version: 7.6.0 esbuild: - specifier: ^0.17.19 - version: 0.17.19 + specifier: ^0.18.17 + version: 0.18.17 globby: specifier: ^13.1.3 version: 13.1.3 @@ -80,7 +80,7 @@ importers: version: 8.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) open: specifier: ^8.4.2 version: 8.4.2 @@ -98,10 +98,10 @@ importers: version: 7.3.8 ts-jest: specifier: ^29.1.0 - version: 29.1.0(@babel/core@7.21.8)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.0.4) + version: 29.1.0(@babel/core@7.22.9)(esbuild@0.18.17)(jest@29.5.0)(typescript@5.0.4) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) + version: 10.9.1(@types/node@18.16.3)(typescript@5.0.4) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -123,46 +123,52 @@ importers: '@gqty/react': specifier: workspace:^ version: link:../../packages/react/dist - autoprefixer: - specifier: 10.4.14 - version: 10.4.14(postcss@8.4.21) gqty: specifier: workspace:^ version: link:../../packages/gqty/dist + graphql: + specifier: ^16.7.1 + version: 16.7.1 next: - specifier: ^13.4.2 - version: 13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0) - postcss: - specifier: 8.4.21 - version: 8.4.21 + specifier: 13.4.12 + version: 13.4.12(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) - tailwindcss: - specifier: ^3.3.2 - version: 3.3.2(ts-node@10.9.1) devDependencies: '@next/bundle-analyzer': - specifier: ^13.4.2 - version: 13.4.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + specifier: ^13.4.12 + version: 13.4.12(bufferutil@4.0.7)(utf-8-validate@6.0.3) '@types/node': - specifier: 18.15.11 - version: 18.15.11 + specifier: 20.4.5 + version: 20.4.5 '@types/react': - specifier: ^18.2.6 - version: 18.2.6 + specifier: 18.2.17 + version: 18.2.17 '@types/react-dom': - specifier: ^18.2.4 - version: 18.2.4 + specifier: 18.2.7 + version: 18.2.7 + autoprefixer: + specifier: 10.4.14 + version: 10.4.14(postcss@8.4.21) eslint: - specifier: ^8.35.0 - version: 8.35.0 + specifier: 8.46.0 + version: 8.46.0 eslint-config-next: specifier: 13.3.0 - version: 13.3.0(eslint@8.35.0)(typescript@5.0.4) + version: 13.3.0(eslint@8.46.0)(typescript@5.0.4) + postcss: + specifier: 8.4.21 + version: 8.4.21 + tailwindcss: + specifier: ^3.3.3 + version: 3.3.3(ts-node@10.9.1) + typescript: + specifier: ^5.0.4 + version: 5.0.4 examples/react: dependencies: @@ -195,25 +201,25 @@ importers: version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-altair': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.11.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-dataloader': specifier: ^0.8.0 - version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-upload': specifier: ^0.8.0 - version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0) + version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.7.1) '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.16.3)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.7.1)(utf-8-validate@6.0.3) '@react-hookz/web': specifier: ^22.0.0 version: 22.0.0(react-dom@17.0.2)(react@17.0.2) @@ -234,13 +240,13 @@ importers: version: link:../../packages/gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.7.1 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + version: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) graphql-upload: specifier: ^13.0.0 - version: 13.0.0(graphql@16.6.0) + version: 13.0.0(graphql@16.7.1) ms: specifier: ^2.1.3 version: 2.1.3 @@ -283,16 +289,16 @@ importers: version: 4.14.191 '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 '@types/react': specifier: ^17.0.53 version: 17.0.53 '@types/react-dom': specifier: ^18.0.11 - version: 18.0.11 + version: 18.2.7 bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@5.0.4) + version: 1.1.2(esbuild@0.17.18)(typescript@5.0.4) concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -301,10 +307,10 @@ importers: version: 7.0.3 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -332,43 +338,43 @@ importers: devDependencies: '@types/node': specifier: ^18.15.11 - version: 18.15.11 + version: 18.16.3 '@types/react': specifier: ^18.2.0 - version: 18.2.0 + version: 18.2.17 '@types/react-dom': specifier: ^18.0.11 - version: 18.2.1 + version: 18.2.7 '@vitejs/plugin-react-refresh': specifier: ^1.3.6 version: 1.3.6 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 vite: specifier: ^4.2.1 - version: 4.2.1(@types/node@18.15.11) + version: 4.2.1(@types/node@18.16.3) internal/test-utils: dependencies: '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/fastify-testing': specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1) '@rollup/plugin-babel': specifier: ^6.0.3 - version: 6.0.3(@babel/core@7.21.8) + version: 6.0.3(@babel/core@7.22.9) '@types/jest': specifier: ^29.5.0 - version: 29.5.0 + version: 29.5.1 cross-env: specifier: ^7.0.3 version: 7.0.3 @@ -377,13 +383,13 @@ importers: version: 4.15.0 graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.7.1 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + version: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) jest-watch-typeahead: specifier: ^2.2.2 version: 2.2.2(jest@29.5.0) @@ -399,13 +405,13 @@ importers: devDependencies: '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.16.3)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.7.1)(utf-8-validate@6.0.3) '@jest/types': specifier: ^29.5.0 version: 29.5.0 '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 '@types/randomstring': specifier: ^1.1.8 version: 1.1.8 @@ -414,13 +420,13 @@ importers: version: 4.0.0(bob-esbuild@4.0.3) bob-ts: specifier: ^4.1.1 - version: 4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@5.0.4) + version: 4.1.1(@types/node@18.16.3)(esbuild@0.17.18)(typescript@5.0.4) concurrently: specifier: ^7.6.0 version: 7.6.0 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 tslib: specifier: ^2.5.0 version: 2.5.0 @@ -429,19 +435,19 @@ importers: dependencies: '@graphql-codegen/core': specifier: ^3.1.0 - version: 3.1.0(graphql@16.6.0) + version: 3.1.0(graphql@16.7.1) '@graphql-codegen/typescript': specifier: ^3.0.2 - version: 3.0.2(graphql@16.6.0) + version: 3.0.2(graphql@16.7.1) '@graphql-tools/delegate': specifier: ^9.0.25 - version: 9.0.28(graphql@16.6.0) + version: 9.0.28(graphql@16.7.1) '@graphql-tools/utils': specifier: ^9.2.0 - version: 9.2.1(graphql@16.6.0) + version: 9.2.1(graphql@16.7.1) '@graphql-tools/wrap': specifier: ^9.3.4 - version: 9.3.7(graphql@16.6.0) + version: 9.3.7(graphql@16.7.1) chalk: specifier: ^5.2.0 version: 5.2.0 @@ -462,7 +468,7 @@ importers: version: link:../gqty/dist graphql: specifier: ^16.0.0 - version: 16.6.0 + version: 16.7.1 inquirer: specifier: ^8.2.5 version: 8.2.5 @@ -502,13 +508,13 @@ importers: version: 0.7.31 '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 bob-tsm: specifier: ^1.1.2 - version: 1.1.2(esbuild@0.17.12)(typescript@5.0.4) + version: 1.1.2(esbuild@0.17.18)(typescript@5.0.4) esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -576,7 +582,7 @@ importers: version: 1.0.2 '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 '@types/object-hash': specifier: ^3.0.2 version: 3.0.2 @@ -585,7 +591,7 @@ importers: version: 17.0.53 '@types/react-dom': specifier: ^18.0.11 - version: 18.0.11 + version: 18.2.7 '@types/wait-on': specifier: ^5.3.1 version: 5.3.1 @@ -603,19 +609,19 @@ importers: version: 7.0.3 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.7.1 graphql-sse: specifier: ^2.1.0 - version: 2.1.0(graphql@16.6.0) + version: 2.1.1(graphql@16.7.1) graphql-ws: specifier: ^5.11.3 - version: 5.11.3(graphql@16.6.0) + version: 5.12.1(graphql@16.7.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -642,7 +648,7 @@ importers: version: link:../../internal/test-utils tsc-watch: specifier: ^6.0.0 - version: 6.0.0(typescript@5.0.4) + version: 6.0.0(typescript@5.1.6) type-fest: specifier: ^3.9.0 version: 3.9.0 @@ -665,7 +671,7 @@ importers: version: 8.2.4(size-limit@8.2.4) '@types/node': specifier: ^18.15.5 - version: 18.15.11 + version: 18.16.3 '@types/prettier': specifier: ^2.7.2 version: 2.7.2 @@ -674,13 +680,13 @@ importers: version: 4.0.0(bob-esbuild@4.0.3) esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.18 gqty: specifier: workspace:^ version: link:../gqty/dist jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) size-limit: specifier: ^8.2.4 version: 8.2.4 @@ -733,19 +739,19 @@ importers: version: 18.16.3 '@types/react': specifier: ^18.2.0 - version: 18.2.0 + version: 18.2.17 '@types/react-dom': specifier: ^18.2.1 - version: 18.2.1 + version: 18.2.7 '@types/use-sync-external-store': specifier: ^0.0.3 version: 0.0.3 '@typescript-eslint/eslint-plugin': specifier: ^5.59.2 - version: 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4) + version: 5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: ^5.59.2 - version: 5.59.2(eslint@8.39.0)(typescript@5.0.4) + version: 5.59.2(eslint@8.46.0)(typescript@5.1.6) bob-esbuild-cli: specifier: ^4.0.0 version: 4.0.0(bob-esbuild@4.0.3) @@ -754,7 +760,7 @@ importers: version: 0.17.18 eslint: specifier: ^8.39.0 - version: 8.39.0 + version: 8.46.0 eslint-plugin-you-dont-need-lodash-underscore: specifier: ^6.12.0 version: 6.12.0 @@ -763,13 +769,13 @@ importers: version: link:../gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.7.1 graphql-sse: specifier: ^2.1.1 - version: 2.1.1(graphql@16.6.0) + version: 2.1.1(graphql@16.7.1) graphql-ws: specifier: ^5.12.1 - version: 5.12.1(graphql@16.6.0) + version: 5.12.1(graphql@16.7.1) jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) @@ -816,7 +822,7 @@ importers: devDependencies: '@types/node': specifier: ^18.15.1 - version: 18.15.11 + version: 18.16.3 '@types/ws': specifier: ^8.5.4 version: 8.5.4 @@ -825,13 +831,13 @@ importers: version: 4.0.0(bob-esbuild@4.0.3) esbuild: specifier: ^0.17.10 - version: 0.17.12 + version: 0.17.18 gqty: specifier: workspace:^ version: link:../gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.7.1 test-utils: specifier: workspace:^ version: link:../../internal/test-utils @@ -842,6 +848,11 @@ importers: packages: + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + /@adobe/css-tools@4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} dev: true @@ -849,14 +860,7 @@ packages: /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - dev: false - - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + dev: true /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} @@ -865,24 +869,24 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): + /@ardatan/relay-compiler@12.0.0(graphql@16.7.1): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true peerDependencies: graphql: '*' dependencies: - '@babel/core': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/runtime': 7.21.5 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - babel-preset-fbjs: 3.4.0(@babel/core@7.21.4) + '@babel/core': 7.22.9 + '@babel/generator': 7.22.9 + '@babel/parser': 7.22.7 + '@babel/runtime': 7.22.6 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.9) chalk: 4.1.2 fb-watchman: 2.0.2 fbjs: 3.0.4 glob: 7.2.3 - graphql: 16.6.0 + graphql: 16.7.1 immutable: 3.7.6 invariant: 2.2.4 nullthrows: 1.1.1 @@ -894,115 +898,65 @@ packages: - supports-color dev: false - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - - /@babel/code-frame@7.21.4: - resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 - - /@babel/compat-data@7.21.4: - resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} - engines: {node: '>=6.9.0'} + '@babel/highlight': 7.22.5 - /@babel/compat-data@7.21.7: - resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==} + /@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.21.0: resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.21.1 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.2 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - - /@babel/core@7.21.4: - resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} - engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-module-transforms': 7.21.2 - '@babel/helpers': 7.21.0 - '@babel/parser': 7.21.4 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.0) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/core@7.21.8: - resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==} + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.5 - '@babel/helper-compilation-targets': 7.21.5(@babel/core@7.21.8) - '@babel/helper-module-transforms': 7.21.5 - '@babel/helpers': 7.21.5 - '@babel/parser': 7.21.8 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.21.1: - resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.17 - jsesc: 2.5.2 - - /@babel/generator@7.21.4: - resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - - /@babel/generator@7.21.5: - resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.5 + '@babel/types': 7.22.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 @@ -1011,54 +965,41 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-builder-binary-assignment-operator-visitor@7.18.9: resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 dev: true - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.0): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.21.0): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.9 '@babel/core': 7.21.0 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 - lru-cache: 5.1.1 - semver: 6.3.0 - - /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 - /@babel/helper-compilation-targets@7.21.5(@babel/core@7.21.8): - resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==} + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.21.7 - '@babel/core': 7.21.8 - '@babel/helper-validator-option': 7.21.0 - browserslist: 4.21.5 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.0): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} @@ -1068,32 +1009,32 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.20.7 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.21.4): + /@babel/helper-create-class-features-plugin@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-replace-supers': 7.20.7 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 transitivePeerDependencies: - supports-color dev: false @@ -1115,91 +1056,83 @@ packages: '@babel/core': ^7.4.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.2 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - - /@babel/helper-environment-visitor@7.21.5: - resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} /@babel/helper-explode-assignable-expression@7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 dev: true - /@babel/helper-function-name@7.21.0: - resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-member-expression-to-functions@7.21.0: resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-module-transforms@7.21.2: - resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + /@babel/helper-module-transforms@7.22.9(@babel/core@7.21.0): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.21.0 + '@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-module-transforms@7.21.5: - resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==} + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.21.5 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-simple-access': 7.21.5 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.9 + '@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.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} @@ -1213,9 +1146,9 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true @@ -1224,115 +1157,81 @@ packages: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-member-expression-to-functions': 7.21.0 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/helper-simple-access@7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.21.4 - - /@babel/helper-simple-access@7.21.5: - resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.5 + '@babel/types': 7.22.5 /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 - - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.22.5 - /@babel/helper-string-parser@7.21.5: - resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.21.0: - resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} /@babel/helper-wrap-function@7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.21.0 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4 - '@babel/types': 7.21.4 + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers@7.21.0: - resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + /@babel/helpers@7.22.6: + resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color - /@babel/helpers@7.21.5: - resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==} + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.5 - '@babel/types': 7.21.5 - transitivePeerDependencies: - - supports-color - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.21.2: - resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.4 - - /@babel/parser@7.21.4: - resolution: {integrity: sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.21.4 - - /@babel/parser@7.21.8: - resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==} + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.5 + '@babel/types': 7.22.5 /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.21.0): resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} @@ -1363,7 +1262,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.0) @@ -1384,14 +1283,14 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.21.4): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.21.4) + '@babel/core': 7.22.9 + '@babel/helper-create-class-features-plugin': 7.21.0(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color @@ -1483,26 +1382,26 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.9 '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.0) '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.0) dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.21.4): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.9): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.22.9) dev: false /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.21.0): @@ -1576,36 +1475,20 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.4): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.21.8): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.0): @@ -1617,20 +1500,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.4): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.21.8): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.21.0): @@ -1661,13 +1536,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.21.4): + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -1681,20 +1556,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.21.8): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.0): @@ -1706,29 +1573,21 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.9): resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.0): @@ -1740,20 +1599,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.21.8): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.0): @@ -1765,20 +1616,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.0): @@ -1790,20 +1633,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.4): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.21.8): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.0): @@ -1815,20 +1650,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.0): @@ -1840,20 +1667,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.0): @@ -1865,20 +1684,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.4): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.21.8): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.21.0): @@ -1901,31 +1712,22 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.4): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.21.8): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 - /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.21.4): + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.22.9): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.0): @@ -1938,13 +1740,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.21.4): + /@babel/plugin-transform-arrow-functions@7.20.7(@babel/core@7.22.9): resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -1955,7 +1757,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.21.0) transitivePeerDependencies: @@ -1972,13 +1774,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -1992,13 +1794,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2010,33 +1812,33 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-classes@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 - '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2050,18 +1852,18 @@ packages: dependencies: '@babel/core': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 + '@babel/template': 7.22.5 dev: true - /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.21.4): + /@babel/plugin-transform-computed-properties@7.20.7(@babel/core@7.22.9): resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/template': 7.20.7 + '@babel/template': 7.22.5 dev: false /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.0): @@ -2074,13 +1876,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.21.4): + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.9): resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2116,15 +1918,15 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.4) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.22.9) dev: false /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.0): @@ -2137,13 +1939,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-for-of@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2154,20 +1956,20 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) - '@babel/helper-function-name': 7.21.0 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) + '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.9): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-function-name': 7.21.0 + '@babel/core': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-function-name': 7.22.5 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2181,13 +1983,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.9): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2201,13 +2003,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2218,10 +2020,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.0): @@ -2231,25 +2031,21 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.21.4): + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.22.9): resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-module-transforms': 7.21.2 + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-simple-access': 7.20.2 - transitivePeerDependencies: - - supports-color + '@babel/helper-simple-access': 7.22.5 dev: false /@babel/plugin-transform-modules-systemjs@7.20.11(@babel/core@7.21.0): @@ -2259,12 +2055,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-validator-identifier': 7.22.5 dev: true /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.21.0): @@ -2274,10 +2068,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.21.0 - '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - transitivePeerDependencies: - - supports-color dev: true /@babel/plugin-transform-named-capturing-groups-regex@7.20.5(@babel/core@7.21.0): @@ -2314,13 +2106,13 @@ packages: - supports-color dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: @@ -2337,13 +2129,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.21.4): + /@babel/plugin-transform-parameters@7.21.3(@babel/core@7.22.9): resolution: {integrity: sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2357,58 +2149,58 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.22.9): resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.22.9): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.21.4): + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.22.9): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-module-imports': 7.22.5 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/types': 7.21.4 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.9) + '@babel/types': 7.22.5 dev: false /@babel/plugin-transform-regenerator@7.20.5(@babel/core@7.21.0): @@ -2442,13 +2234,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.21.4): + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.9): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2463,13 +2255,13 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-spread@7.20.7(@babel/core@7.21.4): + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.9): resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: false @@ -2494,13 +2286,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.21.4): + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.9): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@babel/helper-plugin-utils': 7.20.2 dev: false @@ -2541,11 +2333,11 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.9 '@babel/core': 7.21.0 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.0) + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.21.0) '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.21.0 + '@babel/helper-validator-option': 7.22.5 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.21.0) '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7(@babel/core@7.21.0) '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.21.0) @@ -2611,12 +2403,12 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.21.0) '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.21.0) '@babel/preset-modules': 0.1.5(@babel/core@7.21.0) - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.0) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.0) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.0) core-js-compat: 3.30.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -2630,7 +2422,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.21.0) '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.21.0) - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 esutils: 2.0.3 dev: true @@ -2638,91 +2430,43 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.21.0: - resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + /@babel/runtime@7.22.6: + resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime@7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 - - /@babel/template@7.20.7: - resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - - /@babel/traverse@7.21.2: - resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - /@babel/traverse@7.21.4: - resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 - /@babel/traverse@7.21.5: - resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==} + /@babel/traverse@7.22.8: + resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.5 - '@babel/helper-environment-visitor': 7.21.5 - '@babel/helper-function-name': 7.21.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.8 - '@babel/types': 7.21.5 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@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.7 + '@babel/types': 7.22.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@babel/types@7.21.5: - resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.21.5 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -3516,7 +3260,7 @@ packages: /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -3534,7 +3278,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -3552,7 +3296,7 @@ packages: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -3618,7 +3362,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -3634,7 +3378,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3659,7 +3403,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3669,7 +3413,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -3690,7 +3434,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -3711,8 +3455,8 @@ packages: /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: - '@babel/helper-module-imports': 7.21.4 - '@babel/runtime': 7.21.0 + '@babel/helper-module-imports': 7.22.5 + '@babel/runtime': 7.22.6 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -3754,6 +3498,7 @@ packages: /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true dev: false optional: true @@ -3770,7 +3515,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -3806,7 +3551,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) @@ -3841,7 +3586,7 @@ packages: resolution: {integrity: sha512-06t1xCPXq6QFN7W1JUEf68aCwYN0OUDNAIoJe7bAqhaoa2vn7NCcuX1VHkJ/OWpmElUgCsRO6RiBbIru1in0Ig==} dependencies: '@envelop/types': 3.0.2 - tslib: 2.5.0 + tslib: 2.6.1 /@envelop/dataloader@4.0.4(@envelop/core@3.0.6)(dataloader@2.2.2): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} @@ -3851,33 +3596,24 @@ packages: dependencies: '@envelop/core': 3.0.6 dataloader: 2.2.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.6)(graphql@16.6.0): + /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.6)(graphql@16.7.1): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@envelop/core': 3.0.6 - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 dev: false /@envelop/types@3.0.2: resolution: {integrity: sha512-pOFea9ha0EkURWxJ/35axoH9fDGP5S2cUu/5Mmo9pb8zUf+TaEot8vB670XXihFEn/92759BMjLJNWBKmNhyng==} dependencies: - tslib: 2.5.0 - - /@esbuild/android-arm64@0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + tslib: 2.6.1 /@esbuild/android-arm64@0.17.18: resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} @@ -3897,10 +3633,10 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} + /@esbuild/android-arm64@0.18.17: + resolution: {integrity: sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true @@ -3924,10 +3660,10 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.12: - resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} + /@esbuild/android-arm@0.18.17: + resolution: {integrity: sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm] os: [android] requiresBuild: true dev: true @@ -3951,11 +3687,11 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.12: - resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} + /@esbuild/android-x64@0.18.17: + resolution: {integrity: sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==} engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] requiresBuild: true dev: true optional: true @@ -3978,10 +3714,10 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.12: - resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} + /@esbuild/darwin-arm64@0.18.17: + resolution: {integrity: sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: true @@ -4005,11 +3741,11 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.12: - resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} + /@esbuild/darwin-x64@0.18.17: + resolution: {integrity: sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==} engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] requiresBuild: true dev: true optional: true @@ -4032,10 +3768,10 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.12: - resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} + /@esbuild/freebsd-arm64@0.18.17: + resolution: {integrity: sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [freebsd] requiresBuild: true dev: true @@ -4059,11 +3795,11 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + /@esbuild/freebsd-x64@0.18.17: + resolution: {integrity: sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==} engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] requiresBuild: true dev: true optional: true @@ -4086,10 +3822,10 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + /@esbuild/linux-arm64@0.18.17: + resolution: {integrity: sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true @@ -4113,10 +3849,10 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.12: - resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} + /@esbuild/linux-arm@0.18.17: + resolution: {integrity: sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm] os: [linux] requiresBuild: true dev: true @@ -4140,10 +3876,10 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.12: - resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} + /@esbuild/linux-ia32@0.18.17: + resolution: {integrity: sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: true @@ -4167,10 +3903,10 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.12: - resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} + /@esbuild/linux-loong64@0.18.17: + resolution: {integrity: sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [loong64] os: [linux] requiresBuild: true dev: true @@ -4194,10 +3930,10 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.12: - resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} + /@esbuild/linux-mips64el@0.18.17: + resolution: {integrity: sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==} engines: {node: '>=12'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] requiresBuild: true dev: true @@ -4221,10 +3957,10 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.12: - resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} + /@esbuild/linux-ppc64@0.18.17: + resolution: {integrity: sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==} engines: {node: '>=12'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] requiresBuild: true dev: true @@ -4248,10 +3984,10 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.12: - resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} + /@esbuild/linux-riscv64@0.18.17: + resolution: {integrity: sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [riscv64] os: [linux] requiresBuild: true dev: true @@ -4275,10 +4011,10 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.12: - resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} + /@esbuild/linux-s390x@0.18.17: + resolution: {integrity: sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==} engines: {node: '>=12'} - cpu: [x64] + cpu: [s390x] os: [linux] requiresBuild: true dev: true @@ -4302,11 +4038,11 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.12: - resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} + /@esbuild/linux-x64@0.18.17: + resolution: {integrity: sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==} engines: {node: '>=12'} cpu: [x64] - os: [netbsd] + os: [linux] requiresBuild: true dev: true optional: true @@ -4329,11 +4065,11 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.12: - resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} + /@esbuild/netbsd-x64@0.18.17: + resolution: {integrity: sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==} engines: {node: '>=12'} cpu: [x64] - os: [openbsd] + os: [netbsd] requiresBuild: true dev: true optional: true @@ -4356,11 +4092,11 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.12: - resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} + /@esbuild/openbsd-x64@0.18.17: + resolution: {integrity: sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==} engines: {node: '>=12'} cpu: [x64] - os: [sunos] + os: [openbsd] requiresBuild: true dev: true optional: true @@ -4383,11 +4119,11 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.12: - resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} + /@esbuild/sunos-x64@0.18.17: + resolution: {integrity: sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==} engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] requiresBuild: true dev: true optional: true @@ -4410,10 +4146,10 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.12: - resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} + /@esbuild/win32-arm64@0.18.17: + resolution: {integrity: sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true dev: true @@ -4437,10 +4173,10 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.12: - resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} + /@esbuild/win32-ia32@0.18.17: + resolution: {integrity: sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==} engines: {node: '>=12'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true dev: true @@ -4464,30 +4200,39 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.39.0): + /@esbuild/win32-x64@0.18.17: + resolution: {integrity: sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.39.0 - eslint-visitor-keys: 3.4.0 + eslint: 8.46.0 + eslint-visitor-keys: 3.4.2 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.6.2: + resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.2: - resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} + /@eslint/eslintrc@2.1.1: + resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.1 + espree: 9.6.1 globals: 13.20.0 - ignore: 5.2.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4496,13 +4241,8 @@ packages: - supports-color dev: true - /@eslint/js@8.35.0: - resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@eslint/js@8.39.0: - resolution: {integrity: sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==} + /@eslint/js@8.46.0: + resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -4556,175 +4296,175 @@ packages: fastify-plugin: 4.3.0 dev: true - /@graphql-codegen/core@2.6.8(graphql@16.6.0): + /@graphql-codegen/core@2.6.8(graphql@16.7.1): resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/schema': 9.0.17(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/schema': 9.0.17(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 tslib: 2.4.1 dev: false - /@graphql-codegen/core@3.1.0(graphql@16.6.0): + /@graphql-codegen/core@3.1.0(graphql@16.7.1): resolution: {integrity: sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw==} 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': 4.1.0(graphql@16.6.0) - '@graphql-tools/schema': 9.0.17(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.7.1) + '@graphql-tools/schema': 9.0.17(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 tslib: 2.5.0 dev: false - /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): + /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.7.1): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.6.0 + graphql: 16.7.1 import-from: 4.0.0 lodash: 4.17.21 tslib: 2.4.1 dev: false - /@graphql-codegen/plugin-helpers@4.1.0(graphql@16.6.0): + /@graphql-codegen/plugin-helpers@4.1.0(graphql@16.7.1): resolution: {integrity: sha512-xvSHJb9OGb5CODIls0AI1rCenLz+FuiaNPCsfHMCNsLDjOZK2u0jAQ9zUBdc/Wb+21YXZujBCc0Vm1QX+Zz0nw==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.6.0 + graphql: 16.7.1 import-from: 4.0.0 lodash: 4.17.21 tslib: 2.5.0 dev: false - /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): + /@graphql-codegen/schema-ast@2.6.1(graphql@16.7.1): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 tslib: 2.4.1 dev: false - /@graphql-codegen/schema-ast@3.0.1(graphql@16.6.0): + /@graphql-codegen/schema-ast@3.0.1(graphql@16.7.1): resolution: {integrity: sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw==} 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': 4.1.0(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 tslib: 2.5.0 dev: false - /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): + /@graphql-codegen/typed-document-node@2.3.10(graphql@16.7.1): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.7.1) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.6.0 + graphql: 16.7.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript-operations@2.5.10(graphql@16.6.0): + /@graphql-codegen/typescript-operations@2.5.10(graphql@16.7.1): resolution: {integrity: sha512-N5H7JhcMRzjM2KdvCitqkOd4hphzD9q3NVWGLvBe3Xgqx5Cs3Y4GUcCJbRolSXdQcYBVgZpLZrUe/qoxwYyfeg==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.7.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.7.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.6.0): + /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.7.1): resolution: {integrity: sha512-MCts4Vq4l8j5zxbfSjm3bkqYOsMWF9yzzNakYSTWsQZqxqAggsiMz18GTdhQvWCtFt6eKYadVrX3WDZBLuAHOA==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.7.1) + '@graphql-tools/utils': 8.13.1(graphql@16.7.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.7.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript@2.8.8(graphql@16.6.0): + /@graphql-codegen/typescript@2.8.8(graphql@16.7.1): resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-codegen/schema-ast': 2.6.1(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/schema-ast': 2.6.1(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.7.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.7.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript@3.0.2(graphql@16.6.0): + /@graphql-codegen/typescript@3.0.2(graphql@16.7.1): resolution: {integrity: sha512-qD6QkTB+2eJmIaZ6Tihv6HRz7daWWLz9uw5vwCmPeZN6XL2RINZGLkR7D8BQzLDlNGMrpQ4SeSM9o3ZALSCIuQ==} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) - '@graphql-codegen/schema-ast': 3.0.1(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 3.0.2(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.7.1) + '@graphql-codegen/schema-ast': 3.0.1(graphql@16.7.1) + '@graphql-codegen/visitor-plugin-common': 3.0.2(graphql@16.7.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.7.1 tslib: 2.5.0 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): + /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.7.1): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/optimize': 1.3.1(graphql@16.7.1) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.7.1) + '@graphql-tools/utils': 8.13.1(graphql@16.7.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) + graphql: 16.7.1 + graphql-tag: 2.12.6(graphql@16.7.1) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -4732,20 +4472,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.6.0): + /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.7.1): resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-tools/optimize': 1.3.1(graphql@16.7.1) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) + graphql: 16.7.1 + graphql-tag: 2.12.6(graphql@16.7.1) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -4753,20 +4493,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.6.0): + /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.7.1): resolution: {integrity: sha512-dKblRFrB0Fdl3+nPlzlLBka+TN/EGwr/q09mwry0H58z3j6gXkMbsdPr+dc8MhgOV7w/8egRvSPIvd7m6eFCnw==} 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': 4.1.0(graphql@16.6.0) - '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.7.1) + '@graphql-tools/optimize': 1.3.1(graphql@16.7.1) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) + graphql: 16.7.1 + graphql-tag: 2.12.6(graphql@16.7.1) parse-filepath: 1.0.2 tslib: 2.5.0 transitivePeerDependencies: @@ -4774,7 +4514,7 @@ packages: - supports-color dev: false - /@graphql-ez/client@0.6.1(@types/node@18.15.11)(graphql@16.6.0): + /@graphql-ez/client@0.6.1(@types/node@18.16.3)(graphql@16.7.1): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -4784,13 +4524,13 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@types/node': 18.15.11 - graphql: 16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@types/node': 18.16.3 + graphql: 16.7.1 undici: 5.7.0 dev: false - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -4798,18 +4538,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1(@types/node@18.15.11)(graphql@16.6.0) - '@graphql-ez/fastify': 0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-ez/client': 0.6.1(@types/node@18.16.3)(graphql@16.7.1) + '@graphql-ez/fastify': 0.12.0(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1) + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) fastify: 4.15.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' dev: false - /@graphql-ez/fastify@0.12.0(@types/node@18.15.11)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify@0.12.0(@types/node@18.16.3)(fastify@4.15.0)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4824,32 +4564,32 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@types/node': 18.15.11 + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@types/node': 18.16.3 fastify: 4.15.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) dev: false - /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-altair@0.11.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} peerDependencies: '@types/node': '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@types/node': 18.15.11 + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@types/node': 18.16.3 altair-static-slim: 5.0.9 cross-undici-fetch: 0.4.14 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) mime-types: 2.1.35 transitivePeerDependencies: - encoding - graphql dev: false - /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-dv0nW2PAG4EqaFwLn0lmm45rPtQ7yqfP4ega3J3JPHM1qUCBNi/QBTk2X2V3k2bBLCyDzDtXiNNDKgu9ILKW0w==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4859,18 +4599,18 @@ packages: graphql: optional: true dependencies: - '@graphql-codegen/core': 2.6.8(graphql@16.6.0) - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.6.0) - '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.6.0) - '@graphql-tools/load': 7.8.8(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-codegen/core': 2.6.8(graphql@16.7.1) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.7.1) + '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.7.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.7.1) + '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.7.1) + '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.7.1) + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.7.1) + '@graphql-tools/load': 7.8.8(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) mkdirp: 1.0.4 prettier: 2.8.6 transitivePeerDependencies: @@ -4879,22 +4619,22 @@ packages: - supports-color dev: false - /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: '@envelop/dataloader': 4.0.4(@envelop/core@3.0.6)(dataloader@2.2.2) - '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.6.0) + '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.7.1) dataloader: 2.2.2 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) transitivePeerDependencies: - '@envelop/core' - graphql dev: false - /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-schema@0.9.0(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql@16.7.1): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4904,16 +4644,16 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@graphql-tools/schema': 9.0.17(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@graphql-tools/schema': 9.0.17(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.11)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0): + /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.16.3)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.7.1): resolution: {integrity: sha512-R/cE1vT5kZxWe4EpuwV15znWU+GSu4KsUIgdCUYcE897XO1O9+Iadn4K/RyPuRY3tv//6+7Bj5gKruJaFgmsbg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4927,16 +4667,16 @@ packages: graphql-upload: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) '@types/graphql-upload': 16.0.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) - graphql-upload: 13.0.0(graphql@16.6.0) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) + graphql-upload: 13.0.0(graphql@16.7.1) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.11)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): + /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.16.3)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.7.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-jtvw5o3rw3Y6JNFfl+CoybQWdzqy0ml+eHNelHEd1Jd1b/Jbsc9RsIyOHE6uRqOxQhsBi6/1HL+nJCUuW+/n9A==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4946,247 +4686,247 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) '@types/ws': 8.5.4 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.11)(graphql@16.6.0) - graphql-ws: 5.12.1(graphql@16.6.0) - subscriptions-transport-ws-envelop: 2.0.2(graphql@16.6.0)(ws@8.13.0) + graphql: 16.7.1 + graphql-ez: 0.16.0(@types/node@18.16.3)(graphql@16.7.1) + graphql-ws: 5.12.1(graphql@16.7.1) + subscriptions-transport-ws-envelop: 2.0.2(graphql@16.7.1)(ws@8.13.0) ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - '@types/node' - bufferutil - utf-8-validate - /@graphql-ez/utils@0.2.0(@types/node@18.15.11)(graphql@16.6.0): + /@graphql-ez/utils@0.2.0(@types/node@18.16.3)(graphql@16.7.1): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' graphql: '*' dependencies: - '@types/node': 18.15.11 - graphql: 16.6.0 + '@types/node': 18.16.3 + graphql: 16.7.1 - /@graphql-tools/batch-execute@8.5.18(graphql@16.6.0): + /@graphql-tools/batch-execute@8.5.18(graphql@16.7.1): resolution: {integrity: sha512-mNv5bpZMLLwhkmPA6+RP81A6u3KF4CSKLf3VX9hbomOkQR4db8pNs8BOvpZU54wKsUzMzdlws/2g/Dabyb2Vsg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) dataloader: 2.2.2 - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-tools/delegate@9.0.28(graphql@16.6.0): + /@graphql-tools/delegate@9.0.28(graphql@16.7.1): resolution: {integrity: sha512-8j23JCs2mgXqnp+5K0v4J3QBQU/5sXd9miaLvMfRf/6963DznOXTECyS9Gcvj1VEeR5CXIw6+aX/BvRDKDdN1g==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/batch-execute': 8.5.18(graphql@16.6.0) - '@graphql-tools/executor': 0.0.15(graphql@16.6.0) - '@graphql-tools/schema': 9.0.17(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) + '@graphql-tools/batch-execute': 8.5.18(graphql@16.7.1) + '@graphql-tools/executor': 0.0.15(graphql@16.7.1) + '@graphql-tools/schema': 9.0.17(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) dataloader: 2.2.2 - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-tools/executor@0.0.15(graphql@16.6.0): + /@graphql-tools/executor@0.0.15(graphql@16.7.1): resolution: {integrity: sha512-6U7QLZT8cEUxAMXDP4xXVplLi6RBwx7ih7TevlBto66A/qFp3PDb6o/VFo07yBKozr8PGMZ4jMfEWBGxmbGdxA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - '@graphql-typed-document-node/core': 3.1.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + '@graphql-typed-document-node/core': 3.1.2(graphql@16.7.1) '@repeaterjs/repeater': 3.0.4 - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): + /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.7.1): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/import': 6.7.14(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) + '@graphql-tools/import': 6.7.14(graphql@16.7.1) + '@graphql-tools/utils': 9.1.3(graphql@16.7.1) globby: 11.1.0 - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 unixify: 1.0.0 dev: false - /@graphql-tools/import@6.7.14(graphql@16.6.0): + /@graphql-tools/import@6.7.14(graphql@16.7.1): resolution: {integrity: sha512-lRX/MHM0Km497kg4VXMvtV1DeG/AfPJFO2ovaL0kDujWEdyCsWxsB4whY7nPeiNaPA/nT3mQ8MU7yFzVjogF/Q==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.7.1) + graphql: 16.7.1 resolve-from: 5.0.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /@graphql-tools/load@7.8.8(graphql@16.6.0): + /@graphql-tools/load@7.8.8(graphql@16.7.1): resolution: {integrity: sha512-gMuQdO2jXmI0BNUc1MafxRQTWVMUtuH500pZAQtOdDdNJppV7lJdY6mMhITQ2qnhYDuMrcZPHhIkcftyQfkgUg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/schema': 9.0.12(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/schema': 9.0.12(graphql@16.7.1) + '@graphql-tools/utils': 9.1.3(graphql@16.7.1) + graphql: 16.7.1 p-limit: 3.1.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /@graphql-tools/merge@8.3.14(graphql@16.6.0): + /@graphql-tools/merge@8.3.14(graphql@16.7.1): resolution: {integrity: sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/utils': 9.1.3(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/merge@8.3.18(graphql@16.6.0): + /@graphql-tools/merge@8.3.18(graphql@16.7.1): resolution: {integrity: sha512-R8nBglvRWPAyLpZL/f3lxsY7wjnAeE0l056zHhcO/CgpvK76KYUt9oEkR05i8Hmt8DLRycBN0FiotJ0yDQWTVA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/merge@8.4.0(graphql@16.6.0): + /@graphql-tools/merge@8.4.0(graphql@16.7.1): resolution: {integrity: sha512-3XYCWe0d3I4F1azNj1CdShlbHfTIfiDgj00R9uvFH8tHKh7i1IWN3F7QQYovcHKhayaR6zPok3YYMESYQcBoaA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/optimize@1.3.1(graphql@16.6.0): + /@graphql-tools/optimize@1.3.1(graphql@16.7.1): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): + /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.7.1): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@ardatan/relay-compiler': 12.0.0(graphql@16.7.1) + '@graphql-tools/utils': 8.13.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-tools/schema@9.0.12(graphql@16.6.0): + /@graphql-tools/schema@9.0.12(graphql@16.7.1): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.3.14(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/merge': 8.3.14(graphql@16.7.1) + '@graphql-tools/utils': 9.1.3(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.11 dev: false - /@graphql-tools/schema@9.0.16(graphql@16.6.0): + /@graphql-tools/schema@9.0.16(graphql@16.7.1): resolution: {integrity: sha512-kF+tbYPPf/6K2aHG3e1SWIbapDLQaqnIHVRG6ow3onkFoowwtKszvUyOASL6Krcv2x9bIMvd1UkvRf9OaoROQQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.3.18(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/merge': 8.3.18(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-tools/schema@9.0.17(graphql@16.6.0): + /@graphql-tools/schema@9.0.17(graphql@16.7.1): resolution: {integrity: sha512-HVLq0ecbkuXhJlpZ50IHP5nlISqH2GbNgjBJhhRzHeXhfwlUOT4ISXGquWTmuq61K0xSaO0aCjMpxe4QYbKTng==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.4.0(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/merge': 8.4.0(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-tools/utils@8.13.1(graphql@16.6.0): + /@graphql-tools/utils@8.13.1(graphql@16.7.1): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/utils@9.1.3(graphql@16.6.0): + /@graphql-tools/utils@9.1.3(graphql@16.7.1): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/utils@9.2.1(graphql@16.6.0): + /@graphql-tools/utils@9.2.1(graphql@16.7.1): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /@graphql-tools/wrap@9.3.7(graphql@16.6.0): + /@graphql-tools/wrap@9.3.7(graphql@16.7.1): resolution: {integrity: sha512-gavfiWLKgvmC2VPamnMzml3zmkBoo0yt+EmOLIHY6O92o4uMTR281WGM77tZIfq+jzLtjoIOThUSjC/cN/6XKg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/delegate': 9.0.28(graphql@16.6.0) - '@graphql-tools/schema': 9.0.16(graphql@16.6.0) - '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 + '@graphql-tools/delegate': 9.0.28(graphql@16.7.1) + '@graphql-tools/schema': 9.0.16(graphql@16.7.1) + '@graphql-tools/utils': 9.2.1(graphql@16.7.1) + graphql: 16.7.1 + tslib: 2.6.1 value-or-promise: 1.0.12 dev: false - /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): + /@graphql-typed-document-node/core@3.1.2(graphql@16.7.1): resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 + graphql: 16.7.1 dev: false - /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): + /@graphql-typed-document-node/core@3.2.0(graphql@16.7.1): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 + graphql: 16.7.1 dev: false /@hapi/hoek@9.3.0: @@ -5199,8 +4939,8 @@ packages: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array@0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -5403,7 +5143,7 @@ packages: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.21.4 + '@babel/core': 7.22.9 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 babel-plugin-istanbul: 6.1.1 @@ -5415,7 +5155,7 @@ packages: jest-regex-util: 29.4.3 jest-util: 29.5.0 micromatch: 4.0.5 - pirates: 4.0.5 + pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: @@ -5428,25 +5168,10 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.15.11 + '@types/node': 18.16.3 '@types/yargs': 17.0.13 chalk: 4.1.2 - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -5473,12 +5198,6 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: @@ -5494,7 +5213,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -5503,7 +5222,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -5517,7 +5236,7 @@ packages: '@motionone/easing': 10.14.0 '@motionone/types': 10.14.0 '@motionone/utils': 10.14.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@motionone/dom@10.12.0: @@ -5528,14 +5247,14 @@ packages: '@motionone/types': 10.14.0 '@motionone/utils': 10.14.0 hey-listen: 1.0.8 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@motionone/easing@10.14.0: resolution: {integrity: sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==} dependencies: '@motionone/utils': 10.14.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@motionone/generators@10.14.0: @@ -5543,7 +5262,7 @@ packages: dependencies: '@motionone/types': 10.14.0 '@motionone/utils': 10.14.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@motionone/types@10.14.0: @@ -5555,11 +5274,11 @@ packages: dependencies: '@motionone/types': 10.14.0 hey-listen: 1.0.8 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /@next/bundle-analyzer@13.4.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-VDFTWpRI5IFS++37A/eHfVNX8SoB4gbTd8HPUYMHAJ7zpK3t2oW8L+leTlPUw/pAt7Aia2MyYvSYBK4vYKSBlA==} + /@next/bundle-analyzer@13.4.12(bufferutil@4.0.7)(utf-8-validate@6.0.3): + resolution: {integrity: sha512-WjeNsoWGAkbn7XU2jBVkaI7/DVfg2mzRF7spTohsknnwQ/dDgSHlgZj80mt1/SHYconWjZSY0KIWFaxR4/mNsA==} dependencies: webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: @@ -5570,8 +5289,8 @@ packages: /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} - /@next/env@13.4.2: - resolution: {integrity: sha512-Wqvo7lDeS0KGwtwg9TT9wKQ8raelmUxt+TQKWvG/xKfcmDXNOtCuaszcfCF8JzlBG1q0VhpI6CKaRMbVPMDWgw==} + /@next/env@13.4.12: + resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==} dev: false /@next/eslint-plugin-next@13.3.0: @@ -5604,8 +5323,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64@13.4.2: - resolution: {integrity: sha512-6BBlqGu3ewgJflv9iLCwO1v1hqlecaIH2AotpKfVUEzUxuuDNJQZ2a4KLb4MBl8T9/vca1YuWhSqtbF6ZuUJJw==} + /@next/swc-darwin-arm64@13.4.12: + resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -5621,8 +5340,8 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64@13.4.2: - resolution: {integrity: sha512-iZuYr7ZvGLPjPmfhhMl0ISm+z8EiyLBC1bLyFwGBxkWmPXqdJ60mzuTaDSr5WezDwv0fz32HB7JHmRC6JVHSZg==} + /@next/swc-darwin-x64@13.4.12: + resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -5654,8 +5373,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu@13.4.2: - resolution: {integrity: sha512-2xVabFtIge6BJTcJrW8YuUnYTuQjh4jEuRuS2mscyNVOj6zUZkom3CQg+egKOoS+zh2rrro66ffSKIS+ztFJTg==} + /@next/swc-linux-arm64-gnu@13.4.12: + resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5671,8 +5390,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl@13.4.2: - resolution: {integrity: sha512-wKRCQ27xCUJx5d6IivfjYGq8oVngqIhlhSAJntgXLt7Uo9sRT/3EppMHqUZRfyuNBTbykEre1s5166z+pvRB5A==} + /@next/swc-linux-arm64-musl@13.4.12: + resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -5688,8 +5407,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu@13.4.2: - resolution: {integrity: sha512-NpCa+UVhhuNeaFVUP1Bftm0uqtvLWq2JTm7+Ta48+2Uqj2mNXrDIvyn1DY/ZEfmW/1yvGBRaUAv9zkMkMRixQA==} + /@next/swc-linux-x64-gnu@13.4.12: + resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5705,8 +5424,8 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl@13.4.2: - resolution: {integrity: sha512-ZWVC72x0lW4aj44e3khvBrj2oSYj1bD0jESmyah3zG/3DplEy/FOtYkMzbMjHTdDSheso7zH8GIlW6CDQnKhmQ==} + /@next/swc-linux-x64-musl@13.4.12: + resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -5722,8 +5441,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc@13.4.2: - resolution: {integrity: sha512-pLT+OWYpzJig5K4VKhLttlIfBcVZfr2+Xbjra0Tjs83NQSkFS+y7xx+YhCwvpEmXYLIvaggj2ONPyjbiigOvHQ==} + /@next/swc-win32-arm64-msvc@13.4.12: + resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -5739,8 +5458,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@13.4.2: - resolution: {integrity: sha512-dhpiksQCyGca4WY0fJyzK3FxMDFoqMb0Cn+uDB+9GYjpU2K5//UGPQlCwiK4JHxuhg8oLMag5Nf3/IPSJNG8jw==} + /@next/swc-win32-ia32-msvc@13.4.12: + resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -5756,8 +5475,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@13.4.2: - resolution: {integrity: sha512-O7bort1Vld00cu8g0jHZq3cbSTUNMohOEvYqsqE10+yfohhdPHzvzO+ziJRz4Dyyr/fYKREwS7gR4JC0soSOMw==} + /@next/swc-win32-x64-msvc@13.4.12: + resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -5783,23 +5502,23 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@pablosz/graphql-helix@2.0.3(graphql@16.6.0): + /@pablosz/graphql-helix@2.0.3(graphql@16.7.1): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' dependencies: - graphql: 16.6.0 + graphql: 16.7.1 - /@pkgr/utils@2.3.1: - resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 + fast-glob: 3.3.1 is-glob: 4.0.3 - open: 8.4.2 + open: 9.1.0 picocolors: 1.0.0 - tiny-glob: 0.2.9 - tslib: 2.5.0 + tslib: 2.6.1 dev: true /@pnpm/types@8.8.0: @@ -5826,7 +5545,7 @@ packages: prop-types: 15.8.1 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@reach/utils@0.13.2(react-dom@17.0.2)(react@17.0.2): @@ -5838,7 +5557,7 @@ packages: '@types/warning': 3.0.0 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 + tslib: 2.6.1 warning: 4.0.3 dev: false @@ -5851,7 +5570,7 @@ packages: prop-types: 15.8.1 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@react-hookz/deep-equal@1.0.4: @@ -5892,7 +5611,7 @@ packages: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: false - /@rollup/plugin-babel@6.0.3(@babel/core@7.21.8): + /@rollup/plugin-babel@6.0.3(@babel/core@7.22.9): resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5905,8 +5624,8 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.21.8 - '@babel/helper-module-imports': 7.21.4 + '@babel/core': 7.22.9 + '@babel/helper-module-imports': 7.22.5 '@rollup/pluginutils': 5.0.2 dev: false @@ -5932,8 +5651,8 @@ packages: picomatch: 2.3.1 dev: false - /@rushstack/eslint-patch@1.2.0: - resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} + /@rushstack/eslint-patch@1.3.2: + resolution: {integrity: sha512-V+MvGwaHH03hYhY+k6Ef/xKd6RYlc4q8WBx+2ANmipHJcKuktNcI/NgEsJgdSUF6Lw32njT6OnrRsKYCdgHjYw==} dev: true /@sideway/address@4.1.4: @@ -5997,22 +5716,22 @@ packages: /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 /@swc/helpers@0.5.1: resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /@testing-library/dom@9.2.0: resolution: {integrity: sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/runtime': 7.21.5 + '@babel/code-frame': 7.22.5 + '@babel/runtime': 7.22.6 '@types/aria-query': 5.0.1 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 4.1.2 dom-accessibility-api: 0.5.16 lz-string: 1.5.0 @@ -6024,9 +5743,9 @@ packages: engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.2.0 - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.6 '@types/testing-library__jest-dom': 5.14.5 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 @@ -6041,9 +5760,9 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.6 '@testing-library/dom': 9.2.0 - '@types/react-dom': 18.2.4 + '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -6078,20 +5797,11 @@ packages: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core@7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} - dependencies: - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.2 - /@types/babel__core@7.20.0: resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.21.8 - '@babel/types': 7.21.5 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.5 @@ -6099,23 +5809,18 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 - - /@types/babel__traverse@7.18.2: - resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} - dependencies: - '@babel/types': 7.21.4 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 /@types/babel__traverse@7.18.5: resolution: {integrity: sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==} dependencies: - '@babel/types': 7.21.5 + '@babel/types': 7.22.5 /@types/big.js@6.1.6: resolution: {integrity: sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA==} @@ -6181,7 +5886,7 @@ packages: '@types/express': 4.17.14 '@types/koa': 2.13.5 fs-capacitor: 8.0.0 - graphql: 16.6.0 + graphql: 16.7.1 /@types/http-assert@1.5.3: resolution: {integrity: sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==} @@ -6199,7 +5904,7 @@ packages: /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: - ci-info: 3.7.1 + ci-info: 3.8.0 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -6215,19 +5920,11 @@ packages: dependencies: '@types/istanbul-lib-report': 3.0.0 - /@types/jest@29.5.0: - resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: false - /@types/jest@29.5.1: resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 - dev: true /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} @@ -6263,7 +5960,7 @@ packages: '@types/http-errors': 2.0.1 '@types/keygrip': 1.0.2 '@types/koa-compose': 3.2.5 - '@types/node': 18.15.11 + '@types/node': 18.16.3 /@types/lodash-es@4.17.7: resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} @@ -6274,15 +5971,15 @@ packages: /@types/lodash.mergewith@4.6.6: resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} dependencies: - '@types/lodash': 4.14.191 + '@types/lodash': 4.14.194 dev: false /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} + dev: true /@types/lodash@4.14.194: resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} - dev: true /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} @@ -6304,7 +6001,7 @@ packages: /@types/mkdirp@1.0.2: resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.3 dev: true /@types/ms@0.7.31: @@ -6315,12 +6012,13 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.15.11: - resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} - /@types/node@18.16.3: resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} + /@types/node@20.4.5: + resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} + dev: true + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -6349,53 +6047,29 @@ packages: /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} - dependencies: - '@types/react': 18.2.6 - dev: true - - /@types/react-dom@18.2.1: - resolution: {integrity: sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==} - dependencies: - '@types/react': 18.2.6 - dev: true - - /@types/react-dom@18.2.4: - resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} + /@types/react-dom@18.2.7: + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: - '@types/react': 18.2.6 + '@types/react': 18.2.17 dev: true /@types/react@17.0.53: resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} - dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 - - /@types/react@18.2.0: - resolution: {integrity: sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - dev: true - /@types/react@18.2.6: - resolution: {integrity: sha512-wRZClXn//zxCFW+ye/D2qY65UsYP1Fpex2YXorHc8awoNamkMZSvBxwxdYVInsHOZZd2Ppq8isnSzJL5Mpf8OA==} + /@types/react@18.2.17: + resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 dev: true - /@types/scheduler@0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - /@types/scheduler@0.16.3: resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} - dev: true /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} @@ -6423,7 +6097,7 @@ packages: /@types/through@0.0.30: resolution: {integrity: sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.3 dev: true /@types/tough-cookie@4.0.2: @@ -6437,7 +6111,7 @@ packages: /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.3 dev: true /@types/warning@3.0.0: @@ -6447,7 +6121,7 @@ packages: /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.3 /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -6457,7 +6131,7 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 - /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.39.0)(typescript@5.0.4): + /@typescript-eslint/eslint-plugin@5.59.2(@typescript-eslint/parser@5.59.2)(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6468,24 +6142,24 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@eslint-community/regexpp': 4.6.2 + '@typescript-eslint/parser': 5.59.2(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 5.59.2 - '@typescript-eslint/type-utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/type-utils': 5.59.2(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.2(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.39.0 + eslint: 8.46.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.2(eslint@8.35.0)(typescript@5.0.4): + /@typescript-eslint/parser@5.59.2(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6497,16 +6171,16 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 - '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.1.6) debug: 4.3.4 - eslint: 8.35.0 - typescript: 5.0.4 + eslint: 8.46.0 + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.2(eslint@8.39.0)(typescript@5.0.4): - resolution: {integrity: sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==} + /@typescript-eslint/parser@5.62.0(eslint@8.46.0)(typescript@5.0.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -6515,11 +6189,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.2 - '@typescript-eslint/types': 5.59.2 - '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.0.4) debug: 4.3.4 - eslint: 8.39.0 + eslint: 8.46.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color @@ -6533,7 +6207,15 @@ packages: '@typescript-eslint/visitor-keys': 5.59.2 dev: true - /@typescript-eslint/type-utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/type-utils@5.59.2(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6543,12 +6225,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.2(eslint@8.39.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.1.6) + '@typescript-eslint/utils': 5.59.2(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.39.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + eslint: 8.46.0 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true @@ -6558,7 +6240,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.2(typescript@5.0.4): + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.59.2(typescript@5.1.6): resolution: {integrity: sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -6572,28 +6259,49 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.0.4): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.2(eslint@8.39.0)(typescript@5.0.4): + /@typescript-eslint/utils@5.59.2(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.59.2 '@typescript-eslint/types': 5.59.2 - '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.0.4) - eslint: 8.39.0 + '@typescript-eslint/typescript-estree': 5.59.2(typescript@5.1.6) + eslint: 8.46.0 eslint-scope: 5.1.1 - semver: 7.5.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -6604,7 +6312,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.59.2 - eslint-visitor-keys: 3.4.0 + eslint-visitor-keys: 3.4.2 + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.2 dev: true /@vitejs/plugin-react-refresh@1.3.6: @@ -6612,9 +6328,9 @@ packages: engines: {node: '>=12.0.0'} deprecated: This package has been deprecated in favor of @vitejs/plugin-react dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) + '@babel/core': 7.22.9 + '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.22.9) '@rollup/pluginutils': 4.2.1 react-refresh: 0.10.0 transitivePeerDependencies: @@ -6651,33 +6367,27 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.2 + acorn: 8.10.0 acorn-walk: 8.2.0 dev: true - /acorn-jsx@5.3.2(acorn@8.8.1): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.10.0 dev: true /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -6774,7 +6484,7 @@ packages: /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false + dev: true /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} @@ -6796,6 +6506,7 @@ packages: /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -6817,13 +6528,13 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: - deep-equal: 2.2.1 + dequal: 2.0.3 dev: true /array-buffer-byte-length@1.0.0: @@ -6843,9 +6554,9 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -6858,13 +6569,24 @@ packages: engines: {node: '>=0.10.0'} dev: false + /array.prototype.findlastindex@1.2.2: + resolution: {integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==} + engines: {node: '>= 0.4'} + 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 + dev: true + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} 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 es-shim-unscopables: 1.0.0 dev: true @@ -6873,8 +6595,8 @@ packages: engines: {node: '>= 0.4'} 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 es-shim-unscopables: 1.0.0 dev: true @@ -6882,10 +6604,22 @@ packages: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} 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 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 + dev: true + + /arraybuffer.prototype.slice@1.0.1: + resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 dev: true /arrify@1.0.1: @@ -6927,14 +6661,14 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.5 - caniuse-lite: 1.0.30001474 + browserslist: 4.21.9 + caniuse-lite: 1.0.30001517 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss: 8.4.21 postcss-value-parser: 4.2.0 - dev: false + dev: true /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} @@ -6946,13 +6680,13 @@ packages: dependencies: archy: 1.0.0 debug: 4.3.4 - fastq: 1.13.0 + fastq: 1.15.0 transitivePeerDependencies: - supports-color dev: false - /axe-core@4.6.3: - resolution: {integrity: sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==} + /axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} engines: {node: '>=4'} dev: true @@ -6965,23 +6699,23 @@ packages: - debug dev: true - /axobject-query@3.1.1: - resolution: {integrity: sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==} + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: - deep-equal: 2.0.5 + dequal: 2.0.3 dev: true - /babel-jest@29.5.0(@babel/core@7.21.8): + /babel-jest@29.5.0(@babel/core@7.22.9): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@jest/transform': 29.5.0 '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.21.8) + babel-preset-jest: 29.5.0(@babel/core@7.22.9) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -7004,16 +6738,16 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.18.2 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__core': 7.20.0 + '@types/babel__traverse': 7.18.5 /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.21.0 + '@babel/runtime': 7.22.6 cosmiconfig: 7.1.0 resolve: 1.22.2 dev: false @@ -7023,10 +6757,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 + '@babel/compat-data': 7.22.9 '@babel/core': 7.21.0 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.0) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -7058,90 +6792,71 @@ packages: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.4): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.4) - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.21.8): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.9): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.8 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.21.8) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.8) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.21.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.21.8) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.21.8) - - /babel-preset-fbjs@3.4.0(@babel/core@7.21.4): + '@babel/core': 7.22.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) + + /babel-preset-fbjs@3.4.0(@babel/core@7.22.9): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.21.4) - '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.21.4) - '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.21.4) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.21.4) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.21.4) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.21.4) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.21.4) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.21.4) + '@babel/core': 7.22.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-transform-arrow-functions': 7.20.7(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.9) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.9) + '@babel/plugin-transform-computed-properties': 7.20.7(@babel/core@7.22.9) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.9) + '@babel/plugin-transform-flow-strip-types': 7.21.0(@babel/core@7.22.9) + '@babel/plugin-transform-for-of': 7.21.0(@babel/core@7.22.9) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.9) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.9) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.22.9) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.21.3(@babel/core@7.22.9) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.22.9) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.9) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.9) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color dev: false - /babel-preset-jest@29.5.0(@babel/core@7.21.8): + /babel-preset-jest@29.5.0(@babel/core@7.22.9): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.8) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) /backo2@1.0.2: resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} @@ -7172,6 +6887,7 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} + dev: true /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -7191,11 +6907,11 @@ packages: bob-esbuild: optional: true dependencies: - bob-esbuild: 4.0.3(esbuild@0.17.19)(typescript@5.0.4) + bob-esbuild: 4.0.3(esbuild@0.18.17)(typescript@5.0.4) commander: 9.5.0 dev: true - /bob-esbuild-plugin@4.0.0(esbuild@0.17.12)(rollup@2.79.1): + /bob-esbuild-plugin@4.0.0(esbuild@0.17.18)(rollup@2.79.1): resolution: {integrity: sha512-Ymk0kEPc0JhL3eZQVnWpjT4/HMX8Hw7aD5CzqSvNAXeUgaR1+8m5O1RtkP/D42ZwNv+FPgD1wKM4pdoQ4ScmAQ==} peerDependencies: esbuild: '>=0.14.39' @@ -7207,11 +6923,11 @@ packages: optional: true dependencies: '@rollup/pluginutils': 4.2.1 - esbuild: 0.17.12 + esbuild: 0.17.18 rollup: 2.79.1 dev: true - /bob-esbuild-plugin@4.0.0(esbuild@0.17.19)(rollup@2.79.1): + /bob-esbuild-plugin@4.0.0(esbuild@0.18.17)(rollup@2.79.1): resolution: {integrity: sha512-Ymk0kEPc0JhL3eZQVnWpjT4/HMX8Hw7aD5CzqSvNAXeUgaR1+8m5O1RtkP/D42ZwNv+FPgD1wKM4pdoQ4ScmAQ==} peerDependencies: esbuild: '>=0.14.39' @@ -7223,11 +6939,11 @@ packages: optional: true dependencies: '@rollup/pluginutils': 4.2.1 - esbuild: 0.17.19 + esbuild: 0.18.17 rollup: 2.79.1 dev: true - /bob-esbuild@4.0.3(esbuild@0.17.19)(typescript@5.0.4): + /bob-esbuild@4.0.3(esbuild@0.18.17)(typescript@5.0.4): resolution: {integrity: sha512-9AGuh6V5Whsditj5n2oJjWAvHwgadgD2HD0qZ4rEBwY9tpj8YbfYeiaXQQV9qJxwT9oUYOsQE53wPNYBFDIfJA==} peerDependencies: esbuild: '>=0.14.39' @@ -7239,13 +6955,13 @@ packages: optional: true dependencies: '@pnpm/types': 8.8.0 - bob-esbuild-plugin: 4.0.0(esbuild@0.17.19)(rollup@2.79.1) - esbuild: 0.17.19 + bob-esbuild-plugin: 4.0.0(esbuild@0.18.17)(rollup@2.79.1) + esbuild: 0.18.17 rollup: 2.79.1 typescript: 5.0.4 dev: true - /bob-ts@4.1.1(@types/node@18.15.11)(esbuild@0.17.12)(typescript@5.0.4): + /bob-ts@4.1.1(@types/node@18.16.3)(esbuild@0.17.18)(typescript@5.0.4): resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -7259,14 +6975,14 @@ packages: typescript: optional: true dependencies: - '@types/node': 18.15.11 - bob-esbuild-plugin: 4.0.0(esbuild@0.17.12)(rollup@2.79.1) - esbuild: 0.17.12 + '@types/node': 18.16.3 + bob-esbuild-plugin: 4.0.0(esbuild@0.17.18)(rollup@2.79.1) + esbuild: 0.17.18 rollup: 2.79.1 typescript: 5.0.4 dev: true - /bob-ts@4.1.1(@types/node@18.15.11)(esbuild@0.17.19)(typescript@5.0.4): + /bob-ts@4.1.1(@types/node@18.16.3)(esbuild@0.18.17)(typescript@5.0.4): resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -7280,14 +6996,14 @@ packages: typescript: optional: true dependencies: - '@types/node': 18.15.11 - bob-esbuild-plugin: 4.0.0(esbuild@0.17.19)(rollup@2.79.1) - esbuild: 0.17.19 + '@types/node': 18.16.3 + bob-esbuild-plugin: 4.0.0(esbuild@0.18.17)(rollup@2.79.1) + esbuild: 0.18.17 rollup: 2.79.1 typescript: 5.0.4 dev: true - /bob-tsm@1.1.2(esbuild@0.17.12)(typescript@5.0.4): + /bob-tsm@1.1.2(esbuild@0.17.18)(typescript@5.0.4): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -7298,13 +7014,13 @@ packages: typescript: optional: true dependencies: - esbuild: 0.17.12 + esbuild: 0.17.18 typescript: 5.0.4 optionalDependencies: fsevents: 2.3.2 dev: true - /bob-tsm@1.1.2(esbuild@0.17.19)(typescript@5.0.4): + /bob-tsm@1.1.2(esbuild@0.18.17)(typescript@5.0.4): resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} engines: {node: '>=14.13.1'} hasBin: true @@ -7315,7 +7031,7 @@ packages: typescript: optional: true dependencies: - esbuild: 0.17.19 + esbuild: 0.18.17 typescript: 5.0.4 optionalDependencies: fsevents: 2.3.2 @@ -7366,15 +7082,15 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.21.5: - resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001474 - electron-to-chromium: 1.4.284 - node-releases: 2.0.10 - update-browserslist-db: 1.0.10(browserslist@4.21.5) + caniuse-lite: 1.0.30001517 + electron-to-chromium: 1.4.477 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.9) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -7447,7 +7163,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /callsites@3.1.0: @@ -7458,13 +7174,13 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - dev: false + dev: true /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} @@ -7498,14 +7214,14 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001474: - resolution: {integrity: sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q==} + /caniuse-lite@1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 upper-case-first: 2.0.2 dev: false @@ -7577,7 +7293,7 @@ packages: path-case: 3.0.4 sentence-case: 3.0.4 snake-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /changesets-github-release@0.1.0: @@ -7610,10 +7326,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - - /ci-info@3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} - engines: {node: '>=8'} dev: true /ci-info@3.8.0: @@ -7716,7 +7428,7 @@ packages: /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - dev: false + dev: true /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} @@ -7775,14 +7487,14 @@ packages: spawn-command: 0.0.2-1 supports-color: 8.1.1 tree-kill: 1.2.2 - yargs: 17.6.2 + yargs: 17.7.2 dev: true /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 upper-case: 2.0.2 dev: false @@ -7811,7 +7523,7 @@ packages: /core-js-compat@3.30.0: resolution: {integrity: sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==} dependencies: - browserslist: 4.21.5 + browserslist: 4.21.9 dev: true /cosmiconfig@7.1.0: @@ -7853,14 +7565,6 @@ packages: - encoding dev: false - /cross-spawn-async@2.2.5: - resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} - deprecated: cross-spawn no longer requires a build toolchain, use it instead - dependencies: - lru-cache: 4.1.5 - which: 1.3.1 - dev: true - /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: @@ -7912,7 +7616,7 @@ packages: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - dev: false + dev: true /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -7933,9 +7637,6 @@ packages: resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==} dev: false - /csstype@3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -8039,49 +7740,6 @@ packages: /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - /deep-equal@2.0.5: - resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} - dependencies: - call-bind: 1.0.2 - es-get-iterator: 1.1.2 - get-intrinsic: 1.1.3 - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.8 - dev: true - - /deep-equal@2.2.1: - resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.0 - is-arguments: 1.1.1 - is-array-buffer: 3.0.2 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - isarray: 2.0.5 - object-is: 1.1.5 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 - side-channel: 1.0.4 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.9 - dev: true - /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -8103,14 +7761,14 @@ packages: untildify: 4.0.0 dev: true - /default-browser@3.1.0: - resolution: {integrity: sha512-SOHecvSoairSAWxEHP/0qcsld/KtI3DargfEuELQDyHIYmS2EMgdGhHOTC1GxaYr+NLUV6kDroeiSBfnNHnn8w==} - engines: {node: '>=12'} + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 5.1.1 - xdg-default-browser: 2.1.0 + execa: 7.2.0 + titleize: 3.0.0 dev: true /defaults@1.0.4: @@ -8128,14 +7786,6 @@ packages: engines: {node: '>=12'} dev: true - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -8159,6 +7809,11 @@ packages: engines: {node: '>= 0.6.0'} dev: false + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -8181,7 +7836,7 @@ packages: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - dev: false + dev: true /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} @@ -8199,7 +7854,7 @@ packages: /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: false + dev: true /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -8230,7 +7885,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /duplexer@0.1.2: @@ -8241,8 +7896,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium@1.4.477: + resolution: {integrity: sha512-shUVy6Eawp33dFBFIoYbIwLHrX0IZ857AlH9ug2o4rvbWmpaCUdBpQ5Zw39HRrfzAFm4APJE9V+E2A/WB0YqJw==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -8261,8 +7916,8 @@ packages: once: 1.4.0 dev: true - /enhanced-resolve@5.12.0: - resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==} + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -8286,61 +7941,58 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.20.4: - resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} 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-to-primitive: 1.2.1 - function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 + is-typed-array: 1.1.12 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 + 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 unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 dev: true - /es-get-iterator@1.1.2: - resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - dev: true - - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.2 - is-set: 2.0.2 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: @@ -8358,36 +8010,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.17.12: - resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.12 - '@esbuild/android-arm64': 0.17.12 - '@esbuild/android-x64': 0.17.12 - '@esbuild/darwin-arm64': 0.17.12 - '@esbuild/darwin-x64': 0.17.12 - '@esbuild/freebsd-arm64': 0.17.12 - '@esbuild/freebsd-x64': 0.17.12 - '@esbuild/linux-arm': 0.17.12 - '@esbuild/linux-arm64': 0.17.12 - '@esbuild/linux-ia32': 0.17.12 - '@esbuild/linux-loong64': 0.17.12 - '@esbuild/linux-mips64el': 0.17.12 - '@esbuild/linux-ppc64': 0.17.12 - '@esbuild/linux-riscv64': 0.17.12 - '@esbuild/linux-s390x': 0.17.12 - '@esbuild/linux-x64': 0.17.12 - '@esbuild/netbsd-x64': 0.17.12 - '@esbuild/openbsd-x64': 0.17.12 - '@esbuild/sunos-x64': 0.17.12 - '@esbuild/win32-arm64': 0.17.12 - '@esbuild/win32-ia32': 0.17.12 - '@esbuild/win32-x64': 0.17.12 - dev: true - /esbuild@0.17.18: resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} @@ -8448,6 +8070,36 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true + /esbuild@0.18.17: + resolution: {integrity: sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.17 + '@esbuild/android-arm64': 0.18.17 + '@esbuild/android-x64': 0.18.17 + '@esbuild/darwin-arm64': 0.18.17 + '@esbuild/darwin-x64': 0.18.17 + '@esbuild/freebsd-arm64': 0.18.17 + '@esbuild/freebsd-x64': 0.18.17 + '@esbuild/linux-arm': 0.18.17 + '@esbuild/linux-arm64': 0.18.17 + '@esbuild/linux-ia32': 0.18.17 + '@esbuild/linux-loong64': 0.18.17 + '@esbuild/linux-mips64el': 0.18.17 + '@esbuild/linux-ppc64': 0.18.17 + '@esbuild/linux-riscv64': 0.18.17 + '@esbuild/linux-s390x': 0.18.17 + '@esbuild/linux-x64': 0.18.17 + '@esbuild/netbsd-x64': 0.18.17 + '@esbuild/openbsd-x64': 0.18.17 + '@esbuild/sunos-x64': 0.18.17 + '@esbuild/win32-arm64': 0.18.17 + '@esbuild/win32-ia32': 0.18.17 + '@esbuild/win32-x64': 0.18.17 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -8477,7 +8129,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-next@13.3.0(eslint@8.35.0)(typescript@5.0.4): + /eslint-config-next@13.3.0(eslint@8.46.0)(typescript@5.0.4): resolution: {integrity: sha512-6YEwmFBX0VjBd3ODGW9df0Is0FLaRFdMN8eAahQG9CN6LjQ28J8AFr19ngxqMSg7Qv6Uca/3VeeBosJh1bzu0w==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -8487,15 +8139,15 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 13.3.0 - '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/parser': 5.59.2(eslint@8.35.0)(typescript@5.0.4) - eslint: 8.35.0 + '@rushstack/eslint-patch': 1.3.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.0.4) + eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.35.0) - eslint-plugin-react: 7.32.2(eslint@8.35.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.35.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.46.0) + eslint-plugin-react: 7.33.0(eslint@8.46.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.46.0) typescript: 5.0.4 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -8506,13 +8158,13 @@ packages: resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} dependencies: debug: 3.2.7 - is-core-module: 2.11.0 + is-core-module: 2.12.1 resolve: 1.22.2 transitivePeerDependencies: - supports-color dev: true - /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0): + /eslint-import-resolver-typescript@3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0): resolution: {integrity: sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -8520,13 +8172,13 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.12.0 - eslint: 8.35.0 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) - get-tsconfig: 4.5.0 - globby: 13.1.3 - is-core-module: 2.11.0 + enhanced-resolve: 5.15.0 + eslint: 8.46.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) + get-tsconfig: 4.6.2 + globby: 13.2.2 + is-core-module: 2.12.1 is-glob: 4.0.3 synckit: 0.8.5 transitivePeerDependencies: @@ -8536,8 +8188,8 @@ packages: - supports-color dev: true - /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0): - resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8557,17 +8209,17 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.59.2(eslint@8.35.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.0.4) debug: 3.2.7 - eslint: 8.35.0 + eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.27.5)(eslint@8.35.0) + eslint-import-resolver-typescript: 3.5.5(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-plugin-import@2.28.0)(eslint@8.46.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0): + resolution: {integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8576,22 +8228,25 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.59.2(eslint@8.35.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.46.0)(typescript@5.0.4) array-includes: 3.1.6 + array.prototype.findlastindex: 1.2.2 array.prototype.flat: 1.3.1 array.prototype.flatmap: 1.3.1 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.35.0 + eslint: 8.46.0 eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.59.2)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.35.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.5)(eslint@8.46.0) has: 1.0.3 - is-core-module: 2.11.0 + is-core-module: 2.12.1 is-glob: 4.0.3 minimatch: 3.1.2 + object.fromentries: 2.0.6 + object.groupby: 1.0.0 object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 + resolve: 1.22.3 + semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -8599,42 +8254,42 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.35.0): + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.46.0): resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.21.5 - aria-query: 5.1.3 + '@babel/runtime': 7.22.6 + aria-query: 5.3.0 array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 ast-types-flow: 0.0.7 - axe-core: 4.6.3 - axobject-query: 3.1.1 + axe-core: 4.7.2 + axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.35.0 + eslint: 8.46.0 has: 1.0.3 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 language-tags: 1.0.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 - semver: 6.3.0 + semver: 6.3.1 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.35.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.46.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.35.0 + eslint: 8.46.0 dev: true - /eslint-plugin-react@7.32.2(eslint@8.35.0): - resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + /eslint-plugin-react@7.33.0(eslint@8.46.0): + resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -8643,9 +8298,9 @@ packages: array.prototype.flatmap: 1.3.1 array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 - eslint: 8.35.0 + eslint: 8.46.0 estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 + jsx-ast-utils: 3.3.5 minimatch: 3.1.2 object.entries: 1.1.6 object.fromentries: 2.0.6 @@ -8653,7 +8308,7 @@ packages: object.values: 1.1.6 prop-types: 15.8.1 resolve: 2.0.0-next.4 - semver: 6.3.0 + semver: 6.3.1 string.prototype.matchall: 4.0.8 dev: true @@ -8672,50 +8327,29 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.35.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.35.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys@3.4.0: - resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + /eslint-visitor-keys@3.4.2: + resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.35.0: - resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} + /eslint@8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.35.0 - '@humanwhocodes/config-array': 0.11.8 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/regexpp': 4.6.2 + '@eslint/eslintrc': 2.1.1 + '@eslint/js': 8.46.0 + '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -8724,10 +8358,9 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0(eslint@8.35.0) - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.2 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -8735,84 +8368,31 @@ packages: find-up: 5.0.0 glob-parent: 6.0.2 globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.0 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.4.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@8.39.0: - resolution: {integrity: sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.39.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.2 - '@eslint/js': 8.39.0 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.0 - espree: 9.5.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.1 + optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@9.5.1: - resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) - eslint-visitor-keys: 3.4.0 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.2 dev: true /esprima@4.0.1: @@ -8877,17 +8457,6 @@ packages: engines: {node: '>=0.8.x'} dev: false - /execa@0.2.2: - resolution: {integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ==} - engines: {node: '>=0.12'} - dependencies: - cross-spawn-async: 2.2.5 - npm-run-path: 1.0.0 - object-assign: 4.1.1 - path-key: 1.0.0 - strip-eof: 1.0.0 - dev: true - /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} @@ -8917,6 +8486,21 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} @@ -8970,6 +8554,17 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + dev: false + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -9029,18 +8624,12 @@ packages: proxy-addr: 2.0.7 rfdc: 1.3.0 secure-json-parse: 2.5.0 - semver: 7.3.8 + semver: 7.5.4 tiny-lru: 10.0.1 transitivePeerDependencies: - supports-color dev: false - /fastq@1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} - dependencies: - reusify: 1.0.4 - dev: false - /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -9156,7 +8745,7 @@ packages: resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} engines: {node: '>=10'} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /follow-redirects@1.15.2: @@ -9203,7 +8792,7 @@ packages: /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} - dev: false + dev: true /framer-motion@6.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} @@ -9218,7 +8807,7 @@ packages: react: 17.0.2 react-dom: 17.0.2(react@17.0.2) style-value-types: 5.0.0 - tslib: 2.5.0 + tslib: 2.6.1 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false @@ -9226,13 +8815,13 @@ packages: /framesync@5.3.0: resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /framesync@6.0.1: resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /from@0.1.7: @@ -9252,7 +8841,7 @@ packages: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 dev: true @@ -9261,7 +8850,7 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 dev: true @@ -9284,8 +8873,8 @@ packages: engines: {node: '>= 0.4'} 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 functions-have-names: 1.2.3 dev: true @@ -9301,19 +8890,12 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - - /get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -9347,11 +8929,13 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.5.0: - resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + /get-tsconfig@4.6.2: + resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} + dependencies: + resolve-pkg-maps: 1.0.0 dev: true /glob-parent@5.1.2: @@ -9365,6 +8949,11 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: false /glob@7.1.6: resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} @@ -9375,7 +8964,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: false + dev: true /glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} @@ -9419,8 +9008,11 @@ packages: type-fest: 0.20.2 dev: true - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 dev: true /globby@11.1.0: @@ -9429,8 +9021,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.0 + fast-glob: 3.3.1 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -9439,25 +9031,29 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.0 + fast-glob: 3.3.1 + ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 dev: true - /globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 dev: true /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 dev: true - /graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -9465,7 +9061,11 @@ packages: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphql-ez@0.16.0(@types/node@18.15.11)(graphql@16.6.0): + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /graphql-ez@0.16.0(@types/node@18.16.3)(graphql@16.7.1): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -9476,42 +9076,33 @@ packages: dependencies: '@envelop/core': 3.0.6 '@envelop/types': 3.0.2 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.11)(graphql@16.6.0) - '@pablosz/graphql-helix': 2.0.3(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.16.3)(graphql@16.7.1) + '@pablosz/graphql-helix': 2.0.3(graphql@16.7.1) + graphql: 16.7.1 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' - /graphql-sse@2.1.0(graphql@16.6.0): - resolution: {integrity: sha512-N1e/MqBzAAw27NZ8rsX3SBbgJ/gUBTOnkn9C1wiS7HpchQopPlURDjH3ROSuHqRePepD39itQi1Woy+gIjvz8w==} - engines: {node: '>=12'} - peerDependencies: - graphql: '>=0.11 <=16' - dependencies: - graphql: 16.6.0 - dev: true - - /graphql-sse@2.1.1(graphql@16.6.0): + /graphql-sse@2.1.1(graphql@16.7.1): resolution: {integrity: sha512-lOBG4ScQe9Acv0PodlavTmIuB8kwD4LRvUuXrFm9Ahgi460R2QP+6GgBUOlrAglscIF1P+U+tHJNjO27c3gOOw==} engines: {node: '>=12'} peerDependencies: graphql: '>=0.11 <=16' dependencies: - graphql: 16.6.0 + graphql: 16.7.1 dev: true - /graphql-tag@2.12.6(graphql@16.6.0): + /graphql-tag@2.12.6(graphql@16.7.1): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: graphql: ^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: 16.6.0 - tslib: 2.5.0 + graphql: 16.7.1 + tslib: 2.6.1 dev: false - /graphql-upload@13.0.0(graphql@16.6.0): + /graphql-upload@13.0.0(graphql@16.7.1): resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==} engines: {node: ^12.22.0 || ^14.17.0 || >= 16.0.0} peerDependencies: @@ -9519,30 +9110,21 @@ packages: dependencies: busboy: 0.3.1 fs-capacitor: 6.2.0 - graphql: 16.6.0 + graphql: 16.7.1 http-errors: 1.8.1 object-path: 0.11.8 dev: false - /graphql-ws@5.11.3(graphql@16.6.0): - resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} - engines: {node: '>=10'} - peerDependencies: - graphql: '>=0.11 <=16' - dependencies: - graphql: 16.6.0 - dev: true - - /graphql-ws@5.12.1(graphql@16.6.0): + /graphql-ws@5.12.1(graphql@16.7.1): resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} engines: {node: '>=10'} peerDependencies: graphql: '>=0.11 <=16' dependencies: - graphql: 16.6.0 + graphql: 16.7.1 - /graphql@16.6.0: - resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} + /graphql@16.7.1: + resolution: {integrity: sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} /gzip-size@6.0.0: @@ -9572,7 +9154,12 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} dev: true /has-symbols@1.0.3: @@ -9597,7 +9184,7 @@ packages: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /hey-listen@1.0.8: @@ -9683,6 +9270,11 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -9705,14 +9297,9 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore@5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} - engines: {node: '>= 4'} - /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} @@ -9787,20 +9374,11 @@ packages: wrap-ansi: 7.0.0 dev: false - /internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.3 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.0 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -9824,20 +9402,12 @@ packages: is-windows: 1.0.2 dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: true - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 dev: true /is-arrayish@0.2.1: @@ -9854,6 +9424,7 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 + dev: true /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} @@ -9872,17 +9443,11 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.7.1 - dev: true - - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 + ci-info: 3.8.0 dev: true - /is-core-module@2.12.0: - resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 @@ -9939,13 +9504,9 @@ packages: /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -10001,10 +9562,6 @@ packages: is-unc-path: 1.0.0 dev: false - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: @@ -10041,26 +9598,11 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} 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 - dev: true - - /is-typed-array@1.1.9: - resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-abstract: 1.20.4 - for-each: 0.3.3 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.11 dev: true /is-unc-path@1.0.0: @@ -10078,26 +9620,15 @@ packages: /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - dev: true - /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -10139,11 +9670,11 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.21.8 - '@babel/parser': 7.21.8 + '@babel/core': 7.22.9 + '@babel/parser': 7.22.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10209,33 +9740,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - /jest-cli@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10262,46 +9766,6 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - - /jest-config@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.21.8 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.11 - babel-jest: 29.5.0(@babel/core@7.21.8) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - transitivePeerDependencies: - - supports-color /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} @@ -10315,11 +9779,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.16.3 - babel-jest: 29.5.0(@babel/core@7.21.8) + babel-jest: 29.5.0(@babel/core@7.22.9) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -10338,7 +9802,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) + ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.0.4) transitivePeerDependencies: - supports-color @@ -10443,7 +9907,7 @@ packages: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.5 '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -10508,7 +9972,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.11 + '@types/node': 18.16.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10538,7 +10002,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.11 + '@types/node': 18.16.3 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -10560,18 +10024,18 @@ packages: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.21.4 - '@babel/generator': 7.21.1 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.21.4) - '@babel/traverse': 7.21.2 - '@babel/types': 7.21.4 + '@babel/core': 7.22.9 + '@babel/generator': 7.22.9 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.9) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.22.9) + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.2 + '@types/babel__traverse': 7.18.5 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.21.4) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -10582,7 +10046,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -10616,7 +10080,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) jest-regex-util: 29.4.3 jest-watcher: 29.5.0 slash: 5.0.0 @@ -10630,40 +10094,21 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 18.15.11 + '@types/node': 18.16.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 jest-util: 29.5.0 - string-length: 4.0.2 - - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 18.16.3 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - /jest@29.5.0(@types/node@18.15.11)(ts-node@10.9.1): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + string-length: 4.0.2 + + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node + '@types/node': 18.16.3 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 /jest@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} @@ -10683,12 +10128,11 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - /jiti@1.18.2: - resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} + /jiti@1.19.1: + resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==} hasBin: true - dev: false + dev: true /joi@17.7.0: resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} @@ -10700,10 +10144,6 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /js-sdsl@4.4.0: - resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} - dev: true - /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -10730,7 +10170,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.2 + acorn: 8.10.0 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -10789,7 +10229,7 @@ packages: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /json5@2.2.3: @@ -10803,12 +10243,14 @@ packages: graceful-fs: 4.2.11 dev: true - /jsx-ast-utils@3.3.3: - resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: array-includes: 3.1.6 + array.prototype.flat: 1.3.1 object.assign: 4.1.4 + object.values: 1.1.6 dev: true /just-extend@6.2.0: @@ -10854,7 +10296,7 @@ packages: dev: true /language-tags@1.0.5: - resolution: {integrity: sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=} + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -10890,6 +10332,7 @@ packages: /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + dev: true /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10967,13 +10410,13 @@ packages: /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /lru-cache@4.1.5: @@ -11008,7 +10451,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -11112,6 +10555,11 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -11138,8 +10586,8 @@ packages: kind-of: 6.0.3 dev: true - /minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /minipass@4.2.4: @@ -11214,12 +10662,7 @@ packages: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: false - - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + dev: true /nanoid@3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} @@ -11264,7 +10707,7 @@ packages: dependencies: '@next/env': 12.3.4 '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001474 + caniuse-lite: 1.0.30001517 postcss: 8.4.14 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -11288,14 +10731,13 @@ packages: - '@babel/core' - babel-plugin-macros - /next@13.4.2(@babel/core@7.21.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aNFqLs3a3nTGvLWlO9SUhCuMUHVPSFQC0+tDNGAsDXqx+WJDFSbvc233gOJ5H19SBc7nw36A9LwQepOJ2u/8Kg==} + /next@13.4.12(@babel/core@7.22.9)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==} engines: {node: '>=16.8.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 fibers: '>= 3.1.0' - node-sass: ^6.0.0 || ^7.0.0 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 @@ -11304,30 +10746,29 @@ packages: optional: true fibers: optional: true - node-sass: - optional: true sass: optional: true dependencies: - '@next/env': 13.4.2 + '@next/env': 13.4.12 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001474 + caniuse-lite: 1.0.30001517 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.21.8)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.22.9)(react@18.2.0) + watchpack: 2.4.0 zod: 3.21.4 optionalDependencies: - '@next/swc-darwin-arm64': 13.4.2 - '@next/swc-darwin-x64': 13.4.2 - '@next/swc-linux-arm64-gnu': 13.4.2 - '@next/swc-linux-arm64-musl': 13.4.2 - '@next/swc-linux-x64-gnu': 13.4.2 - '@next/swc-linux-x64-musl': 13.4.2 - '@next/swc-win32-arm64-msvc': 13.4.2 - '@next/swc-win32-ia32-msvc': 13.4.2 - '@next/swc-win32-x64-msvc': 13.4.2 + '@next/swc-darwin-arm64': 13.4.12 + '@next/swc-darwin-x64': 13.4.12 + '@next/swc-linux-arm64-gnu': 13.4.12 + '@next/swc-linux-arm64-musl': 13.4.12 + '@next/swc-linux-x64-gnu': 13.4.12 + '@next/swc-linux-x64-musl': 13.4.12 + '@next/swc-win32-arm64-msvc': 13.4.12 + '@next/swc-win32-ia32-msvc': 13.4.12 + '@next/swc-win32-x64-msvc': 13.4.12 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -11337,7 +10778,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /node-cleanup@2.1.2: @@ -11374,8 +10815,8 @@ packages: rwlock: 5.0.0 dev: false - /node-releases@2.0.10: - resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -11391,8 +10832,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.0 - semver: 7.5.0 + is-core-module: 2.12.1 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -11401,8 +10842,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.12.0 - semver: 7.5.0 + is-core-module: 2.12.1 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -11420,13 +10861,6 @@ packages: /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - dev: false - - /npm-run-path@1.0.0: - resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==} - engines: {node: '>=0.10.0'} - dependencies: - path-key: 1.0.0 dev: true /npm-run-path@4.0.1: @@ -11435,6 +10869,13 @@ packages: dependencies: path-key: 3.1.1 + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} dev: false @@ -11450,18 +10891,9 @@ packages: /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - dev: false - - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true /object-keys@1.1.1: @@ -11479,7 +10911,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -11489,8 +10921,8 @@ packages: engines: {node: '>= 0.4'} 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 dev: true /object.fromentries@2.0.6: @@ -11498,15 +10930,24 @@ packages: engines: {node: '>= 0.4'} 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 + dev: true + + /object.groupby@1.0.0: + resolution: {integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 dev: true /object.hasown@1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.22.1 dev: true /object.values@1.1.6: @@ -11514,8 +10955,8 @@ packages: engines: {node: '>= 0.4'} 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 dev: true /obliterator@2.0.4: @@ -11542,6 +10983,13 @@ packages: dependencies: mimic-fn: 2.1.0 + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + /open-cli@7.2.0: resolution: {integrity: sha512-1ANJc8oJ92FiaNZ0o2Hw4WBvDJoXs1P74aFMtpAvlbkIPV4uPcQvDz7V6kMOrsZkmB4tglrHVMlLQaafuUuxXg==} engines: {node: '>=14.16'} @@ -11550,7 +10998,7 @@ packages: file-type: 18.2.1 get-stdin: 9.0.0 meow: 11.0.0 - open: 9.0.0 + open: 9.1.0 tempy: 3.0.0 dev: true @@ -11563,11 +11011,11 @@ packages: is-wsl: 2.2.0 dev: true - /open@9.0.0: - resolution: {integrity: sha512-yerrN5WPzgwuE3T6rxAkT1UuMLDzs4Szpug7hy9s4gru3iOTnaU0yKc1AYOVYrBzvykce5gUdr9RPNB4R+Zc/A==} + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} engines: {node: '>=14.16'} dependencies: - default-browser: 3.1.0 + default-browser: 4.0.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 is-wsl: 2.2.0 @@ -11590,16 +11038,16 @@ packages: word-wrap: 1.2.3 dev: true - /optionator@0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - word-wrap: 1.2.3 dev: true /ora@5.4.1: @@ -11698,7 +11146,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /parent-module@1.0.1: @@ -11720,7 +11168,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -11735,14 +11183,14 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /path-exists@4.0.0: @@ -11762,15 +11210,15 @@ packages: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} dev: true - /path-key@1.0.0: - resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==} - engines: {node: '>=0.10.0'} - dev: true - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -11823,7 +11271,7 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: false + dev: true /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} @@ -11858,8 +11306,8 @@ packages: thread-stream: 2.2.0 dev: false - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} /pkg-dir@4.2.0: @@ -11874,32 +11322,32 @@ packages: framesync: 6.0.1 hey-listen: 1.0.8 style-value-types: 5.0.0 - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /postcss-import@15.1.0(postcss@8.4.23): + /postcss-import@15.1.0(postcss@8.4.27): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.23 + postcss: 8.4.27 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.2 - dev: false + dev: true - /postcss-js@4.0.1(postcss@8.4.23): + /postcss-js@4.0.1(postcss@8.4.27): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.23 - dev: false + postcss: 8.4.27 + dev: true - /postcss-load-config@4.0.1(postcss@8.4.23)(ts-node@10.9.1): + /postcss-load-config@4.0.1(postcss@8.4.27)(ts-node@10.9.1): resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} engines: {node: '>= 14'} peerDependencies: @@ -11912,32 +11360,32 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.23 - ts-node: 10.9.1(@types/node@18.15.11)(typescript@5.0.4) - yaml: 2.2.2 - dev: false + postcss: 8.4.27 + ts-node: 10.9.1(@types/node@18.16.3)(typescript@5.0.4) + yaml: 2.3.1 + dev: true - /postcss-nested@6.0.1(postcss@8.4.23): + /postcss-nested@6.0.1(postcss@8.4.27): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.23 - postcss-selector-parser: 6.0.11 - dev: false + postcss: 8.4.27 + postcss-selector-parser: 6.0.13 + dev: true - /postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false + dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false + dev: true /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} @@ -11951,18 +11399,19 @@ packages: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true - /postcss@8.4.23: - resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + /postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: false + dev: true /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} @@ -12016,7 +11465,7 @@ packages: chalk: 3.0.0 execa: 4.1.0 find-up: 4.1.0 - ignore: 5.2.0 + ignore: 5.2.4 mri: 1.2.0 multimatch: 4.0.0 prettier: 2.8.6 @@ -12086,14 +11535,9 @@ packages: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /pure-rand@6.0.0: resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} @@ -12142,7 +11586,7 @@ packages: dependencies: deep-extend: 0.6.0 ini: 1.3.8 - minimist: 1.2.7 + minimist: 1.2.8 strip-json-comments: 2.0.1 dev: true @@ -12151,7 +11595,7 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.6 react: 17.0.2 dev: false @@ -12183,7 +11627,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.6 focus-lock: 0.9.2 prop-types: 15.8.1 react: 17.0.2 @@ -12230,7 +11674,7 @@ packages: '@types/react': 17.0.53 react: 17.0.2 react-style-singleton: 2.2.1(@types/react@17.0.53)(react@17.0.2) - tslib: 2.5.0 + tslib: 2.6.1 dev: false /react-remove-scroll@2.4.1(@types/react@17.0.53)(react@17.0.2): @@ -12284,7 +11728,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 17.0.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /react-test-renderer@18.2.0(react@18.2.0): @@ -12315,7 +11759,7 @@ packages: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} dependencies: pify: 2.3.0 - dev: false + dev: true /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} @@ -12359,7 +11803,7 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 @@ -12395,6 +11839,7 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 + dev: true /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} @@ -12434,16 +11879,7 @@ packages: /regenerator-transform@0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.21.0 - dev: true - - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 + '@babel/runtime': 7.22.6 dev: true /regexp.prototype.flags@1.5.0: @@ -12455,11 +11891,6 @@ packages: functions-have-names: 1.2.3 dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -12480,7 +11911,7 @@ packages: dev: true /registry-url@3.1.0: - resolution: {integrity: sha1-PU74cPc93h138M+aOBQyRE4XSUI=} + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 @@ -12496,7 +11927,7 @@ packages: /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.22.6 fbjs: 3.0.4 invariant: 2.2.4 transitivePeerDependencies: @@ -12536,32 +11967,36 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.3: + resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: - is-core-module: 2.12.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -12642,7 +12077,17 @@ packages: /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 + + /safe-array-concat@1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -12655,7 +12100,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: true @@ -12700,8 +12145,8 @@ packages: hasBin: true dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true /semver@7.3.8: @@ -12710,20 +12155,20 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true - /semver@7.5.0: - resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 upper-case-first: 2.0.2 dev: false @@ -12812,8 +12257,8 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 dev: true /signal-exit@3.0.7: @@ -12879,7 +12324,7 @@ packages: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /sonic-boom@3.2.0: @@ -12954,7 +12399,7 @@ packages: /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /sprintf-js@1.0.3: @@ -12971,13 +12416,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.5 - dev: true - /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: @@ -13041,29 +12479,38 @@ packages: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - get-intrinsic: 1.1.3 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 has-symbols: 1.0.3 - internal-slot: 1.0.3 - regexp.prototype.flags: 1.4.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 dev: true - /string.prototype.trimend@1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} 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 dev: true - /string.prototype.trimstart@1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} 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 dev: true /string_decoder@1.3.0: @@ -13092,15 +12539,15 @@ packages: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -13136,7 +12583,7 @@ packages: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: hey-listen: 1.0.8 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /styled-jsx@5.0.7(@babel/core@7.21.0)(react@17.0.2): @@ -13155,7 +12602,7 @@ packages: '@babel/core': 7.21.0 react: 17.0.2 - /styled-jsx@5.1.1(@babel/core@7.21.8)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.22.9)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -13168,7 +12615,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 client-only: 0.0.1 react: 18.2.0 dev: false @@ -13177,7 +12624,7 @@ packages: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /subscriptions-transport-ws-envelop@2.0.2(graphql@16.6.0)(ws@8.13.0): + /subscriptions-transport-ws-envelop@2.0.2(graphql@16.7.1)(ws@8.13.0): resolution: {integrity: sha512-HMwQgdiMBgWC48LplRtDsgrdQKnsns7VvLZTN1eIFNT01XJd6yuuudrl85TbO5QnTAiw6g2Sh5bjTFYKjFIGwQ==} peerDependencies: graphql: '>=0.10.0' @@ -13185,14 +12632,14 @@ packages: dependencies: backo2: 1.0.2 eventemitter3: 4.0.7 - graphql: 16.6.0 + graphql: 16.7.1 isomorphic-ws: 4.0.1(ws@8.13.0) iterall: 1.3.0 symbol-observable: 4.0.0 ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /sucrase@3.32.0: - resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} engines: {node: '>=8'} hasBin: true dependencies: @@ -13201,9 +12648,9 @@ packages: glob: 7.1.6 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.5 + pirates: 4.0.6 ts-interface-checker: 0.1.13 - dev: false + dev: true /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} @@ -13230,7 +12677,7 @@ packages: /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /symbol-observable@4.0.0: @@ -13245,12 +12692,12 @@ packages: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.3.1 - tslib: 2.5.0 + '@pkgr/utils': 2.4.2 + tslib: 2.6.1 dev: true - /tailwindcss@3.3.2(ts-node@10.9.1): - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} + /tailwindcss@3.3.3(ts-node@10.9.1): + resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -13259,27 +12706,26 @@ packages: chokidar: 3.5.3 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.2.12 + fast-glob: 3.3.1 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.18.2 + jiti: 1.19.1 lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.23 - postcss-import: 15.1.0(postcss@8.4.23) - postcss-js: 4.0.1(postcss@8.4.23) - postcss-load-config: 4.0.1(postcss@8.4.23)(ts-node@10.9.1) - postcss-nested: 6.0.1(postcss@8.4.23) - postcss-selector-parser: 6.0.11 - postcss-value-parser: 4.2.0 + postcss: 8.4.27 + postcss-import: 15.1.0(postcss@8.4.27) + postcss-js: 4.0.1(postcss@8.4.27) + postcss-load-config: 4.0.1(postcss@8.4.27)(ts-node@10.9.1) + postcss-nested: 6.0.1(postcss@8.4.27) + postcss-selector-parser: 6.0.13 resolve: 1.22.2 - sucrase: 3.32.0 + sucrase: 3.34.0 transitivePeerDependencies: - ts-node - dev: false + dev: true /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -13323,13 +12769,13 @@ packages: engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 - dev: false + dev: true /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 - dev: false + dev: true /thread-stream@2.2.0: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} @@ -13340,13 +12786,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - dev: true - /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false @@ -13358,12 +12797,12 @@ packages: /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false - /titleize@1.0.1: - resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} - engines: {node: '>=0.10.0'} + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} dev: true /tmp-promise@3.0.3: @@ -13466,9 +12905,9 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false + dev: true - /ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.17.19)(jest@29.5.0)(typescript@5.0.4): + /ts-jest@29.1.0(@babel/core@7.22.9)(esbuild@0.18.17)(jest@29.5.0)(typescript@5.0.4): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -13489,21 +12928,21 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.21.8 + '@babel/core': 7.22.9 bs-logger: 0.2.6 - esbuild: 0.17.19 + esbuild: 0.18.17 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.15.11)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.8 + semver: 7.5.4 typescript: 5.0.4 yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.15.11)(typescript@5.0.4): + /ts-node@10.9.1(@types/node@18.16.3)(typescript@5.0.4): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13522,8 +12961,8 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.11 - acorn: 8.8.1 + '@types/node': 18.16.3 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -13533,7 +12972,7 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsc-watch@6.0.0(typescript@5.0.4): + /tsc-watch@6.0.0(typescript@5.1.6): resolution: {integrity: sha512-zgpju+/z5z29/kK5V28Nz16CMkX2voFOUxkTlCim/R25hxzbyUqu2NfTnmJBQfESBSPbEQUGqDdB9A8opAcB4A==} engines: {node: '>=12.12.0'} hasBin: true @@ -13544,7 +12983,7 @@ packages: node-cleanup: 2.1.2 ps-tree: 1.2.0 string-argv: 0.3.1 - typescript: 5.0.4 + typescript: 5.1.6 dev: true /tsconfig-paths@3.14.2: @@ -13552,7 +12991,7 @@ packages: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 - minimist: 1.2.7 + minimist: 1.2.8 strip-bom: 3.0.0 dev: true @@ -13566,6 +13005,9 @@ packages: /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.6.1: + resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} + /tsutils@3.21.0(typescript@5.0.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -13576,6 +13018,16 @@ packages: typescript: 5.0.4 dev: true + /tsutils@3.21.0(typescript@5.1.6): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 + dev: true + /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} @@ -13587,7 +13039,7 @@ packages: smartwrap: 2.0.2 strip-ansi: 6.0.1 wcwidth: 1.0.1 - yargs: 17.6.2 + yargs: 17.7.2 dev: true /type-check@0.3.2: @@ -13645,11 +13097,55 @@ packages: resolution: {integrity: sha512-hR8JP2e8UiH7SME5JZjsobBlEiatFoxpzCP+R3ZeCo7kAaG1jXQE5X/buLzogM6GJu8le9Y4OcfNuIQX0rZskA==} engines: {node: '>=14.16'} + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} hasBin: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: false @@ -13725,13 +13221,13 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.5): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.5 + browserslist: 4.21.9 escalade: 3.1.1 picocolors: 1.0.0 @@ -13745,19 +13241,19 @@ packages: /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: - tslib: 2.5.0 + tslib: 2.6.1 dev: false /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.3.0 /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -13778,7 +13274,7 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /use-sidecar@1.1.2(@types/react@17.0.53)(react@17.0.2): @@ -13794,7 +13290,7 @@ packages: '@types/react': 17.0.53 detect-node-es: 1.1.0 react: 17.0.2 - tslib: 2.5.0 + tslib: 2.6.1 dev: false /use-sync-external-store@1.2.0(patch_hash=zifctuasxutqued7wp7lp4536i)(react@17.0.2): @@ -13857,7 +13353,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite@4.2.1(@types/node@18.15.11): + /vite@4.2.1(@types/node@18.16.3): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -13882,10 +13378,10 @@ packages: terser: optional: true dependencies: - '@types/node': 18.15.11 + '@types/node': 18.16.3 esbuild: 0.17.19 postcss: 8.4.21 - resolve: 1.22.1 + resolve: 1.22.2 rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 @@ -13910,7 +13406,7 @@ packages: axios: 0.27.2 joi: 17.7.0 lodash: 4.17.21 - minimist: 1.2.7 + minimist: 1.2.8 rxjs: 7.8.0 transitivePeerDependencies: - debug @@ -13927,6 +13423,14 @@ packages: loose-envify: 1.4.0 dev: false + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: @@ -13956,7 +13460,7 @@ packages: engines: {node: '>= 10.13.0'} hasBin: true dependencies: - acorn: 8.8.2 + acorn: 8.10.0 acorn-walk: 8.2.0 chalk: 4.1.2 commander: 7.2.0 @@ -14007,15 +13511,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} - dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 - dev: true - /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} @@ -14027,20 +13522,8 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array@1.1.8: - resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-abstract: 1.20.4 - for-each: 0.3.3 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.9 - dev: true - - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 @@ -14048,7 +13531,6 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 dev: true /which@1.3.1: @@ -14143,14 +13625,6 @@ packages: bufferutil: 4.0.7 utf-8-validate: 6.0.3 - /xdg-default-browser@2.1.0: - resolution: {integrity: sha512-HY4G725+IDQr16N8XOjAms5qJGArdJaWIuC7Q7A8UXIwj2mifqnPXephazyL7sIkQPvmEoPX3E0v2yFv6hQUNg==} - engines: {node: '>=4'} - dependencies: - execa: 0.2.2 - titleize: 1.0.1 - dev: true - /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -14182,10 +13656,10 @@ packages: engines: {node: '>= 6'} dev: false - /yaml@2.2.2: - resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} + /yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} - dev: false + dev: true /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -14214,18 +13688,6 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 - /yargs@17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -14237,7 +13699,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} From 34b8357ead8949b74f4427c31e126c992e8a6fd3 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 30 Jul 2023 00:32:19 +0800 Subject: [PATCH 092/122] chore(compat): normalize import.meta.url to increase compatibility. --- packages/cli/src/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 81a6feee0..2e05d2a24 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -7,7 +7,8 @@ import { __innerState } from './innerState'; import { type IntrospectionOptions } from './introspection'; import { formatPrettier } from './prettier'; -const cjsRequire = globalThis.require || createRequire(import.meta.url); +const cjsRequire = + globalThis.require || createRequire(import.meta.url.toString()); export type GQtyConfig = GenerateOptions & { /** From 5704c53bf303f722833893cd2a4b13dc4059980d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 12:44:30 +0800 Subject: [PATCH 093/122] fix(core, react): error handling --- examples/gnt/gqty/index.ts | 4 ++-- packages/cli/src/generate.ts | 2 +- packages/cli/test/generate.test.ts | 8 ++++---- packages/cli/test/inspectWriteGenerate.test.ts | 14 +++++++------- packages/cli/test/writeGenerate.test.ts | 2 +- packages/gqty/src/Client/resolveSelections.ts | 15 +++++++++++++-- packages/gqty/src/Selection/index.ts | 7 +++---- packages/react/src/query/useQuery.ts | 2 +- 8 files changed, 32 insertions(+), 22 deletions(-) diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts index 6f9e4939e..6d86252ef 100644 --- a/examples/gnt/gqty/index.ts +++ b/examples/gnt/gqty/index.ts @@ -10,10 +10,10 @@ import { } from './schema.generated'; const queryFetcher: QueryFetcher = async function ( - { query, variables, operationName }, + { query, variables, operationName, extensions }, fetchOptions ) { - console.debug({ query, variables }); + console.debug({ query, variables, operationName, ...extensions }); // Modify "https://rickandmortyapi.com/graphql" if needed const response = await fetch('https://rickandmortyapi.com/graphql', { diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index be13b296d..163156ee6 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -789,7 +789,7 @@ export async function generate( if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index c4ae305c4..66f7ba580 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -155,7 +155,7 @@ test('basic functionality works', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -340,7 +340,7 @@ test('custom scalars works', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -1421,7 +1421,7 @@ test('javascript output works', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -1755,7 +1755,7 @@ test('ignoreArgs transform', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index 1db6d19c3..7227155d9 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -87,7 +87,7 @@ test('basic inspectWriteGenerate functionality', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -302,7 +302,7 @@ describe('from file', () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -516,7 +516,7 @@ describe('from file', () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -729,7 +729,7 @@ describe('from file', () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -986,7 +986,7 @@ describe('from multiple files', () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -1259,7 +1259,7 @@ test('specify generateOptions to inspectWriteGenerate', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } @@ -1622,7 +1622,7 @@ describe('CLI behavior', () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index 5a4582c79..ce4e2ed3f 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -270,7 +270,7 @@ test('creates dir, generates code and writes new file', async () => { if (response.status >= 400) { throw new GQtyError( - \`GraphQL endpoint responded with HTTP \${response.status}: \${response.statusText}.\` + \`GraphQL endpoint responded with HTTP status \${response.status}.\` ); } diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 8cb59c026..4077737ee 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -322,7 +322,7 @@ const doFetch = async < ...fetchOptions }: FetchOptions & { selections: Set } ): Promise> => { - // lol + // lol, sorry for bad naming. const doDoFetch = () => fetcher(payload, fetchOptions) as Promise>; @@ -333,7 +333,18 @@ const doFetch = async < return await promise; } catch (error) { - if (!retryPolicy || !(error instanceof Error)) throw error; + if ( + // User doesn't want reties + !retryPolicy || + // Let everything unknown through + !(error instanceof Error) || + // GQtyErrors are supposed to be terminating + error instanceof GQtyError + // [ ] Supersede the above with the callback ClientOption#onError: + // (error: unknown, { retryAttempt, retry }) => void + ) { + throw error; + } return new Promise((resolve, reject) => { // Selections are attached solely for useMetaState() diff --git a/packages/gqty/src/Selection/index.ts b/packages/gqty/src/Selection/index.ts index 7edee0efa..abecc7263 100644 --- a/packages/gqty/src/Selection/index.ts +++ b/packages/gqty/src/Selection/index.ts @@ -76,12 +76,11 @@ export class Selection { /** The selection path from root the leaf as an array. */ get ancestry() { - const ancestry: Selection[] = []; + const ancestry: Selection[] = [this]; let current: Selection | undefined = this; - while (current) { - ancestry.unshift(current); - current = current.parent; + while (current.parent) { + ancestry.unshift((current = current.parent)); } return ancestry; diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 0e66d3ed2..03befc40f 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -252,7 +252,7 @@ export const createUseQuery = ( selections.clear(); - setState({}); + setState(({ error }) => ({ error })); } }, [ From ea53baa9c4ee822ca343b83cc65cf665f00e851e Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 14:51:47 +0800 Subject: [PATCH 094/122] feat(chore): prettier v3 --- internal/test-utils/package.json | 3 +- packages/cli/package.json | 6 +-- packages/cli/test/config.test.ts | 2 +- packages/gqty/package.json | 7 ++- packages/gqty/src/Selection/index.ts | 8 ++-- packages/logger/package.json | 7 ++- packages/logger/src/index.ts | 43 +++++++++-------- packages/logger/test/tsconfig.json | 3 +- packages/react/package.json | 4 +- packages/subscriptions/package.json | 2 +- pnpm-lock.yaml | 70 ++++++++++++++-------------- 11 files changed, 78 insertions(+), 77 deletions(-) diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 098e32767..146a3e303 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -28,7 +28,7 @@ "build": "bob-ts -i src -f interop", "prepare": "pnpm build", "start": "nodemon --exec \"concurrently pnpm:build tsc\" -w src/index.ts", - "test": "jest --config local.jest.config.js" + "test": "NODE_OPTIONS=--experimental-vm-modules jest --config local.jest.config.js" }, "dependencies": { "@graphql-ez/fastify": "^0.12.0", @@ -43,7 +43,6 @@ "graphql-ez": "^0.16.0", "jest": "^29.5.0", "jest-watch-typeahead": "^2.2.2", - "prettier": "^2.8.6", "randomstring": "^1.2.3", "wait-for-expect": "^3.0.2" }, diff --git a/packages/cli/package.json b/packages/cli/package.json index ada5a2df2..29f75e8a0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,8 +38,8 @@ "build": "bob-tsm build.ts", "prepare": "bob-tsm build.ts", "postpublish": "gh-release", - "test": "jest", - "test:watch": "jest --watch", + "test": "NODE_OPTIONS=--experimental-vm-modules jest", + "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { @@ -59,7 +59,7 @@ "lodash-es": "^4.17.21", "micromatch": "^4.0.5", "mkdirp": "^2.1.5", - "prettier": "^2.8.6", + "prettier": "^3.0.1", "trading-signals": "^3.7.0" }, "devDependencies": { diff --git a/packages/cli/test/config.test.ts b/packages/cli/test/config.test.ts index ba44beb5d..0e2a9d4dd 100644 --- a/packages/cli/test/config.test.ts +++ b/packages/cli/test/config.test.ts @@ -1,6 +1,6 @@ import './utils'; -import { getValidConfig, GQtyConfig } from '../src/config'; +import { getValidConfig, type GQtyConfig } from '../src/config'; test('completely valid config', () => { const spy = jest.spyOn(console, 'warn').mockImplementation(); diff --git a/packages/gqty/package.json b/packages/gqty/package.json index b4d0e39a9..f25c89a6e 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -34,14 +34,13 @@ "analyze": "size-limit --why", "build": "bob-esbuild build", "dev": "bob-esbuild watch", - "playground": "jest test/playground.test.ts --watch --no-coverage", "prepare": "bob-esbuild build", "postpublish": "gh-release", "size": "size-limit", "start": "bob-esbuild watch", - "test": "jest", - "test:specific": "jest test/interfaces-unions.test.ts --watch --no-coverage -u", - "test:watch": "jest --watch", + "test": "NODE_OPTIONS=--experimental-vm-modules jest", + "test:specific": "NODE_OPTIONS=--experimental-vm-modules jest test/interfaces-unions.test.ts --watch --no-coverage -u", + "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { diff --git a/packages/gqty/src/Selection/index.ts b/packages/gqty/src/Selection/index.ts index abecc7263..6b7038920 100644 --- a/packages/gqty/src/Selection/index.ts +++ b/packages/gqty/src/Selection/index.ts @@ -76,12 +76,12 @@ export class Selection { /** The selection path from root the leaf as an array. */ get ancestry() { - const ancestry: Selection[] = [this]; + const ancestry: Selection[] = []; let current: Selection | undefined = this; - while (current.parent) { - ancestry.unshift((current = current.parent)); - } + do { + ancestry.unshift(current); + } while ((current = current.parent)); return ancestry; } diff --git a/packages/logger/package.json b/packages/logger/package.json index 857314390..6bc616327 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -37,16 +37,15 @@ "postpublish": "gh-release", "size": "size-limit", "start": "bob-esbuild watch", - "test": "jest", - "test:watch": "jest --watch" + "test": "NODE_OPTIONS=--experimental-vm-modules jest", + "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "dependencies": { - "prettier": "^2.8.6" + "prettier": "^3.0.1" }, "devDependencies": { "@size-limit/preset-small-lib": "^8.2.4", "@types/node": "^18.15.5", - "@types/prettier": "^2.7.2", "bob-esbuild-cli": "^4.0.0", "esbuild": "^0.17.12", "gqty": "workspace:^", diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index facd390dd..9464793c8 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,13 +1,20 @@ import type { DebugEvent, GQtyClient } from 'gqty'; -import parserJSON from 'prettier/parser-babel.js'; -import parserGraphQL from 'prettier/parser-graphql.js'; -import prettier from 'prettier/standalone.js'; +import prettierBabel from 'prettier/plugins/babel'; +import prettierGraphQL from 'prettier/plugins/graphql'; +import prettier from 'prettier/standalone'; import { serializeError } from './serializeError'; -function parseGraphQL(query: string) { - return prettier.format(query, { +async function parseGraphQL(query: string) { + return await prettier.format(query, { parser: 'graphql', - plugins: [parserGraphQL], + plugins: [prettierBabel, prettierGraphQL], + }); +} + +async function parseJSON(value: unknown) { + return await prettier.format(JSON.stringify(value), { + parser: 'json', + plugins: [prettierBabel], }); } @@ -60,12 +67,9 @@ export function createLogger( options.showSelections ??= true; options.stringifyJSON ??= false; - const stringifyJSONIfEnabled = (v: T) => { + const stringifyJSONIfEnabled = async (v: T) => { if (options.stringifyJSON && v) { - return prettier.format(JSON.stringify(v), { - parser: 'json', - plugins: [parserJSON], - }); + return parseJSON(v); } return v; }; @@ -82,8 +86,7 @@ export function createLogger( selections, }: DebugEvent) { const startTime = Date.now(); - const fetchTime = startTime - startTime; // TODO: Implement an actual timer - + const fetchTime = startTime - startTime; // [ ] Implement an actual timer const queryId = (QueryIdMapper[query] ||= ++idMapper); console.groupCollapsed( @@ -124,11 +127,11 @@ export function createLogger( if (variables) { console.log( ...format(['Variables', 'color: #25e1e1']), - stringifyJSONIfEnabled(variables) + await stringifyJSONIfEnabled(variables) ); } - console.log(...format([parseGraphQL(query)])); + console.log(...format([await parseGraphQL(query)])); console.groupEnd(); } @@ -138,15 +141,15 @@ export function createLogger( } else if (result) { console.log( ...format(['Result', headerStyles]), - stringifyJSONIfEnabled(result) + await stringifyJSONIfEnabled(result) ); } if (options.showSelections) { console.groupCollapsed(...format(['Selections', headerStyles])); - selections.forEach(({ key, cacheKeys, alias, input, isUnion }) => { + for (const { key, cacheKeys, alias, input, isUnion } of selections) { console.log( - stringifyJSONIfEnabled({ + await stringifyJSONIfEnabled({ key, cacheKeys: cacheKeys.join('.'), alias, @@ -154,14 +157,14 @@ export function createLogger( isUnion, }) ); - }); + } console.groupEnd(); } if (options.showCache) { console.log( ...format(['Cache snapshot', headerStyles]), - stringifyJSONIfEnabled(cache?.toJSON()) + await stringifyJSONIfEnabled(cache?.toJSON()) ); console.groupEnd(); } diff --git a/packages/logger/test/tsconfig.json b/packages/logger/test/tsconfig.json index 8a4068dd3..a005c732f 100644 --- a/packages/logger/test/tsconfig.json +++ b/packages/logger/test/tsconfig.json @@ -4,10 +4,9 @@ "declaration": false, "esModuleInterop": true, "jsx": "react", - "module": "commonjs", "noEmit": true, "strict": true, - "target": "es2019" + "target": "esnext" }, "exclude": [], "include": ["**/*.ts", "**/*.tsx"] diff --git a/packages/react/package.json b/packages/react/package.json index 7247dbe05..c1b1704ae 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -39,8 +39,8 @@ "size": "size-limit", "start": "bob-esbuild watch", "start:with:example": "bob-esbuild watch --onSuccess \"pnpm -r --filter react-example dev\"", - "test": "jest", - "test:watch": "jest --watch" + "test": "NODE_OPTIONS=--experimental-vm-modules jest", + "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" }, "eslintConfig": { "env": { diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json index 01e407c5e..bf7c13357 100644 --- a/packages/subscriptions/package.json +++ b/packages/subscriptions/package.json @@ -31,7 +31,7 @@ "prepare": "bob-esbuild build", "postpublish": "gh-release", "start": "bob-esbuild watch", - "test": "jest" + "test": "NODE_OPTIONS=--experimental-vm-modules jest" }, "dependencies": { "isomorphic-ws": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3bce21c26..fe45cc4cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -141,7 +141,7 @@ importers: devDependencies: '@next/bundle-analyzer': specifier: ^13.4.12 - version: 13.4.12(bufferutil@4.0.7)(utf-8-validate@6.0.3) + version: 13.4.12(bufferutil@4.0.7)(utf-8-validate@5.0.10) '@types/node': specifier: 20.4.5 version: 20.4.5 @@ -169,6 +169,9 @@ importers: typescript: specifier: ^5.0.4 version: 5.0.4 + utf-8-validate: + specifier: ^5.0.2 + version: 5.0.10 examples/react: dependencies: @@ -393,9 +396,6 @@ importers: jest-watch-typeahead: specifier: ^2.2.2 version: 2.2.2(jest@29.5.0) - prettier: - specifier: ^2.8.6 - version: 2.8.6 randomstring: specifier: ^1.2.3 version: 1.2.3 @@ -482,8 +482,8 @@ importers: specifier: ^2.1.5 version: 2.1.5 prettier: - specifier: ^2.8.6 - version: 2.8.6 + specifier: ^3.0.1 + version: 3.0.1 trading-signals: specifier: ^3.7.0 version: 3.7.0 @@ -663,8 +663,8 @@ importers: packages/logger: dependencies: prettier: - specifier: ^2.8.6 - version: 2.8.6 + specifier: ^3.0.1 + version: 3.0.1 devDependencies: '@size-limit/preset-small-lib': specifier: ^8.2.4 @@ -672,9 +672,6 @@ importers: '@types/node': specifier: ^18.15.5 version: 18.16.3 - '@types/prettier': - specifier: ^2.7.2 - version: 2.7.2 bob-esbuild-cli: specifier: ^4.0.0 version: 4.0.0(bob-esbuild@4.0.3) @@ -1060,7 +1057,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.2 + resolve: 1.22.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -5277,10 +5274,10 @@ packages: tslib: 2.6.1 dev: false - /@next/bundle-analyzer@13.4.12(bufferutil@4.0.7)(utf-8-validate@6.0.3): + /@next/bundle-analyzer@13.4.12(bufferutil@4.0.7)(utf-8-validate@5.0.10): resolution: {integrity: sha512-WjeNsoWGAkbn7XU2jBVkaI7/DVfg2mzRF7spTohsknnwQ/dDgSHlgZj80mt1/SHYconWjZSY0KIWFaxR4/mNsA==} dependencies: - webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + webpack-bundle-analyzer: 4.7.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -6749,7 +6746,7 @@ packages: dependencies: '@babel/runtime': 7.22.6 cosmiconfig: 7.1.0 - resolve: 1.22.2 + resolve: 1.22.3 dev: false /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.0): @@ -8159,7 +8156,7 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.12.1 - resolve: 1.22.2 + resolve: 1.22.3 transitivePeerDependencies: - supports-color dev: true @@ -9959,7 +9956,7 @@ packages: jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 - resolve: 1.22.2 + resolve: 1.22.3 resolve.exports: 2.0.0 slash: 3.0.0 @@ -10822,7 +10819,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.3 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -11334,7 +11331,7 @@ packages: postcss: 8.4.27 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.3 dev: true /postcss-js@4.0.1(postcss@8.4.27): @@ -11438,6 +11435,12 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + /prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + engines: {node: '>=14'} + hasBin: true + dev: false + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -11975,14 +11978,6 @@ packages: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} - hasBin: true - dependencies: - is-core-module: 2.12.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.3: resolution: {integrity: sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw==} hasBin: true @@ -11990,7 +11985,6 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.4: resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} @@ -12721,7 +12715,7 @@ packages: postcss-load-config: 4.0.1(postcss@8.4.27)(ts-node@10.9.1) postcss-nested: 6.0.1(postcss@8.4.27) postcss-selector-parser: 6.0.13 - resolve: 1.22.2 + resolve: 1.22.3 sucrase: 3.34.0 transitivePeerDependencies: - ts-node @@ -13310,6 +13304,14 @@ packages: dev: false patched: true + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.5.0 + dev: true + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -13381,7 +13383,7 @@ packages: '@types/node': 18.16.3 esbuild: 0.17.19 postcss: 8.4.21 - resolve: 1.22.2 + resolve: 1.22.3 rollup: 3.21.0 optionalDependencies: fsevents: 2.3.2 @@ -13455,7 +13457,7 @@ packages: engines: {node: '>=12'} dev: true - /webpack-bundle-analyzer@4.7.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): + /webpack-bundle-analyzer@4.7.0(bufferutil@4.0.7)(utf-8-validate@5.0.10): resolution: {integrity: sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==} engines: {node: '>= 10.13.0'} hasBin: true @@ -13468,7 +13470,7 @@ packages: lodash: 4.17.21 opener: 1.5.2 sirv: 1.0.19 - ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -13594,7 +13596,7 @@ packages: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): + /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@5.0.10): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -13607,7 +13609,7 @@ packages: optional: true dependencies: bufferutil: 4.0.7 - utf-8-validate: 6.0.3 + utf-8-validate: 5.0.10 dev: true /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): From 08f89014c517f574538640a4fafdf888911ad0c8 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 19:12:18 +0800 Subject: [PATCH 095/122] fix(cli): revert prettier to v2, deps are not ready for it --- packages/cli/build.ts | 8 ++++---- packages/cli/package.json | 2 +- packages/cli/src/inspectWriteGenerate.ts | 2 +- pnpm-lock.yaml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/cli/build.ts b/packages/cli/build.ts index 3dd5d7ba4..c77864324 100644 --- a/packages/cli/build.ts +++ b/packages/cli/build.ts @@ -26,7 +26,7 @@ async function main() { define: { __VERSION__: JSON.stringify(pkg.version), }, - minify: false, + minify: true, }, sourcemap: false, external: ['./deps.js'], @@ -35,11 +35,11 @@ async function main() { }, }), build({ + entryPoints: ['./src/deps.ts'], bundle: true, format: 'cjs', - target: 'node12.20', - entryPoints: ['./src/deps.ts'], outfile: 'dist/deps.js', + target: 'node12.20', platform: 'node', minify: true, external: ['graphql'], @@ -69,7 +69,7 @@ async function main() { outDir: 'dist', target: 'node12.20', esbuild: { - minify: false, + minify: true, }, sourcemap: false, external: ['./deps.js'], diff --git a/packages/cli/package.json b/packages/cli/package.json index 29f75e8a0..f662107e4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -59,7 +59,7 @@ "lodash-es": "^4.17.21", "micromatch": "^4.0.5", "mkdirp": "^2.1.5", - "prettier": "^3.0.1", + "prettier": "^2.8.6", "trading-signals": "^3.7.0" }, "devDependencies": { diff --git a/packages/cli/src/inspectWriteGenerate.ts b/packages/cli/src/inspectWriteGenerate.ts index ce9dba35e..45cfefac4 100644 --- a/packages/cli/src/inspectWriteGenerate.ts +++ b/packages/cli/src/inspectWriteGenerate.ts @@ -2,7 +2,7 @@ import { existsSync, promises } from 'fs'; import type { GraphQLSchema, IntrospectionQuery } from 'graphql'; import * as graphql from 'graphql'; import { extname, resolve } from 'path'; -import { defaultConfig, DUMMY_ENDPOINT, loadOrGenerateConfig } from './config'; +import { DUMMY_ENDPOINT, defaultConfig, loadOrGenerateConfig } from './config'; import * as deps from './deps.js'; import type { GenerateOptions, TransformSchemaOptions } from './generate'; import { getRemoteSchema } from './introspection'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fe45cc4cb..7aae2a1cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -482,8 +482,8 @@ importers: specifier: ^2.1.5 version: 2.1.5 prettier: - specifier: ^3.0.1 - version: 3.0.1 + specifier: ^2.8.6 + version: 2.8.6 trading-signals: specifier: ^3.7.0 version: 3.7.0 From f4f7bc4c61afbb64d200b0107885a7f8f5fee909 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 22:09:08 +0800 Subject: [PATCH 096/122] fix(react): reduce over-fetching between renders #1594 --- examples/gnt/app/MyComponent.tsx | 43 ------------ examples/gnt/app/{ => components}/Avatar.tsx | 0 examples/gnt/app/{ => components}/Card.tsx | 0 .../gnt/app/components/CscCharacterSearch.tsx | 68 +++++++++++++++++++ .../app/components/CscCharactersSearch.tsx | 66 ++++++++++++++++++ .../RscCharacter.tsx} | 4 +- .../gnt/app/{ => components}/Skeleton.tsx | 0 .../gnt/app/{ => components}/SmallText.tsx | 0 examples/gnt/app/{ => components}/Text.tsx | 0 examples/gnt/app/page.tsx | 10 ++- examples/gnt/gqty/index.ts | 7 +- examples/gnt/package.json | 3 +- internal/test-utils/package.json | 2 +- packages/cli/package.json | 4 +- packages/gqty/package.json | 6 +- packages/gqty/src/Client/batching.ts | 8 +-- packages/gqty/src/Client/debugger.ts | 9 +-- packages/gqty/src/Client/resolveSelections.ts | 2 +- packages/gqty/src/Client/resolvers.ts | 10 +-- packages/logger/package.json | 4 +- packages/logger/src/index.ts | 16 +++-- packages/logger/test/index.test.ts | 10 ++- packages/logger/test/tsconfig.json | 3 +- packages/react/package.json | 4 +- packages/react/src/query/useQuery.ts | 8 ++- packages/subscriptions/package.json | 2 +- 26 files changed, 193 insertions(+), 96 deletions(-) delete mode 100644 examples/gnt/app/MyComponent.tsx rename examples/gnt/app/{ => components}/Avatar.tsx (100%) rename examples/gnt/app/{ => components}/Card.tsx (100%) create mode 100644 examples/gnt/app/components/CscCharacterSearch.tsx create mode 100644 examples/gnt/app/components/CscCharactersSearch.tsx rename examples/gnt/app/{Character.tsx => components/RscCharacter.tsx} (68%) rename examples/gnt/app/{ => components}/Skeleton.tsx (100%) rename examples/gnt/app/{ => components}/SmallText.tsx (100%) rename examples/gnt/app/{ => components}/Text.tsx (100%) diff --git a/examples/gnt/app/MyComponent.tsx b/examples/gnt/app/MyComponent.tsx deleted file mode 100644 index f242b9c93..000000000 --- a/examples/gnt/app/MyComponent.tsx +++ /dev/null @@ -1,43 +0,0 @@ -'use client'; - -import { useDeferredValue, useState, type FunctionComponent } from 'react'; -import { useQuery } from '~/gqty/react'; -import Avatar from './Avatar'; -import Card from './Card'; -import SmallText from './SmallText'; -import Text from './Text'; - -export type Props = {}; - -const MyComponent: FunctionComponent = () => { - const [name, setName] = useState('Rick'); - const deferredName = useDeferredValue(name); - const query = useQuery(); - - return ( - <> - setName(e.target.value)} - className="border border-gray-300 rounded-md px-3 py-2 w-full text-black" - /> - - {query - .characters({ filter: { name: deferredName } }) - ?.results?.map((character) => ( - - - -
- {character?.name} - {character?.species} - {character?.origin?.name} -
-
- ))} - - ); -}; - -export default MyComponent; diff --git a/examples/gnt/app/Avatar.tsx b/examples/gnt/app/components/Avatar.tsx similarity index 100% rename from examples/gnt/app/Avatar.tsx rename to examples/gnt/app/components/Avatar.tsx diff --git a/examples/gnt/app/Card.tsx b/examples/gnt/app/components/Card.tsx similarity index 100% rename from examples/gnt/app/Card.tsx rename to examples/gnt/app/components/Card.tsx diff --git a/examples/gnt/app/components/CscCharacterSearch.tsx b/examples/gnt/app/components/CscCharacterSearch.tsx new file mode 100644 index 000000000..38e2612db --- /dev/null +++ b/examples/gnt/app/components/CscCharacterSearch.tsx @@ -0,0 +1,68 @@ +'use client'; + +import type { Variables } from 'gqty'; +import { useState, type FunctionComponent } from 'react'; +import Button from '~/components/tailwindui/Button'; +import type { Query } from '~/gqty'; +import { useQuery } from '~/gqty/react'; +import Avatar from './Avatar'; +import Card from './Card'; +import SmallText from './SmallText'; +import Text from './Text'; + +export type Props = {}; + +const Component: FunctionComponent = () => { + const [searchValue, setSearchValue] = useState(); + + return ( + <> + + {searchValue && } + + ); +}; + +const SelectBox: FunctionComponent<{ + onChange?: (value: string) => void; +}> = ({ onChange }) => { + const [value, setValue] = useState(); + + return ( +
+ setValue(e.target.value)} + className="border border-gray-300 rounded-md px-3 py-2 w-full text-black" + /> + +
+ ); +}; + +const Character: FunctionComponent> = (props) => { + const character = useQuery().character(props); + + return ( + + + +
+ {character?.name} + {character?.species} + {character?.origin?.name} +
+
+ ); +}; + +export default Component; diff --git a/examples/gnt/app/components/CscCharactersSearch.tsx b/examples/gnt/app/components/CscCharactersSearch.tsx new file mode 100644 index 000000000..4d7f42276 --- /dev/null +++ b/examples/gnt/app/components/CscCharactersSearch.tsx @@ -0,0 +1,66 @@ +'use client'; + +import type { Variables } from 'gqty'; +import { useState, type FunctionComponent } from 'react'; +import Button from '~/components/tailwindui/Button'; +import type { Query } from '~/gqty'; +import { useQuery } from '~/gqty/react'; +import Avatar from './Avatar'; +import Card from './Card'; +import SmallText from './SmallText'; +import Text from './Text'; + +export type Props = {}; + +const Component: FunctionComponent = () => { + const [searchValue, setSearchValue] = useState(); + + return ( + <> + + + + ); +}; + +const SearchBox: FunctionComponent<{ + onChange?: (value: string) => void; +}> = ({ onChange }) => { + const [inputName, setInputName] = useState(''); + + return ( +
+ setInputName(e.target.value)} + className="border border-gray-300 rounded-md px-3 py-2 w-full text-black" + /> + +
+ ); +}; + +const Characters: FunctionComponent> = ( + props +) => { + const query = useQuery(); + + return ( + <> + {query.characters(props)?.results?.map((character) => ( + + + +
+ {character?.name} + {character?.species} + {character?.origin?.name} +
+
+ ))} + + ); +}; + +export default Component; diff --git a/examples/gnt/app/Character.tsx b/examples/gnt/app/components/RscCharacter.tsx similarity index 68% rename from examples/gnt/app/Character.tsx rename to examples/gnt/app/components/RscCharacter.tsx index acd56d9b4..86ec0c635 100644 --- a/examples/gnt/app/Character.tsx +++ b/examples/gnt/app/components/RscCharacter.tsx @@ -1,7 +1,7 @@ -import { resolve, type Query } from '../gqty'; +import { resolve, type Query } from '~/gqty'; /** RSC */ -export default async function Character({ +export default async function RscCharacter({ id, }: Parameters[0]) { const data = await resolve(({ query }) => { diff --git a/examples/gnt/app/Skeleton.tsx b/examples/gnt/app/components/Skeleton.tsx similarity index 100% rename from examples/gnt/app/Skeleton.tsx rename to examples/gnt/app/components/Skeleton.tsx diff --git a/examples/gnt/app/SmallText.tsx b/examples/gnt/app/components/SmallText.tsx similarity index 100% rename from examples/gnt/app/SmallText.tsx rename to examples/gnt/app/components/SmallText.tsx diff --git a/examples/gnt/app/Text.tsx b/examples/gnt/app/components/Text.tsx similarity index 100% rename from examples/gnt/app/Text.tsx rename to examples/gnt/app/components/Text.tsx diff --git a/examples/gnt/app/page.tsx b/examples/gnt/app/page.tsx index 4e7cd2128..c0e2ad37f 100644 --- a/examples/gnt/app/page.tsx +++ b/examples/gnt/app/page.tsx @@ -1,6 +1,10 @@ import { Suspense } from 'react'; -import Character from './Character'; -import MyComponent from './MyComponent'; +import CharacterSearch from './components/CscCharacterSearch'; +import CharactersSearch from './components/CscCharactersSearch'; +import Character from './components/RscCharacter'; + +CharacterSearch; +CharactersSearch; export default function Home() { return ( @@ -8,7 +12,7 @@ export default function Home() { {/* CSR test */} Loading...}> - + {/* RSC test */} diff --git a/examples/gnt/gqty/index.ts b/examples/gnt/gqty/index.ts index 6d86252ef..c5c4bb911 100644 --- a/examples/gnt/gqty/index.ts +++ b/examples/gnt/gqty/index.ts @@ -2,6 +2,7 @@ * GQty: You can safely modify this file based on your needs. */ +import { createLogger } from '@gqty/logger'; import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; import { generatedSchema, @@ -13,8 +14,6 @@ const queryFetcher: QueryFetcher = async function ( { query, variables, operationName, extensions }, fetchOptions ) { - console.debug({ query, variables, operationName, ...extensions }); - // Modify "https://rickandmortyapi.com/graphql" if needed const response = await fetch('https://rickandmortyapi.com/graphql', { method: 'POST', @@ -32,7 +31,7 @@ const queryFetcher: QueryFetcher = async function ( if (response.status >= 400) { throw new GQtyError( - `GraphQL endpoint responded with HTTP ${response.status}: ${response.statusText}.` + `GraphQL endpoint responded with HTTP status ${response.status}.` ); } @@ -71,6 +70,8 @@ export const client = createClient({ }, }); +createLogger(client).start(); + // Core functions export const { resolve, subscribe, schema } = client; diff --git a/examples/gnt/package.json b/examples/gnt/package.json index 507ac6928..6e81bd2cb 100644 --- a/examples/gnt/package.json +++ b/examples/gnt/package.json @@ -27,6 +27,7 @@ "eslint-config-next": "13.3.0", "postcss": "8.4.21", "tailwindcss": "^3.3.3", - "typescript": "^5.0.4" + "typescript": "^5.0.4", + "utf-8-validate": "^5.0.2" } } diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 146a3e303..0658ed301 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -28,7 +28,7 @@ "build": "bob-ts -i src -f interop", "prepare": "pnpm build", "start": "nodemon --exec \"concurrently pnpm:build tsc\" -w src/index.ts", - "test": "NODE_OPTIONS=--experimental-vm-modules jest --config local.jest.config.js" + "test": "jest --config local.jest.config.js" }, "dependencies": { "@graphql-ez/fastify": "^0.12.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index f662107e4..ada5a2df2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -38,8 +38,8 @@ "build": "bob-tsm build.ts", "prepare": "bob-tsm build.ts", "postpublish": "gh-release", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", + "test": "jest", + "test:watch": "jest --watch", "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { diff --git a/packages/gqty/package.json b/packages/gqty/package.json index f25c89a6e..47df2d62c 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -38,9 +38,9 @@ "postpublish": "gh-release", "size": "size-limit", "start": "bob-esbuild watch", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:specific": "NODE_OPTIONS=--experimental-vm-modules jest test/interfaces-unions.test.ts --watch --no-coverage -u", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch", + "test": "jest", + "test:specific": "jest test/interfaces-unions.test.ts --watch --no-coverage -u", + "test:watch": "jest --watch", "test:watch-coverage": "rimraf coverage && mkdirp coverage/lcov-report && concurrently --raw \"jest --watchAll\" \"serve -l 8787 coverage/lcov-report\" \"wait-on tcp:8787 coverage/lcov-report/index.html && open-cli http://localhost:8787\"" }, "dependencies": { diff --git a/packages/gqty/src/Client/batching.ts b/packages/gqty/src/Client/batching.ts index c5dc64079..9317027e2 100644 --- a/packages/gqty/src/Client/batching.ts +++ b/packages/gqty/src/Client/batching.ts @@ -6,7 +6,7 @@ const pendingSelections = new Map>>>(); export const addSelections = ( cache: Cache, key: string, - value: Set + selections: Set ) => { if (!pendingSelections.has(cache)) { pendingSelections.set(cache, new Map()); @@ -18,19 +18,19 @@ export const addSelections = ( selectionsByKey.set(key, new Set()); } - return selectionsByKey.get(key)!.add(value); + return selectionsByKey.get(key)!.add(selections); }; export const getSelectionsSet = (cache: Cache, key: string) => pendingSelections.get(cache)?.get(key); -export const delSelectionsSet = (cache: Cache, key: string) => +export const delSelectionSet = (cache: Cache, key: string) => pendingSelections.get(cache)?.delete(key) ?? false; export const popSelectionsSet = (cache: Cache, key: string) => { const result = getSelectionsSet(cache, key); - delSelectionsSet(cache, key); + delSelectionSet(cache, key); return result; }; diff --git a/packages/gqty/src/Client/debugger.ts b/packages/gqty/src/Client/debugger.ts index da6bf0e49..0221f00f1 100644 --- a/packages/gqty/src/Client/debugger.ts +++ b/packages/gqty/src/Client/debugger.ts @@ -14,19 +14,20 @@ export type DebugEvent = { export type DebugEventListener = (event: DebugEvent) => void; export type Debugger = { - dispatch: (event: DebugEvent) => void; + dispatch: (event: DebugEvent) => Promise; /** Returns an unsubscribe function */ subscribe: (listener: DebugEventListener) => () => void; }; -export const createDebugger = () => { +export const createDebugger = (): Debugger => { const subs = new Set(); return { - dispatch: (event: DebugEvent) => { - subs.forEach((sub) => sub(event)); + dispatch: async (event: DebugEvent) => { + await Promise.all([...subs].map((sub) => sub(event))); }, + subscribe: (listener: DebugEventListener) => { subs.add(listener); return () => subs.delete(listener); diff --git a/packages/gqty/src/Client/resolveSelections.ts b/packages/gqty/src/Client/resolveSelections.ts index 4077737ee..d5bbbbf19 100644 --- a/packages/gqty/src/Client/resolveSelections.ts +++ b/packages/gqty/src/Client/resolveSelections.ts @@ -80,7 +80,7 @@ export const fetchSelections = < } // TODO: Defer logging until after cache update - debug?.dispatch({ + await debug?.dispatch({ cache, request: queryPayload, result, diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index eda76635f..f1aec928f 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -4,7 +4,7 @@ import { type Cache } from '../Cache'; import { type GQtyError, type RetryOptions } from '../Error'; import { type ScalarsEnumsHash, type Schema } from '../Schema'; import { type Selection } from '../Selection'; -import { addSelections, delSelectionsSet, getSelectionsSet } from './batching'; +import { addSelections, delSelectionSet, getSelectionsSet } from './batching'; import { createContext, type SchemaContext } from './context'; import { type Debugger } from './debugger'; import { @@ -251,17 +251,13 @@ export const createResolvers = ({ pendingQueries.delete(pendingSelections); - delSelectionsSet(clientCache, selectionsCacheKey); + delSelectionSet(clientCache, selectionsCacheKey); return fetchSelections(selections, { cache: context.cache, debugger: debug, extensions, - fetchOptions: { - ...fetchOptions, - cachePolicy, - retryPolicy, - }, + fetchOptions: { ...fetchOptions, cachePolicy, retryPolicy }, operationName, }).then((results) => { updateCaches( diff --git a/packages/logger/package.json b/packages/logger/package.json index 6bc616327..e8ba08a64 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -37,8 +37,8 @@ "postpublish": "gh-release", "size": "size-limit", "start": "bob-esbuild watch", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" + "test": "jest", + "test:watch": "jest --watch" }, "dependencies": { "prettier": "^3.0.1" diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 9464793c8..befd93cd2 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -1,20 +1,21 @@ import type { DebugEvent, GQtyClient } from 'gqty'; -import prettierBabel from 'prettier/plugins/babel'; -import prettierGraphQL from 'prettier/plugins/graphql'; -import prettier from 'prettier/standalone'; +import * as prettierBabel from 'prettier/plugins/babel'; +import * as prettierEstree from 'prettier/plugins/estree'; +import * as prettierGraphQL from 'prettier/plugins/graphql'; +import { format as prettierFormat } from 'prettier/standalone'; import { serializeError } from './serializeError'; async function parseGraphQL(query: string) { - return await prettier.format(query, { + return await prettierFormat(query, { parser: 'graphql', plugins: [prettierBabel, prettierGraphQL], }); } async function parseJSON(value: unknown) { - return await prettier.format(JSON.stringify(value), { + return await prettierFormat(JSON.stringify(value), { parser: 'json', - plugins: [prettierBabel], + plugins: [prettierBabel, prettierEstree], }); } @@ -166,8 +167,9 @@ export function createLogger( ...format(['Cache snapshot', headerStyles]), await stringifyJSONIfEnabled(cache?.toJSON()) ); - console.groupEnd(); } + + console.groupEnd(); } /** diff --git a/packages/logger/test/index.test.ts b/packages/logger/test/index.test.ts index ba2a940ac..9423949e5 100644 --- a/packages/logger/test/index.test.ts +++ b/packages/logger/test/index.test.ts @@ -70,9 +70,9 @@ describe('logger', () => { const spyError = jest.spyOn(console, 'error').mockImplementation(); try { - const dataPromise = gqtyClient.resolved(() => { - return gqtyClient.query.hello({ hello: 'hello' }); - }); + const dataPromise = gqtyClient.resolve(({ query }) => + query.hello({ hello: 'hello' }) + ); const data = await dataPromise; @@ -84,9 +84,7 @@ describe('logger', () => { expect(data).toBe('hello world'); - const errorPromise = gqtyClient.resolved(() => { - return gqtyClient.query.throw; - }); + const errorPromise = gqtyClient.resolve(({ query }) => query.throw); await errorPromise.catch(() => {}); diff --git a/packages/logger/test/tsconfig.json b/packages/logger/test/tsconfig.json index a005c732f..b5f92e578 100644 --- a/packages/logger/test/tsconfig.json +++ b/packages/logger/test/tsconfig.json @@ -5,8 +5,7 @@ "esModuleInterop": true, "jsx": "react", "noEmit": true, - "strict": true, - "target": "esnext" + "strict": true }, "exclude": [], "include": ["**/*.ts", "**/*.tsx"] diff --git a/packages/react/package.json b/packages/react/package.json index c1b1704ae..7247dbe05 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -39,8 +39,8 @@ "size": "size-limit", "start": "bob-esbuild watch", "start:with:example": "bob-esbuild watch --onSuccess \"pnpm -r --filter react-example dev\"", - "test": "NODE_OPTIONS=--experimental-vm-modules jest", - "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch" + "test": "jest", + "test:watch": "jest --watch" }, "eslintConfig": { "env": { diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 03befc40f..64db8c0bc 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -184,6 +184,12 @@ export const createUseQuery = ( if (state.promise && !context.hasCacheHit) throw state.promise; } + // Reset selections to prevent overfetching, but do it only when the + // previous render is not triggered by a successful fetch. + if (context.shouldFetch === false) { + selections.clear(); + } + useEffect( () => context.cache.subscribe( @@ -250,8 +256,6 @@ export const createUseQuery = ( context.notifyCacheUpdate = cachePolicy !== 'default'; state.promise = undefined; - selections.clear(); - setState(({ error }) => ({ error })); } }, diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json index bf7c13357..01e407c5e 100644 --- a/packages/subscriptions/package.json +++ b/packages/subscriptions/package.json @@ -31,7 +31,7 @@ "prepare": "bob-esbuild build", "postpublish": "gh-release", "start": "bob-esbuild watch", - "test": "NODE_OPTIONS=--experimental-vm-modules jest" + "test": "jest" }, "dependencies": { "isomorphic-ws": "^5.0.0", From d08bab1b1e22afc8be7df435939653aa1e68cdf9 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 23:14:19 +0800 Subject: [PATCH 097/122] feat(cli): enable suspense in the generated client --- packages/cli/src/generate.ts | 4 +-- packages/cli/test/generate.test.ts | 16 +++++------ .../cli/test/inspectWriteGenerate.test.ts | 28 +++++++++---------- packages/cli/test/writeGenerate.test.ts | 4 +-- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 163156ee6..787a124ae 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -887,8 +887,8 @@ export async function generate( : `createReactClient(client, {` } defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, } }); `.trim() diff --git a/packages/cli/test/generate.test.ts b/packages/cli/test/generate.test.ts index 66f7ba580..3d27e14ad 100644 --- a/packages/cli/test/generate.test.ts +++ b/packages/cli/test/generate.test.ts @@ -237,8 +237,8 @@ test('basic functionality works', async () => { useSubscription, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -407,8 +407,8 @@ test('custom scalars works', async () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -1510,8 +1510,8 @@ test('javascript output works', async () => { */ createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -1822,8 +1822,8 @@ test('ignoreArgs transform', async () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); diff --git a/packages/cli/test/inspectWriteGenerate.test.ts b/packages/cli/test/inspectWriteGenerate.test.ts index 7227155d9..22e0f1c17 100644 --- a/packages/cli/test/inspectWriteGenerate.test.ts +++ b/packages/cli/test/inspectWriteGenerate.test.ts @@ -154,8 +154,8 @@ test('basic inspectWriteGenerate functionality', async () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -369,8 +369,8 @@ describe('from file', () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -583,8 +583,8 @@ describe('from file', () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -796,8 +796,8 @@ describe('from file', () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -1053,8 +1053,8 @@ describe('from multiple files', () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -1326,8 +1326,8 @@ test('specify generateOptions to inspectWriteGenerate', async () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); @@ -1689,8 +1689,8 @@ describe('CLI behavior', () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); diff --git a/packages/cli/test/writeGenerate.test.ts b/packages/cli/test/writeGenerate.test.ts index ce4e2ed3f..83cf6f16f 100644 --- a/packages/cli/test/writeGenerate.test.ts +++ b/packages/cli/test/writeGenerate.test.ts @@ -337,8 +337,8 @@ test('creates dir, generates code and writes new file', async () => { prepareQuery, } = createReactClient(client, { defaults: { - // Enable Suspense, you can override this option at hooks. - suspense: false, + // Enable Suspense, you can override this option for each hook. + suspense: true, }, }); From 7a805a274fb4cd3897d19cfe6257b82b95f0d337 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 5 Aug 2023 23:14:51 +0800 Subject: [PATCH 098/122] chore(examples/gnt): simulate noverby's infinite fetch bug --- .../app/000-noverby-infinite-fetch/Level1.tsx | 10 + .../app/000-noverby-infinite-fetch/Level2.tsx | 11 + .../app/000-noverby-infinite-fetch/Level3.tsx | 10 + .../app/000-noverby-infinite-fetch/Level4.tsx | 9 + .../000-noverby-infinite-fetch/gqty/index.ts | 107 + .../gqty/schema.generated.ts | 2713 +++++++++++++++++ .../app/000-noverby-infinite-fetch/page.tsx | 12 + 7 files changed, 2872 insertions(+) create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/Level1.tsx create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/Level2.tsx create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/Level3.tsx create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/Level4.tsx create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/gqty/schema.generated.ts create mode 100644 examples/gnt/app/000-noverby-infinite-fetch/page.tsx diff --git a/examples/gnt/app/000-noverby-infinite-fetch/Level1.tsx b/examples/gnt/app/000-noverby-infinite-fetch/Level1.tsx new file mode 100644 index 000000000..0e8ad968f --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/Level1.tsx @@ -0,0 +1,10 @@ +import Level2 from './Level2'; +import { useQuery } from './gqty'; + +const Level1 = () => { + const query = useQuery(); + const node = query.nodes({ where: { parentId: { _is_null: true } } }).at(0); + return node?.id ? : null; +}; + +export default Level1; diff --git a/examples/gnt/app/000-noverby-infinite-fetch/Level2.tsx b/examples/gnt/app/000-noverby-infinite-fetch/Level2.tsx new file mode 100644 index 000000000..e3eb71f3c --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/Level2.tsx @@ -0,0 +1,11 @@ +import Level3 from './Level3'; +import { useQuery } from './gqty'; + +const Level2 = ({ id }: { id: string }) => { + const node = useQuery().node({ id }); + if (!node?.mimeId) return null; + + return ; +}; + +export default Level2; diff --git a/examples/gnt/app/000-noverby-infinite-fetch/Level3.tsx b/examples/gnt/app/000-noverby-infinite-fetch/Level3.tsx new file mode 100644 index 000000000..2f903d4ad --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/Level3.tsx @@ -0,0 +1,10 @@ +import Level4 from './Level4'; +import { useQuery } from './gqty'; + +const Level3 = ({ id }: { id: string }) => { + const query = useQuery().node({ id }); + query?.mutable; + return ; +}; + +export default Level3; diff --git a/examples/gnt/app/000-noverby-infinite-fetch/Level4.tsx b/examples/gnt/app/000-noverby-infinite-fetch/Level4.tsx new file mode 100644 index 000000000..1bc5361a3 --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/Level4.tsx @@ -0,0 +1,9 @@ +import { useQuery } from './gqty'; + +const Level4 = ({ id }: { id: string }) => { + const query = useQuery().node({ id }); + query?.id; + return null; +}; + +export default Level4; diff --git a/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts b/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts new file mode 100644 index 000000000..3ba2f65c9 --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts @@ -0,0 +1,107 @@ +/** + * GQty: You can safely modify this file based on your needs. + */ + +import { createLogger } from '@gqty/logger'; +import { createReactClient } from '@gqty/react'; +import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; +import { + generatedSchema, + scalarsEnumsHash, + type GeneratedSchema, +} from './schema.generated'; + +const queryFetcher: QueryFetcher = async function ( + { query, variables, operationName }, + fetchOptions +) { + // Modify "https://pgvhpsenoifywhuxnybq.nhost.run/v1/graphql" if needed + const response = await fetch( + 'https://pgvhpsenoifywhuxnybq.nhost.run/v1/graphql', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'x-hasura-role': 'public', + }, + body: JSON.stringify({ + query, + variables, + operationName, + }), + mode: 'cors', + ...fetchOptions, + } + ); + + if (response.status >= 400) { + throw new GQtyError( + `GraphQL endpoint responded with HTTP status ${response.status}.` + ); + } + + const text = await response.text(); + + try { + return JSON.parse(text); + } catch { + throw new GQtyError( + `Malformed JSON response: ${ + text.length > 50 ? text.slice(0, 50) + '...' : text + }` + ); + } +}; + +const cache = new Cache(undefined, { + maxAge: Infinity, + staleWhileRevalidate: 5 * 60 * 1000, + normalization: true, +}); + +export const client = createClient({ + schema: generatedSchema, + scalars: scalarsEnumsHash, + cache, + fetchOptions: { + fetcher: queryFetcher, + }, +}); + +createLogger(client).start(); + +// Core functions +export const { resolve, subscribe, schema } = client; + +// Legacy functions +export const { + query, + mutation, + mutate, + subscription, + resolved, + refetch, + track, +} = client; + +export const { + graphql, + useQuery, + usePaginatedQuery, + useTransactionQuery, + useLazyQuery, + useRefetch, + useMutation, + useMetaState, + prepareReactRender, + useHydrateCache, + prepareQuery, + useSubscription, +} = createReactClient(client, { + defaults: { + // Enable Suspense, you can override this option at hooks. + suspense: true, + }, +}); + +export * from './schema.generated'; diff --git a/examples/gnt/app/000-noverby-infinite-fetch/gqty/schema.generated.ts b/examples/gnt/app/000-noverby-infinite-fetch/gqty/schema.generated.ts new file mode 100644 index 000000000..7939e5535 --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/gqty/schema.generated.ts @@ -0,0 +1,2713 @@ +/** + * GQty AUTO-GENERATED CODE: PLEASE DO NOT MODIFY MANUALLY + */ + +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; +}; +/** All built-in and custom scalars, mapped to their actual values */ +export interface Scalars { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + jsonb: any; + timestamptz: any; + uuid: any; +} + +/** Boolean expression to compare columns of type "Boolean". All fields are combined with logical 'AND'. */ +export interface Boolean_comparison_exp { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +} + +/** Boolean expression to compare columns of type "Int". All fields are combined with logical 'AND'. */ +export interface Int_comparison_exp { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +} + +/** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ +export interface String_array_comparison_exp { + /** is the array contained in the given array value */ + _contained_in?: InputMaybe>; + /** does the array contain the given value */ + _contains?: InputMaybe>; + _eq?: InputMaybe>; + _gt?: InputMaybe>; + _gte?: InputMaybe>; + _in?: InputMaybe>>; + _is_null?: InputMaybe; + _lt?: InputMaybe>; + _lte?: InputMaybe>; + _neq?: InputMaybe>; + _nin?: InputMaybe>>; +} + +/** Boolean expression to compare columns of type "String". All fields are combined with logical 'AND'. */ +export interface String_comparison_exp { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + /** does the column match the given case-insensitive pattern */ + _ilike?: InputMaybe; + _in?: InputMaybe>; + /** does the column match the given POSIX regular expression, case insensitive */ + _iregex?: InputMaybe; + _is_null?: InputMaybe; + /** does the column match the given pattern */ + _like?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + /** does the column NOT match the given case-insensitive pattern */ + _nilike?: InputMaybe; + _nin?: InputMaybe>; + /** does the column NOT match the given POSIX regular expression, case insensitive */ + _niregex?: InputMaybe; + /** does the column NOT match the given pattern */ + _nlike?: InputMaybe; + /** does the column NOT match the given POSIX regular expression, case sensitive */ + _nregex?: InputMaybe; + /** does the column NOT match the given SQL regular expression */ + _nsimilar?: InputMaybe; + /** does the column match the given POSIX regular expression, case sensitive */ + _regex?: InputMaybe; + /** does the column match the given SQL regular expression */ + _similar?: InputMaybe; +} + +export interface checkUnique_nodes_args { + mime?: InputMaybe; +} + +/** ordering argument of a cursor */ +export enum cursor_ordering { + /** ascending ordering of the cursor */ + ASC = 'ASC', + /** descending ordering of the cursor */ + DESC = 'DESC', +} + +export interface jsonb_cast_exp { + String?: InputMaybe; +} + +/** Boolean expression to compare columns of type "jsonb". All fields are combined with logical 'AND'. */ +export interface jsonb_comparison_exp { + _cast?: InputMaybe; + /** is the column contained in the given json value */ + _contained_in?: InputMaybe; + /** does the column contain the given json value at the top level */ + _contains?: InputMaybe; + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + /** does the string exist as a top-level key in the column */ + _has_key?: InputMaybe; + /** do all of these strings exist as top-level keys in the column */ + _has_keys_all?: InputMaybe>; + /** do any of these strings exist as top-level keys in the column */ + _has_keys_any?: InputMaybe>; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +} + +/** order by aggregate values of table "members" */ +export interface members_aggregate_order_by { + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "members". All fields are combined with a logical 'AND'. */ +export interface members_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + accepted?: InputMaybe; + active?: InputMaybe; + email?: InputMaybe; + emailUser?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + owner?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; + user?: InputMaybe; +} + +/** order by max() on columns of table "members" */ +export interface members_max_order_by { + email?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + parentId?: InputMaybe; +} + +/** order by min() on columns of table "members" */ +export interface members_min_order_by { + email?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + parentId?: InputMaybe; +} + +/** Ordering options when selecting data from "members". */ +export interface members_order_by { + accepted?: InputMaybe; + active?: InputMaybe; + email?: InputMaybe; + emailUser?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + owner?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; + user?: InputMaybe; +} + +/** select columns of table "members" */ +export enum members_select_column { + /** column name */ + accepted = 'accepted', + /** column name */ + active = 'active', + /** column name */ + email = 'email', + /** column name */ + id = 'id', + /** column name */ + name = 'name', + /** column name */ + nodeId = 'nodeId', + /** column name */ + owner = 'owner', + /** column name */ + parentId = 'parentId', +} + +/** Streaming cursor of the table "members" */ +export interface members_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: members_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface members_stream_cursor_value_input { + accepted?: InputMaybe; + active?: InputMaybe; + email?: InputMaybe; + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + owner?: InputMaybe; + parentId?: InputMaybe; +} + +/** order by aggregate values of table "mimes" */ +export interface mimes_aggregate_order_by { + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "mimes". All fields are combined with a logical 'AND'. */ +export interface mimes_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + children?: InputMaybe; + context?: InputMaybe; + hidden?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + parents?: InputMaybe; + traits?: InputMaybe; + unique?: InputMaybe; +} + +/** order by max() on columns of table "mimes" */ +export interface mimes_max_order_by { + icon?: InputMaybe; + id?: InputMaybe; +} + +/** order by min() on columns of table "mimes" */ +export interface mimes_min_order_by { + icon?: InputMaybe; + id?: InputMaybe; +} + +/** Ordering options when selecting data from "mimes". */ +export interface mimes_order_by { + children_aggregate?: InputMaybe; + context?: InputMaybe; + hidden?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + parents_aggregate?: InputMaybe; + traits?: InputMaybe; + unique?: InputMaybe; +} + +/** select columns of table "mimes" */ +export enum mimes_select_column { + /** column name */ + context = 'context', + /** column name */ + hidden = 'hidden', + /** column name */ + icon = 'icon', + /** column name */ + id = 'id', + /** column name */ + traits = 'traits', + /** column name */ + unique = 'unique', +} + +/** Streaming cursor of the table "mimes" */ +export interface mimes_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: mimes_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface mimes_stream_cursor_value_input { + context?: InputMaybe; + hidden?: InputMaybe; + icon?: InputMaybe; + id?: InputMaybe; + traits?: InputMaybe; + unique?: InputMaybe; +} + +export interface nodes_aggregate_bool_exp { + bool_and?: InputMaybe; + bool_or?: InputMaybe; + count?: InputMaybe; +} + +export interface nodes_aggregate_bool_exp_bool_and { + arguments: nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns; + distinct?: InputMaybe; + filter?: InputMaybe; + predicate: Boolean_comparison_exp; +} + +export interface nodes_aggregate_bool_exp_bool_or { + arguments: nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns; + distinct?: InputMaybe; + filter?: InputMaybe; + predicate: Boolean_comparison_exp; +} + +export interface nodes_aggregate_bool_exp_count { + arguments?: InputMaybe>; + distinct?: InputMaybe; + filter?: InputMaybe; + predicate: Int_comparison_exp; +} + +/** order by aggregate values of table "nodes" */ +export interface nodes_aggregate_order_by { + avg?: InputMaybe; + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; + stddev?: InputMaybe; + stddev_pop?: InputMaybe; + stddev_samp?: InputMaybe; + sum?: InputMaybe; + var_pop?: InputMaybe; + var_samp?: InputMaybe; + variance?: InputMaybe; +} + +/** order by avg() on columns of table "nodes" */ +export interface nodes_avg_order_by { + index?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "nodes". All fields are combined with a logical 'AND'. */ +export interface nodes_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + attachable?: InputMaybe; + children?: InputMaybe; + children_aggregate?: InputMaybe; + context?: InputMaybe; + contextId?: InputMaybe; + contextOwners?: InputMaybe; + createdAt?: InputMaybe; + data?: InputMaybe; + getIndex?: InputMaybe; + id?: InputMaybe; + index?: InputMaybe; + inserts?: InputMaybe; + isContextOwner?: InputMaybe; + isOwner?: InputMaybe; + key?: InputMaybe; + members?: InputMaybe; + mime?: InputMaybe; + mimeId?: InputMaybe; + mutable?: InputMaybe; + name?: InputMaybe; + owner?: InputMaybe; + ownerId?: InputMaybe; + owners?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; + permissions?: InputMaybe; + relations?: InputMaybe; + updatedAt?: InputMaybe; +} + +/** order by max() on columns of table "nodes" */ +export interface nodes_max_order_by { + contextId?: InputMaybe; + createdAt?: InputMaybe; + id?: InputMaybe; + index?: InputMaybe; + key?: InputMaybe; + mimeId?: InputMaybe; + name?: InputMaybe; + ownerId?: InputMaybe; + parentId?: InputMaybe; + updatedAt?: InputMaybe; +} + +/** order by min() on columns of table "nodes" */ +export interface nodes_min_order_by { + contextId?: InputMaybe; + createdAt?: InputMaybe; + id?: InputMaybe; + index?: InputMaybe; + key?: InputMaybe; + mimeId?: InputMaybe; + name?: InputMaybe; + ownerId?: InputMaybe; + parentId?: InputMaybe; + updatedAt?: InputMaybe; +} + +/** Ordering options when selecting data from "nodes". */ +export interface nodes_order_by { + attachable?: InputMaybe; + children_aggregate?: InputMaybe; + context?: InputMaybe; + contextId?: InputMaybe; + contextOwners_aggregate?: InputMaybe; + createdAt?: InputMaybe; + data?: InputMaybe; + getIndex?: InputMaybe; + id?: InputMaybe; + index?: InputMaybe; + inserts_aggregate?: InputMaybe; + isContextOwner?: InputMaybe; + isOwner?: InputMaybe; + key?: InputMaybe; + members_aggregate?: InputMaybe; + mime?: InputMaybe; + mimeId?: InputMaybe; + mutable?: InputMaybe; + name?: InputMaybe; + owner?: InputMaybe; + ownerId?: InputMaybe; + owners_aggregate?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; + permissions_aggregate?: InputMaybe; + relations_aggregate?: InputMaybe; + updatedAt?: InputMaybe; +} + +/** select columns of table "nodes" */ +export enum nodes_select_column { + /** column name */ + attachable = 'attachable', + /** column name */ + contextId = 'contextId', + /** column name */ + createdAt = 'createdAt', + /** column name */ + data = 'data', + /** column name */ + id = 'id', + /** column name */ + index = 'index', + /** column name */ + key = 'key', + /** column name */ + mimeId = 'mimeId', + /** column name */ + mutable = 'mutable', + /** column name */ + name = 'name', + /** column name */ + ownerId = 'ownerId', + /** column name */ + parentId = 'parentId', + /** column name */ + updatedAt = 'updatedAt', +} + +/** select "nodes_aggregate_bool_exp_bool_and_arguments_columns" columns of table "nodes" */ +export enum nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns { + /** column name */ + attachable = 'attachable', + /** column name */ + mutable = 'mutable', +} + +/** select "nodes_aggregate_bool_exp_bool_or_arguments_columns" columns of table "nodes" */ +export enum nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns { + /** column name */ + attachable = 'attachable', + /** column name */ + mutable = 'mutable', +} + +/** order by stddev() on columns of table "nodes" */ +export interface nodes_stddev_order_by { + index?: InputMaybe; +} + +/** order by stddev_pop() on columns of table "nodes" */ +export interface nodes_stddev_pop_order_by { + index?: InputMaybe; +} + +/** order by stddev_samp() on columns of table "nodes" */ +export interface nodes_stddev_samp_order_by { + index?: InputMaybe; +} + +/** Streaming cursor of the table "nodes" */ +export interface nodes_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: nodes_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface nodes_stream_cursor_value_input { + attachable?: InputMaybe; + contextId?: InputMaybe; + createdAt?: InputMaybe; + data?: InputMaybe; + id?: InputMaybe; + index?: InputMaybe; + key?: InputMaybe; + mimeId?: InputMaybe; + mutable?: InputMaybe; + name?: InputMaybe; + ownerId?: InputMaybe; + parentId?: InputMaybe; + updatedAt?: InputMaybe; +} + +/** order by sum() on columns of table "nodes" */ +export interface nodes_sum_order_by { + index?: InputMaybe; +} + +/** order by var_pop() on columns of table "nodes" */ +export interface nodes_var_pop_order_by { + index?: InputMaybe; +} + +/** order by var_samp() on columns of table "nodes" */ +export interface nodes_var_samp_order_by { + index?: InputMaybe; +} + +/** order by variance() on columns of table "nodes" */ +export interface nodes_variance_order_by { + index?: InputMaybe; +} + +/** column ordering options */ +export enum order_by { + /** in ascending order, nulls last */ + asc = 'asc', + /** in ascending order, nulls first */ + asc_nulls_first = 'asc_nulls_first', + /** in ascending order, nulls last */ + asc_nulls_last = 'asc_nulls_last', + /** in descending order, nulls first */ + desc = 'desc', + /** in descending order, nulls first */ + desc_nulls_first = 'desc_nulls_first', + /** in descending order, nulls last */ + desc_nulls_last = 'desc_nulls_last', +} + +/** order by aggregate values of table "permissions" */ +export interface permissions_aggregate_order_by { + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "permissions". All fields are combined with a logical 'AND'. */ +export interface permissions_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + active?: InputMaybe; + context?: InputMaybe; + contextId?: InputMaybe; + delete?: InputMaybe; + id?: InputMaybe; + insert?: InputMaybe; + mimeId?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + parents?: InputMaybe; + role?: InputMaybe; + select?: InputMaybe; + update?: InputMaybe; +} + +/** order by max() on columns of table "permissions" */ +export interface permissions_max_order_by { + contextId?: InputMaybe; + id?: InputMaybe; + mimeId?: InputMaybe; + nodeId?: InputMaybe; + parents?: InputMaybe; + role?: InputMaybe; +} + +/** order by min() on columns of table "permissions" */ +export interface permissions_min_order_by { + contextId?: InputMaybe; + id?: InputMaybe; + mimeId?: InputMaybe; + nodeId?: InputMaybe; + parents?: InputMaybe; + role?: InputMaybe; +} + +/** Ordering options when selecting data from "permissions". */ +export interface permissions_order_by { + active?: InputMaybe; + context?: InputMaybe; + contextId?: InputMaybe; + delete?: InputMaybe; + id?: InputMaybe; + insert?: InputMaybe; + mimeId?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + parents?: InputMaybe; + role?: InputMaybe; + select?: InputMaybe; + update?: InputMaybe; +} + +/** select columns of table "permissions" */ +export enum permissions_select_column { + /** column name */ + active = 'active', + /** column name */ + contextId = 'contextId', + /** column name */ + delete = 'delete', + /** column name */ + id = 'id', + /** column name */ + insert = 'insert', + /** column name */ + mimeId = 'mimeId', + /** column name */ + nodeId = 'nodeId', + /** column name */ + parents = 'parents', + /** column name */ + role = 'role', + /** column name */ + select = 'select', + /** column name */ + update = 'update', +} + +/** Streaming cursor of the table "permissions" */ +export interface permissions_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: permissions_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface permissions_stream_cursor_value_input { + active?: InputMaybe; + contextId?: InputMaybe; + delete?: InputMaybe; + id?: InputMaybe; + insert?: InputMaybe; + mimeId?: InputMaybe; + nodeId?: InputMaybe; + parents?: InputMaybe>; + role?: InputMaybe; + select?: InputMaybe; + update?: InputMaybe; +} + +export interface relation_nodes_args { + relation_name?: InputMaybe; +} + +/** order by aggregate values of table "relations" */ +export interface relations_aggregate_order_by { + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "relations". All fields are combined with a logical 'AND'. */ +export interface relations_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + id?: InputMaybe; + name?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; +} + +/** order by max() on columns of table "relations" */ +export interface relations_max_order_by { + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + parentId?: InputMaybe; +} + +/** order by min() on columns of table "relations" */ +export interface relations_min_order_by { + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + parentId?: InputMaybe; +} + +/** Ordering options when selecting data from "relations". */ +export interface relations_order_by { + id?: InputMaybe; + name?: InputMaybe; + node?: InputMaybe; + nodeId?: InputMaybe; + parent?: InputMaybe; + parentId?: InputMaybe; +} + +/** select columns of table "relations" */ +export enum relations_select_column { + /** column name */ + id = 'id', + /** column name */ + name = 'name', + /** column name */ + nodeId = 'nodeId', + /** column name */ + parentId = 'parentId', +} + +/** Streaming cursor of the table "relations" */ +export interface relations_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: relations_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface relations_stream_cursor_value_input { + id?: InputMaybe; + name?: InputMaybe; + nodeId?: InputMaybe; + parentId?: InputMaybe; +} + +/** Boolean expression to compare columns of type "timestamptz". All fields are combined with logical 'AND'. */ +export interface timestamptz_comparison_exp { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +} + +/** order by aggregate values of table "auth.users" */ +export interface users_aggregate_order_by { + count?: InputMaybe; + max?: InputMaybe; + min?: InputMaybe; +} + +/** Boolean expression to filter rows from the table "auth.users". All fields are combined with a logical 'AND'. */ +export interface users_bool_exp { + _and?: InputMaybe>; + _not?: InputMaybe; + _or?: InputMaybe>; + displayName?: InputMaybe; + id?: InputMaybe; + memberships?: InputMaybe; +} + +/** order by max() on columns of table "auth.users" */ +export interface users_max_order_by { + displayName?: InputMaybe; + id?: InputMaybe; +} + +/** order by min() on columns of table "auth.users" */ +export interface users_min_order_by { + displayName?: InputMaybe; + id?: InputMaybe; +} + +/** Ordering options when selecting data from "auth.users". */ +export interface users_order_by { + displayName?: InputMaybe; + id?: InputMaybe; + memberships_aggregate?: InputMaybe; +} + +/** select columns of table "auth.users" */ +export enum users_select_column { + /** column name */ + displayName = 'displayName', + /** column name */ + id = 'id', +} + +/** Streaming cursor of the table "users" */ +export interface users_stream_cursor_input { + /** Stream column input with initial value */ + initial_value: users_stream_cursor_value_input; + /** cursor ordering */ + ordering?: InputMaybe; +} + +/** Initial value of the column from where the streaming should start */ +export interface users_stream_cursor_value_input { + displayName?: InputMaybe; + id?: InputMaybe; +} + +/** Boolean expression to compare columns of type "uuid". All fields are combined with logical 'AND'. */ +export interface uuid_comparison_exp { + _eq?: InputMaybe; + _gt?: InputMaybe; + _gte?: InputMaybe; + _in?: InputMaybe>; + _is_null?: InputMaybe; + _lt?: InputMaybe; + _lte?: InputMaybe; + _neq?: InputMaybe; + _nin?: InputMaybe>; +} + +export const scalarsEnumsHash: import('gqty').ScalarsEnumsHash = { + Boolean: true, + Float: true, + Int: true, + String: true, + cursor_ordering: true, + jsonb: true, + members_select_column: true, + mimes_select_column: true, + nodes_select_column: true, + nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns: true, + nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns: true, + order_by: true, + permissions_select_column: true, + relations_select_column: true, + timestamptz: true, + users_select_column: true, + uuid: true, +}; +export const generatedSchema = { + Boolean_comparison_exp: { + _eq: { __type: 'Boolean' }, + _gt: { __type: 'Boolean' }, + _gte: { __type: 'Boolean' }, + _in: { __type: '[Boolean!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: 'Boolean' }, + _lte: { __type: 'Boolean' }, + _neq: { __type: 'Boolean' }, + _nin: { __type: '[Boolean!]' }, + }, + Int_comparison_exp: { + _eq: { __type: 'Int' }, + _gt: { __type: 'Int' }, + _gte: { __type: 'Int' }, + _in: { __type: '[Int!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: 'Int' }, + _lte: { __type: 'Int' }, + _neq: { __type: 'Int' }, + _nin: { __type: '[Int!]' }, + }, + String_array_comparison_exp: { + _contained_in: { __type: '[String!]' }, + _contains: { __type: '[String!]' }, + _eq: { __type: '[String!]' }, + _gt: { __type: '[String!]' }, + _gte: { __type: '[String!]' }, + _in: { __type: '[[String!]!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: '[String!]' }, + _lte: { __type: '[String!]' }, + _neq: { __type: '[String!]' }, + _nin: { __type: '[[String!]!]' }, + }, + String_comparison_exp: { + _eq: { __type: 'String' }, + _gt: { __type: 'String' }, + _gte: { __type: 'String' }, + _ilike: { __type: 'String' }, + _in: { __type: '[String!]' }, + _iregex: { __type: 'String' }, + _is_null: { __type: 'Boolean' }, + _like: { __type: 'String' }, + _lt: { __type: 'String' }, + _lte: { __type: 'String' }, + _neq: { __type: 'String' }, + _nilike: { __type: 'String' }, + _nin: { __type: '[String!]' }, + _niregex: { __type: 'String' }, + _nlike: { __type: 'String' }, + _nregex: { __type: 'String' }, + _nsimilar: { __type: 'String' }, + _regex: { __type: 'String' }, + _similar: { __type: 'String' }, + }, + checkUnique_nodes_args: { mime: { __type: 'String' } }, + jsonb_cast_exp: { String: { __type: 'String_comparison_exp' } }, + jsonb_comparison_exp: { + _cast: { __type: 'jsonb_cast_exp' }, + _contained_in: { __type: 'jsonb' }, + _contains: { __type: 'jsonb' }, + _eq: { __type: 'jsonb' }, + _gt: { __type: 'jsonb' }, + _gte: { __type: 'jsonb' }, + _has_key: { __type: 'String' }, + _has_keys_all: { __type: '[String!]' }, + _has_keys_any: { __type: '[String!]' }, + _in: { __type: '[jsonb!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: 'jsonb' }, + _lte: { __type: 'jsonb' }, + _neq: { __type: 'jsonb' }, + _nin: { __type: '[jsonb!]' }, + }, + members: { + __typename: { __type: 'String!' }, + accepted: { __type: 'Boolean!' }, + active: { __type: 'Boolean!' }, + email: { __type: 'String' }, + emailUser: { __type: 'users' }, + id: { __type: 'uuid!' }, + name: { __type: 'String' }, + node: { __type: 'nodes' }, + nodeId: { __type: 'uuid' }, + owner: { __type: 'Boolean!' }, + parent: { __type: 'nodes' }, + parentId: { __type: 'uuid!' }, + user: { __type: 'users' }, + }, + members_aggregate_order_by: { + count: { __type: 'order_by' }, + max: { __type: 'members_max_order_by' }, + min: { __type: 'members_min_order_by' }, + }, + members_bool_exp: { + _and: { __type: '[members_bool_exp!]' }, + _not: { __type: 'members_bool_exp' }, + _or: { __type: '[members_bool_exp!]' }, + accepted: { __type: 'Boolean_comparison_exp' }, + active: { __type: 'Boolean_comparison_exp' }, + email: { __type: 'String_comparison_exp' }, + emailUser: { __type: 'users_bool_exp' }, + id: { __type: 'uuid_comparison_exp' }, + name: { __type: 'String_comparison_exp' }, + node: { __type: 'nodes_bool_exp' }, + nodeId: { __type: 'uuid_comparison_exp' }, + owner: { __type: 'Boolean_comparison_exp' }, + parent: { __type: 'nodes_bool_exp' }, + parentId: { __type: 'uuid_comparison_exp' }, + user: { __type: 'users_bool_exp' }, + }, + members_max_order_by: { + email: { __type: 'order_by' }, + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + }, + members_min_order_by: { + email: { __type: 'order_by' }, + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + }, + members_order_by: { + accepted: { __type: 'order_by' }, + active: { __type: 'order_by' }, + email: { __type: 'order_by' }, + emailUser: { __type: 'users_order_by' }, + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + node: { __type: 'nodes_order_by' }, + nodeId: { __type: 'order_by' }, + owner: { __type: 'order_by' }, + parent: { __type: 'nodes_order_by' }, + parentId: { __type: 'order_by' }, + user: { __type: 'users_order_by' }, + }, + members_stream_cursor_input: { + initial_value: { __type: 'members_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + members_stream_cursor_value_input: { + accepted: { __type: 'Boolean' }, + active: { __type: 'Boolean' }, + email: { __type: 'String' }, + id: { __type: 'uuid' }, + name: { __type: 'String' }, + nodeId: { __type: 'uuid' }, + owner: { __type: 'Boolean' }, + parentId: { __type: 'uuid' }, + }, + mimes: { + __typename: { __type: 'String!' }, + children: { + __type: '[mimes!]', + __args: { + distinct_on: '[mimes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[mimes_order_by!]', + where: 'mimes_bool_exp', + }, + }, + context: { __type: 'Boolean!' }, + hidden: { __type: 'Boolean!' }, + icon: { __type: 'String!' }, + id: { __type: 'String!' }, + parents: { + __type: '[mimes!]', + __args: { + distinct_on: '[mimes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[mimes_order_by!]', + where: 'mimes_bool_exp', + }, + }, + traits: { __type: 'jsonb!', __args: { path: 'String' } }, + unique: { __type: 'Boolean!' }, + }, + mimes_aggregate_order_by: { + count: { __type: 'order_by' }, + max: { __type: 'mimes_max_order_by' }, + min: { __type: 'mimes_min_order_by' }, + }, + mimes_bool_exp: { + _and: { __type: '[mimes_bool_exp!]' }, + _not: { __type: 'mimes_bool_exp' }, + _or: { __type: '[mimes_bool_exp!]' }, + children: { __type: 'mimes_bool_exp' }, + context: { __type: 'Boolean_comparison_exp' }, + hidden: { __type: 'Boolean_comparison_exp' }, + icon: { __type: 'String_comparison_exp' }, + id: { __type: 'String_comparison_exp' }, + parents: { __type: 'mimes_bool_exp' }, + traits: { __type: 'jsonb_comparison_exp' }, + unique: { __type: 'Boolean_comparison_exp' }, + }, + mimes_max_order_by: { + icon: { __type: 'order_by' }, + id: { __type: 'order_by' }, + }, + mimes_min_order_by: { + icon: { __type: 'order_by' }, + id: { __type: 'order_by' }, + }, + mimes_order_by: { + children_aggregate: { __type: 'mimes_aggregate_order_by' }, + context: { __type: 'order_by' }, + hidden: { __type: 'order_by' }, + icon: { __type: 'order_by' }, + id: { __type: 'order_by' }, + parents_aggregate: { __type: 'mimes_aggregate_order_by' }, + traits: { __type: 'order_by' }, + unique: { __type: 'order_by' }, + }, + mimes_stream_cursor_input: { + initial_value: { __type: 'mimes_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + mimes_stream_cursor_value_input: { + context: { __type: 'Boolean' }, + hidden: { __type: 'Boolean' }, + icon: { __type: 'String' }, + id: { __type: 'String' }, + traits: { __type: 'jsonb' }, + unique: { __type: 'Boolean' }, + }, + mutation: {}, + nodes: { + __typename: { __type: 'String!' }, + attachable: { __type: 'Boolean!' }, + checkUnique: { + __type: 'Boolean', + __args: { args: 'checkUnique_nodes_args!' }, + }, + children: { + __type: '[nodes!]!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + children_aggregate: { + __type: 'nodes_aggregate!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + context: { __type: 'nodes' }, + contextId: { __type: 'uuid' }, + contextOwners: { + __type: '[users!]', + __args: { + distinct_on: '[users_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[users_order_by!]', + where: 'users_bool_exp', + }, + }, + createdAt: { __type: 'timestamptz' }, + data: { __type: 'jsonb', __args: { path: 'String' } }, + getIndex: { __type: 'Int' }, + id: { __type: 'uuid!' }, + index: { __type: 'Int!' }, + inserts: { + __type: '[mimes!]', + __args: { + distinct_on: '[mimes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[mimes_order_by!]', + where: 'mimes_bool_exp', + }, + }, + isContextOwner: { __type: 'Boolean' }, + isOwner: { __type: 'Boolean' }, + key: { __type: 'String!' }, + members: { + __type: '[members!]!', + __args: { + distinct_on: '[members_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[members_order_by!]', + where: 'members_bool_exp', + }, + }, + mime: { __type: 'mimes' }, + mimeId: { __type: 'String' }, + mutable: { __type: 'Boolean!' }, + name: { __type: 'String!' }, + owner: { __type: 'users' }, + ownerId: { __type: 'uuid' }, + owners: { + __type: '[users!]', + __args: { + distinct_on: '[users_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[users_order_by!]', + where: 'users_bool_exp', + }, + }, + parent: { __type: 'nodes' }, + parentId: { __type: 'uuid' }, + permissions: { + __type: '[permissions!]!', + __args: { + distinct_on: '[permissions_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[permissions_order_by!]', + where: 'permissions_bool_exp', + }, + }, + relation: { + __type: '[nodes!]', + __args: { + args: 'relation_nodes_args!', + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + relations: { + __type: '[relations!]!', + __args: { + distinct_on: '[relations_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[relations_order_by!]', + where: 'relations_bool_exp', + }, + }, + updatedAt: { __type: 'timestamptz!' }, + }, + nodes_aggregate: { + __typename: { __type: 'String!' }, + aggregate: { __type: 'nodes_aggregate_fields' }, + nodes: { __type: '[nodes!]!' }, + }, + nodes_aggregate_bool_exp: { + bool_and: { __type: 'nodes_aggregate_bool_exp_bool_and' }, + bool_or: { __type: 'nodes_aggregate_bool_exp_bool_or' }, + count: { __type: 'nodes_aggregate_bool_exp_count' }, + }, + nodes_aggregate_bool_exp_bool_and: { + arguments: { + __type: + 'nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns!', + }, + distinct: { __type: 'Boolean' }, + filter: { __type: 'nodes_bool_exp' }, + predicate: { __type: 'Boolean_comparison_exp!' }, + }, + nodes_aggregate_bool_exp_bool_or: { + arguments: { + __type: + 'nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns!', + }, + distinct: { __type: 'Boolean' }, + filter: { __type: 'nodes_bool_exp' }, + predicate: { __type: 'Boolean_comparison_exp!' }, + }, + nodes_aggregate_bool_exp_count: { + arguments: { __type: '[nodes_select_column!]' }, + distinct: { __type: 'Boolean' }, + filter: { __type: 'nodes_bool_exp' }, + predicate: { __type: 'Int_comparison_exp!' }, + }, + nodes_aggregate_fields: { + __typename: { __type: 'String!' }, + avg: { __type: 'nodes_avg_fields' }, + count: { + __type: 'Int!', + __args: { columns: '[nodes_select_column!]', distinct: 'Boolean' }, + }, + max: { __type: 'nodes_max_fields' }, + min: { __type: 'nodes_min_fields' }, + stddev: { __type: 'nodes_stddev_fields' }, + stddev_pop: { __type: 'nodes_stddev_pop_fields' }, + stddev_samp: { __type: 'nodes_stddev_samp_fields' }, + sum: { __type: 'nodes_sum_fields' }, + var_pop: { __type: 'nodes_var_pop_fields' }, + var_samp: { __type: 'nodes_var_samp_fields' }, + variance: { __type: 'nodes_variance_fields' }, + }, + nodes_aggregate_order_by: { + avg: { __type: 'nodes_avg_order_by' }, + count: { __type: 'order_by' }, + max: { __type: 'nodes_max_order_by' }, + min: { __type: 'nodes_min_order_by' }, + stddev: { __type: 'nodes_stddev_order_by' }, + stddev_pop: { __type: 'nodes_stddev_pop_order_by' }, + stddev_samp: { __type: 'nodes_stddev_samp_order_by' }, + sum: { __type: 'nodes_sum_order_by' }, + var_pop: { __type: 'nodes_var_pop_order_by' }, + var_samp: { __type: 'nodes_var_samp_order_by' }, + variance: { __type: 'nodes_variance_order_by' }, + }, + nodes_avg_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_avg_order_by: { index: { __type: 'order_by' } }, + nodes_bool_exp: { + _and: { __type: '[nodes_bool_exp!]' }, + _not: { __type: 'nodes_bool_exp' }, + _or: { __type: '[nodes_bool_exp!]' }, + attachable: { __type: 'Boolean_comparison_exp' }, + children: { __type: 'nodes_bool_exp' }, + children_aggregate: { __type: 'nodes_aggregate_bool_exp' }, + context: { __type: 'nodes_bool_exp' }, + contextId: { __type: 'uuid_comparison_exp' }, + contextOwners: { __type: 'users_bool_exp' }, + createdAt: { __type: 'timestamptz_comparison_exp' }, + data: { __type: 'jsonb_comparison_exp' }, + getIndex: { __type: 'Int_comparison_exp' }, + id: { __type: 'uuid_comparison_exp' }, + index: { __type: 'Int_comparison_exp' }, + inserts: { __type: 'mimes_bool_exp' }, + isContextOwner: { __type: 'Boolean_comparison_exp' }, + isOwner: { __type: 'Boolean_comparison_exp' }, + key: { __type: 'String_comparison_exp' }, + members: { __type: 'members_bool_exp' }, + mime: { __type: 'mimes_bool_exp' }, + mimeId: { __type: 'String_comparison_exp' }, + mutable: { __type: 'Boolean_comparison_exp' }, + name: { __type: 'String_comparison_exp' }, + owner: { __type: 'users_bool_exp' }, + ownerId: { __type: 'uuid_comparison_exp' }, + owners: { __type: 'users_bool_exp' }, + parent: { __type: 'nodes_bool_exp' }, + parentId: { __type: 'uuid_comparison_exp' }, + permissions: { __type: 'permissions_bool_exp' }, + relations: { __type: 'relations_bool_exp' }, + updatedAt: { __type: 'timestamptz_comparison_exp' }, + }, + nodes_max_fields: { + __typename: { __type: 'String!' }, + contextId: { __type: 'uuid' }, + createdAt: { __type: 'timestamptz' }, + getIndex: { __type: 'Int' }, + id: { __type: 'uuid' }, + index: { __type: 'Int' }, + key: { __type: 'String' }, + mimeId: { __type: 'String' }, + name: { __type: 'String' }, + ownerId: { __type: 'uuid' }, + parentId: { __type: 'uuid' }, + updatedAt: { __type: 'timestamptz' }, + }, + nodes_max_order_by: { + contextId: { __type: 'order_by' }, + createdAt: { __type: 'order_by' }, + id: { __type: 'order_by' }, + index: { __type: 'order_by' }, + key: { __type: 'order_by' }, + mimeId: { __type: 'order_by' }, + name: { __type: 'order_by' }, + ownerId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + updatedAt: { __type: 'order_by' }, + }, + nodes_min_fields: { + __typename: { __type: 'String!' }, + contextId: { __type: 'uuid' }, + createdAt: { __type: 'timestamptz' }, + getIndex: { __type: 'Int' }, + id: { __type: 'uuid' }, + index: { __type: 'Int' }, + key: { __type: 'String' }, + mimeId: { __type: 'String' }, + name: { __type: 'String' }, + ownerId: { __type: 'uuid' }, + parentId: { __type: 'uuid' }, + updatedAt: { __type: 'timestamptz' }, + }, + nodes_min_order_by: { + contextId: { __type: 'order_by' }, + createdAt: { __type: 'order_by' }, + id: { __type: 'order_by' }, + index: { __type: 'order_by' }, + key: { __type: 'order_by' }, + mimeId: { __type: 'order_by' }, + name: { __type: 'order_by' }, + ownerId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + updatedAt: { __type: 'order_by' }, + }, + nodes_order_by: { + attachable: { __type: 'order_by' }, + children_aggregate: { __type: 'nodes_aggregate_order_by' }, + context: { __type: 'nodes_order_by' }, + contextId: { __type: 'order_by' }, + contextOwners_aggregate: { __type: 'users_aggregate_order_by' }, + createdAt: { __type: 'order_by' }, + data: { __type: 'order_by' }, + getIndex: { __type: 'order_by' }, + id: { __type: 'order_by' }, + index: { __type: 'order_by' }, + inserts_aggregate: { __type: 'mimes_aggregate_order_by' }, + isContextOwner: { __type: 'order_by' }, + isOwner: { __type: 'order_by' }, + key: { __type: 'order_by' }, + members_aggregate: { __type: 'members_aggregate_order_by' }, + mime: { __type: 'mimes_order_by' }, + mimeId: { __type: 'order_by' }, + mutable: { __type: 'order_by' }, + name: { __type: 'order_by' }, + owner: { __type: 'users_order_by' }, + ownerId: { __type: 'order_by' }, + owners_aggregate: { __type: 'users_aggregate_order_by' }, + parent: { __type: 'nodes_order_by' }, + parentId: { __type: 'order_by' }, + permissions_aggregate: { __type: 'permissions_aggregate_order_by' }, + relations_aggregate: { __type: 'relations_aggregate_order_by' }, + updatedAt: { __type: 'order_by' }, + }, + nodes_stddev_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_stddev_order_by: { index: { __type: 'order_by' } }, + nodes_stddev_pop_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_stddev_pop_order_by: { index: { __type: 'order_by' } }, + nodes_stddev_samp_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_stddev_samp_order_by: { index: { __type: 'order_by' } }, + nodes_stream_cursor_input: { + initial_value: { __type: 'nodes_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + nodes_stream_cursor_value_input: { + attachable: { __type: 'Boolean' }, + contextId: { __type: 'uuid' }, + createdAt: { __type: 'timestamptz' }, + data: { __type: 'jsonb' }, + id: { __type: 'uuid' }, + index: { __type: 'Int' }, + key: { __type: 'String' }, + mimeId: { __type: 'String' }, + mutable: { __type: 'Boolean' }, + name: { __type: 'String' }, + ownerId: { __type: 'uuid' }, + parentId: { __type: 'uuid' }, + updatedAt: { __type: 'timestamptz' }, + }, + nodes_sum_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Int' }, + }, + nodes_sum_order_by: { index: { __type: 'order_by' } }, + nodes_var_pop_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_var_pop_order_by: { index: { __type: 'order_by' } }, + nodes_var_samp_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_var_samp_order_by: { index: { __type: 'order_by' } }, + nodes_variance_fields: { + __typename: { __type: 'String!' }, + getIndex: { __type: 'Int' }, + index: { __type: 'Float' }, + }, + nodes_variance_order_by: { index: { __type: 'order_by' } }, + permissions: { + __typename: { __type: 'String!' }, + active: { __type: 'Boolean!' }, + context: { __type: 'nodes' }, + contextId: { __type: 'uuid' }, + delete: { __type: 'Boolean!' }, + id: { __type: 'uuid!' }, + insert: { __type: 'Boolean!' }, + mimeId: { __type: 'String' }, + node: { __type: 'nodes' }, + nodeId: { __type: 'uuid' }, + parents: { __type: '[String!]' }, + role: { __type: 'String!' }, + select: { __type: 'Boolean!' }, + update: { __type: 'Boolean!' }, + }, + permissions_aggregate_order_by: { + count: { __type: 'order_by' }, + max: { __type: 'permissions_max_order_by' }, + min: { __type: 'permissions_min_order_by' }, + }, + permissions_bool_exp: { + _and: { __type: '[permissions_bool_exp!]' }, + _not: { __type: 'permissions_bool_exp' }, + _or: { __type: '[permissions_bool_exp!]' }, + active: { __type: 'Boolean_comparison_exp' }, + context: { __type: 'nodes_bool_exp' }, + contextId: { __type: 'uuid_comparison_exp' }, + delete: { __type: 'Boolean_comparison_exp' }, + id: { __type: 'uuid_comparison_exp' }, + insert: { __type: 'Boolean_comparison_exp' }, + mimeId: { __type: 'String_comparison_exp' }, + node: { __type: 'nodes_bool_exp' }, + nodeId: { __type: 'uuid_comparison_exp' }, + parents: { __type: 'String_array_comparison_exp' }, + role: { __type: 'String_comparison_exp' }, + select: { __type: 'Boolean_comparison_exp' }, + update: { __type: 'Boolean_comparison_exp' }, + }, + permissions_max_order_by: { + contextId: { __type: 'order_by' }, + id: { __type: 'order_by' }, + mimeId: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parents: { __type: 'order_by' }, + role: { __type: 'order_by' }, + }, + permissions_min_order_by: { + contextId: { __type: 'order_by' }, + id: { __type: 'order_by' }, + mimeId: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parents: { __type: 'order_by' }, + role: { __type: 'order_by' }, + }, + permissions_order_by: { + active: { __type: 'order_by' }, + context: { __type: 'nodes_order_by' }, + contextId: { __type: 'order_by' }, + delete: { __type: 'order_by' }, + id: { __type: 'order_by' }, + insert: { __type: 'order_by' }, + mimeId: { __type: 'order_by' }, + node: { __type: 'nodes_order_by' }, + nodeId: { __type: 'order_by' }, + parents: { __type: 'order_by' }, + role: { __type: 'order_by' }, + select: { __type: 'order_by' }, + update: { __type: 'order_by' }, + }, + permissions_stream_cursor_input: { + initial_value: { __type: 'permissions_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + permissions_stream_cursor_value_input: { + active: { __type: 'Boolean' }, + contextId: { __type: 'uuid' }, + delete: { __type: 'Boolean' }, + id: { __type: 'uuid' }, + insert: { __type: 'Boolean' }, + mimeId: { __type: 'String' }, + nodeId: { __type: 'uuid' }, + parents: { __type: '[String!]' }, + role: { __type: 'String' }, + select: { __type: 'Boolean' }, + update: { __type: 'Boolean' }, + }, + query: { + __typename: { __type: 'String!' }, + member: { __type: 'members', __args: { id: 'uuid!' } }, + members: { + __type: '[members!]!', + __args: { + distinct_on: '[members_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[members_order_by!]', + where: 'members_bool_exp', + }, + }, + mime: { __type: 'mimes', __args: { id: 'String!' } }, + mimes: { + __type: '[mimes!]!', + __args: { + distinct_on: '[mimes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[mimes_order_by!]', + where: 'mimes_bool_exp', + }, + }, + node: { __type: 'nodes', __args: { id: 'uuid!' } }, + nodes: { + __type: '[nodes!]!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + nodesAggregate: { + __type: 'nodes_aggregate!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + permission: { __type: 'permissions', __args: { id: 'uuid!' } }, + permissions: { + __type: '[permissions!]!', + __args: { + distinct_on: '[permissions_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[permissions_order_by!]', + where: 'permissions_bool_exp', + }, + }, + relation: { __type: 'relations', __args: { id: 'uuid!' } }, + relations: { + __type: '[relations!]!', + __args: { + distinct_on: '[relations_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[relations_order_by!]', + where: 'relations_bool_exp', + }, + }, + user: { __type: 'users', __args: { id: 'uuid!' } }, + users: { + __type: '[users!]!', + __args: { + distinct_on: '[users_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[users_order_by!]', + where: 'users_bool_exp', + }, + }, + }, + relation_nodes_args: { relation_name: { __type: 'String' } }, + relations: { + __typename: { __type: 'String!' }, + id: { __type: 'uuid!' }, + name: { __type: 'String!' }, + node: { __type: 'nodes' }, + nodeId: { __type: 'uuid' }, + parent: { __type: 'nodes' }, + parentId: { __type: 'uuid!' }, + }, + relations_aggregate_order_by: { + count: { __type: 'order_by' }, + max: { __type: 'relations_max_order_by' }, + min: { __type: 'relations_min_order_by' }, + }, + relations_bool_exp: { + _and: { __type: '[relations_bool_exp!]' }, + _not: { __type: 'relations_bool_exp' }, + _or: { __type: '[relations_bool_exp!]' }, + id: { __type: 'uuid_comparison_exp' }, + name: { __type: 'String_comparison_exp' }, + node: { __type: 'nodes_bool_exp' }, + nodeId: { __type: 'uuid_comparison_exp' }, + parent: { __type: 'nodes_bool_exp' }, + parentId: { __type: 'uuid_comparison_exp' }, + }, + relations_max_order_by: { + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + }, + relations_min_order_by: { + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + nodeId: { __type: 'order_by' }, + parentId: { __type: 'order_by' }, + }, + relations_order_by: { + id: { __type: 'order_by' }, + name: { __type: 'order_by' }, + node: { __type: 'nodes_order_by' }, + nodeId: { __type: 'order_by' }, + parent: { __type: 'nodes_order_by' }, + parentId: { __type: 'order_by' }, + }, + relations_stream_cursor_input: { + initial_value: { __type: 'relations_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + relations_stream_cursor_value_input: { + id: { __type: 'uuid' }, + name: { __type: 'String' }, + nodeId: { __type: 'uuid' }, + parentId: { __type: 'uuid' }, + }, + subscription: { + __typename: { __type: 'String!' }, + member: { __type: 'members', __args: { id: 'uuid!' } }, + members: { + __type: '[members!]!', + __args: { + distinct_on: '[members_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[members_order_by!]', + where: 'members_bool_exp', + }, + }, + members_stream: { + __type: '[members!]!', + __args: { + batch_size: 'Int!', + cursor: '[members_stream_cursor_input]!', + where: 'members_bool_exp', + }, + }, + mime: { __type: 'mimes', __args: { id: 'String!' } }, + mimes: { + __type: '[mimes!]!', + __args: { + distinct_on: '[mimes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[mimes_order_by!]', + where: 'mimes_bool_exp', + }, + }, + mimes_stream: { + __type: '[mimes!]!', + __args: { + batch_size: 'Int!', + cursor: '[mimes_stream_cursor_input]!', + where: 'mimes_bool_exp', + }, + }, + node: { __type: 'nodes', __args: { id: 'uuid!' } }, + nodes: { + __type: '[nodes!]!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + nodesAggregate: { + __type: 'nodes_aggregate!', + __args: { + distinct_on: '[nodes_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[nodes_order_by!]', + where: 'nodes_bool_exp', + }, + }, + nodes_stream: { + __type: '[nodes!]!', + __args: { + batch_size: 'Int!', + cursor: '[nodes_stream_cursor_input]!', + where: 'nodes_bool_exp', + }, + }, + permission: { __type: 'permissions', __args: { id: 'uuid!' } }, + permissions: { + __type: '[permissions!]!', + __args: { + distinct_on: '[permissions_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[permissions_order_by!]', + where: 'permissions_bool_exp', + }, + }, + permissions_stream: { + __type: '[permissions!]!', + __args: { + batch_size: 'Int!', + cursor: '[permissions_stream_cursor_input]!', + where: 'permissions_bool_exp', + }, + }, + relation: { __type: 'relations', __args: { id: 'uuid!' } }, + relations: { + __type: '[relations!]!', + __args: { + distinct_on: '[relations_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[relations_order_by!]', + where: 'relations_bool_exp', + }, + }, + relations_stream: { + __type: '[relations!]!', + __args: { + batch_size: 'Int!', + cursor: '[relations_stream_cursor_input]!', + where: 'relations_bool_exp', + }, + }, + user: { __type: 'users', __args: { id: 'uuid!' } }, + users: { + __type: '[users!]!', + __args: { + distinct_on: '[users_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[users_order_by!]', + where: 'users_bool_exp', + }, + }, + users_stream: { + __type: '[users!]!', + __args: { + batch_size: 'Int!', + cursor: '[users_stream_cursor_input]!', + where: 'users_bool_exp', + }, + }, + }, + timestamptz_comparison_exp: { + _eq: { __type: 'timestamptz' }, + _gt: { __type: 'timestamptz' }, + _gte: { __type: 'timestamptz' }, + _in: { __type: '[timestamptz!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: 'timestamptz' }, + _lte: { __type: 'timestamptz' }, + _neq: { __type: 'timestamptz' }, + _nin: { __type: '[timestamptz!]' }, + }, + users: { + __typename: { __type: 'String!' }, + displayName: { __type: 'String!' }, + id: { __type: 'uuid!' }, + memberships: { + __type: '[members!]!', + __args: { + distinct_on: '[members_select_column!]', + limit: 'Int', + offset: 'Int', + order_by: '[members_order_by!]', + where: 'members_bool_exp', + }, + }, + }, + users_aggregate_order_by: { + count: { __type: 'order_by' }, + max: { __type: 'users_max_order_by' }, + min: { __type: 'users_min_order_by' }, + }, + users_bool_exp: { + _and: { __type: '[users_bool_exp!]' }, + _not: { __type: 'users_bool_exp' }, + _or: { __type: '[users_bool_exp!]' }, + displayName: { __type: 'String_comparison_exp' }, + id: { __type: 'uuid_comparison_exp' }, + memberships: { __type: 'members_bool_exp' }, + }, + users_max_order_by: { + displayName: { __type: 'order_by' }, + id: { __type: 'order_by' }, + }, + users_min_order_by: { + displayName: { __type: 'order_by' }, + id: { __type: 'order_by' }, + }, + users_order_by: { + displayName: { __type: 'order_by' }, + id: { __type: 'order_by' }, + memberships_aggregate: { __type: 'members_aggregate_order_by' }, + }, + users_stream_cursor_input: { + initial_value: { __type: 'users_stream_cursor_value_input!' }, + ordering: { __type: 'cursor_ordering' }, + }, + users_stream_cursor_value_input: { + displayName: { __type: 'String' }, + id: { __type: 'uuid' }, + }, + uuid_comparison_exp: { + _eq: { __type: 'uuid' }, + _gt: { __type: 'uuid' }, + _gte: { __type: 'uuid' }, + _in: { __type: '[uuid!]' }, + _is_null: { __type: 'Boolean' }, + _lt: { __type: 'uuid' }, + _lte: { __type: 'uuid' }, + _neq: { __type: 'uuid' }, + _nin: { __type: '[uuid!]' }, + }, +} as const; + +/** + * columns and relationships of "members" + */ +export interface members { + __typename?: 'members'; + accepted: ScalarsEnums['Boolean']; + active: ScalarsEnums['Boolean']; + email?: Maybe; + /** + * An object relationship + */ + emailUser?: Maybe; + id: ScalarsEnums['uuid']; + name?: Maybe; + /** + * An object relationship + */ + node?: Maybe; + nodeId?: Maybe; + owner: ScalarsEnums['Boolean']; + /** + * An object relationship + */ + parent?: Maybe; + parentId: ScalarsEnums['uuid']; + /** + * An object relationship + */ + user?: Maybe; +} + +/** + * columns and relationships of "mimes" + */ +export interface mimes { + __typename?: 'mimes'; + /** + * A computed field, executes function "children" + */ + children: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + context: ScalarsEnums['Boolean']; + hidden: ScalarsEnums['Boolean']; + icon: ScalarsEnums['String']; + id: ScalarsEnums['String']; + /** + * A computed field, executes function "parents" + */ + parents: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + traits: (args?: { + /** + * JSON select path + */ + path?: Maybe; + }) => ScalarsEnums['jsonb']; + unique: ScalarsEnums['Boolean']; +} + +export interface Mutation { + __typename?: 'Mutation'; +} + +/** + * columns and relationships of "nodes" + */ +export interface nodes { + __typename?: 'nodes'; + attachable: ScalarsEnums['Boolean']; + /** + * A computed field, executes function "check_unique" + */ + checkUnique: (args: { + /** + * input parameters for computed field "checkUnique" defined on table "nodes" + */ + args: checkUnique_nodes_args; + }) => Maybe; + /** + * An array relationship + */ + children: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Array; + /** + * An aggregate relationship + */ + children_aggregate: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => nodes_aggregate; + /** + * An object relationship + */ + context?: Maybe; + contextId?: Maybe; + /** + * A computed field, executes function "context_owners" + */ + contextOwners: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + createdAt?: Maybe; + data: (args?: { + /** + * JSON select path + */ + path?: Maybe; + }) => Maybe; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + id: ScalarsEnums['uuid']; + index: ScalarsEnums['Int']; + /** + * A computed field, executes function "inserts" + */ + inserts: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + /** + * A computed field, executes function "is_context_owner" + */ + isContextOwner?: Maybe; + /** + * A computed field, executes function "is_owner" + */ + isOwner?: Maybe; + key: ScalarsEnums['String']; + /** + * An array relationship + */ + members: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Array; + /** + * An object relationship + */ + mime?: Maybe; + mimeId?: Maybe; + mutable: ScalarsEnums['Boolean']; + name: ScalarsEnums['String']; + /** + * An object relationship + */ + owner?: Maybe; + ownerId?: Maybe; + /** + * A computed field, executes function "owners" + */ + owners: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + /** + * An object relationship + */ + parent?: Maybe; + parentId?: Maybe; + /** + * An array relationship + */ + permissions: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Array; + /** + * A computed field, executes function "relation" + */ + relation: (args: { + /** + * input parameters for computed field "relation" defined on table "nodes" + */ + args: relation_nodes_args; + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Maybe>; + /** + * An array relationship + */ + relations: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Array; + updatedAt: ScalarsEnums['timestamptz']; +} + +/** + * aggregated selection of "nodes" + */ +export interface nodes_aggregate { + __typename?: 'nodes_aggregate'; + aggregate?: Maybe; + nodes: Array; +} + +/** + * aggregate fields of "nodes" + */ +export interface nodes_aggregate_fields { + __typename?: 'nodes_aggregate_fields'; + avg?: Maybe; + count: (args?: { + columns?: Maybe>; + distinct?: Maybe; + }) => ScalarsEnums['Int']; + max?: Maybe; + min?: Maybe; + stddev?: Maybe; + stddev_pop?: Maybe; + stddev_samp?: Maybe; + sum?: Maybe; + var_pop?: Maybe; + var_samp?: Maybe; + variance?: Maybe; +} + +/** + * aggregate avg on columns + */ +export interface nodes_avg_fields { + __typename?: 'nodes_avg_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate max on columns + */ +export interface nodes_max_fields { + __typename?: 'nodes_max_fields'; + contextId?: Maybe; + createdAt?: Maybe; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + id?: Maybe; + index?: Maybe; + key?: Maybe; + mimeId?: Maybe; + name?: Maybe; + ownerId?: Maybe; + parentId?: Maybe; + updatedAt?: Maybe; +} + +/** + * aggregate min on columns + */ +export interface nodes_min_fields { + __typename?: 'nodes_min_fields'; + contextId?: Maybe; + createdAt?: Maybe; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + id?: Maybe; + index?: Maybe; + key?: Maybe; + mimeId?: Maybe; + name?: Maybe; + ownerId?: Maybe; + parentId?: Maybe; + updatedAt?: Maybe; +} + +/** + * aggregate stddev on columns + */ +export interface nodes_stddev_fields { + __typename?: 'nodes_stddev_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate stddev_pop on columns + */ +export interface nodes_stddev_pop_fields { + __typename?: 'nodes_stddev_pop_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate stddev_samp on columns + */ +export interface nodes_stddev_samp_fields { + __typename?: 'nodes_stddev_samp_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate sum on columns + */ +export interface nodes_sum_fields { + __typename?: 'nodes_sum_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate var_pop on columns + */ +export interface nodes_var_pop_fields { + __typename?: 'nodes_var_pop_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate var_samp on columns + */ +export interface nodes_var_samp_fields { + __typename?: 'nodes_var_samp_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * aggregate variance on columns + */ +export interface nodes_variance_fields { + __typename?: 'nodes_variance_fields'; + /** + * A computed field, executes function "get_index" + */ + getIndex?: Maybe; + index?: Maybe; +} + +/** + * columns and relationships of "permissions" + */ +export interface permissions { + __typename?: 'permissions'; + active: ScalarsEnums['Boolean']; + /** + * An object relationship + */ + context?: Maybe; + contextId?: Maybe; + delete: ScalarsEnums['Boolean']; + id: ScalarsEnums['uuid']; + insert: ScalarsEnums['Boolean']; + mimeId?: Maybe; + /** + * An object relationship + */ + node?: Maybe; + nodeId?: Maybe; + parents?: Maybe>; + role: ScalarsEnums['String']; + select: ScalarsEnums['Boolean']; + update: ScalarsEnums['Boolean']; +} + +export interface Query { + __typename?: 'Query'; + member: (args: { id: Scalars['uuid'] }) => Maybe; + members: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + mime: (args: { id: Scalars['String'] }) => Maybe; + mimes: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + node: (args: { id: Scalars['uuid'] }) => Maybe; + nodes: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + nodesAggregate: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => nodes_aggregate; + permission: (args: { id: Scalars['uuid'] }) => Maybe; + permissions: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + relation: (args: { id: Scalars['uuid'] }) => Maybe; + relations: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + user: (args: { id: Scalars['uuid'] }) => Maybe; + users: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; +} + +/** + * columns and relationships of "relations" + */ +export interface relations { + __typename?: 'relations'; + id: ScalarsEnums['uuid']; + name: ScalarsEnums['String']; + /** + * An object relationship + */ + node?: Maybe; + nodeId?: Maybe; + /** + * An object relationship + */ + parent?: Maybe; + parentId: ScalarsEnums['uuid']; +} + +export interface Subscription { + __typename?: 'Subscription'; + member: (args: { id: Scalars['uuid'] }) => Maybe; + members: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + members_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; + mime: (args: { id: Scalars['String'] }) => Maybe; + mimes: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + mimes_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; + node: (args: { id: Scalars['uuid'] }) => Maybe; + nodes: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + nodesAggregate: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => nodes_aggregate; + nodes_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; + permission: (args: { id: Scalars['uuid'] }) => Maybe; + permissions: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + permissions_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; + relation: (args: { id: Scalars['uuid'] }) => Maybe; + relations: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + relations_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; + user: (args: { id: Scalars['uuid'] }) => Maybe; + users: (args?: { + distinct_on?: Maybe>; + limit?: Maybe; + offset?: Maybe; + order_by?: Maybe>; + where?: Maybe; + }) => Array; + users_stream: (args: { + batch_size: Scalars['Int']; + cursor: Array>; + where?: Maybe; + }) => Array; +} + +/** + * User account information. Don't modify its structure as Hasura Auth relies on it to function properly. + */ +export interface users { + __typename?: 'users'; + displayName: ScalarsEnums['String']; + id: ScalarsEnums['uuid']; + /** + * An array relationship + */ + memberships: (args?: { + /** + * distinct select on columns + */ + distinct_on?: Maybe>; + /** + * limit the number of rows returned + */ + limit?: Maybe; + /** + * skip the first n rows. Use only with order_by + */ + offset?: Maybe; + /** + * sort the rows by one or more columns + */ + order_by?: Maybe>; + /** + * filter the rows returned + */ + where?: Maybe; + }) => Array; +} + +export interface GeneratedSchema { + query: Query; + mutation: Mutation; + subscription: Subscription; +} + +export type MakeNullable = { + [K in keyof T]: T[K] | undefined; +}; + +export interface ScalarsEnums extends MakeNullable { + cursor_ordering: cursor_ordering | undefined; + members_select_column: members_select_column | undefined; + mimes_select_column: mimes_select_column | undefined; + nodes_select_column: nodes_select_column | undefined; + nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns: + | nodes_select_column_nodes_aggregate_bool_exp_bool_and_arguments_columns + | undefined; + nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns: + | nodes_select_column_nodes_aggregate_bool_exp_bool_or_arguments_columns + | undefined; + order_by: order_by | undefined; + permissions_select_column: permissions_select_column | undefined; + relations_select_column: relations_select_column | undefined; + users_select_column: users_select_column | undefined; +} diff --git a/examples/gnt/app/000-noverby-infinite-fetch/page.tsx b/examples/gnt/app/000-noverby-infinite-fetch/page.tsx new file mode 100644 index 000000000..00390a8f9 --- /dev/null +++ b/examples/gnt/app/000-noverby-infinite-fetch/page.tsx @@ -0,0 +1,12 @@ +'use client'; + +import { Suspense } from 'react'; +import Level1 from './Level1'; + +export default function NoverbyInfiniteFetch() { + return ( + Loading ...}> + + + ); +} From 324be4fb1742cd1f999f41ef58f3afea68874c1a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 11 Aug 2023 22:28:35 +0800 Subject: [PATCH 099/122] fix(react): reduce infinite fetch when normalization is disabled --- .../000-noverby-infinite-fetch/gqty/index.ts | 12 +++-- packages/gqty/src/Client/context.ts | 1 - packages/gqty/src/Client/index.ts | 7 ++- packages/gqty/test/utils.ts | 1 - packages/react/src/ModifiedSet.ts | 21 ++++++++ packages/react/src/query/useQuery.ts | 51 +++++++++++++++---- 6 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 packages/react/src/ModifiedSet.ts diff --git a/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts b/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts index 3ba2f65c9..478e79a05 100644 --- a/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts +++ b/examples/gnt/app/000-noverby-infinite-fetch/gqty/index.ts @@ -2,7 +2,6 @@ * GQty: You can safely modify this file based on your needs. */ -import { createLogger } from '@gqty/logger'; import { createReactClient } from '@gqty/react'; import { Cache, GQtyError, createClient, type QueryFetcher } from 'gqty'; import { @@ -56,7 +55,7 @@ const queryFetcher: QueryFetcher = async function ( const cache = new Cache(undefined, { maxAge: Infinity, staleWhileRevalidate: 5 * 60 * 1000, - normalization: true, + normalization: false, }); export const client = createClient({ @@ -68,8 +67,6 @@ export const client = createClient({ }, }); -createLogger(client).start(); - // Core functions export const { resolve, subscribe, schema } = client; @@ -105,3 +102,10 @@ export const { }); export * from './schema.generated'; + +if (process.env.NODE_ENV === 'development' && typeof window !== 'undefined') { + import('@gqty/logger').then(({ createLogger }) => { + const logger = createLogger(client); + logger.start(); + }); +} diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index 000800243..25ae8127e 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -77,7 +77,6 @@ export const createContext = ({ // The only case we skip this is when fetching for SWR on 'default'. this.notifyCacheUpdate ||= data === undefined; - // onSelect?.(selection, cacheNode); selectSubscriptions.forEach((fn) => fn(selection, cacheNode)); }, subscribeSelect(callback) { diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index fd365464f..6d66057fa 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -124,6 +124,9 @@ export type Client = Persistors & /** Subscribe to debug events, useful for logging. */ subscribeDebugEvents: ReturnType['subscribe']; + + /** Get the cache instance of this client. */ + readonly cache: Cache; }; export const createClient = < @@ -207,7 +210,9 @@ export const createClient = < schema: accessor, subscribeDebugEvents: debug.subscribe, ...createPersistors(cache), - + get cache() { + return cache; + }, ...createLegacyClient({ accessor, cache, diff --git a/packages/gqty/test/utils.ts b/packages/gqty/test/utils.ts index 7fb27d6e0..fc6409b81 100644 --- a/packages/gqty/test/utils.ts +++ b/packages/gqty/test/utils.ts @@ -576,7 +576,6 @@ export const createTestClient = async ( scalars: scalarsEnumsHash, }), { - cache, client, queries, } diff --git a/packages/react/src/ModifiedSet.ts b/packages/react/src/ModifiedSet.ts new file mode 100644 index 000000000..a1cf06957 --- /dev/null +++ b/packages/react/src/ModifiedSet.ts @@ -0,0 +1,21 @@ +export default class ModifiedSet extends Set { + #lastInserted: T | undefined; + + add(value: T): this { + if (!super.has(value)) { + this.#lastInserted = value; + } + + return super.add(value); + } + + clear(): void { + this.#lastInserted = undefined; + + return super.clear(); + } + + get lastInserted() { + return this.#lastInserted; + } +} diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 64db8c0bc..af34cbf27 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -13,6 +13,7 @@ import { } from 'gqty'; import { MultiDict } from 'multidict'; import { useCallback, useEffect, useMemo, useState } from 'react'; +import ModifiedSet from '../ModifiedSet'; import { translateFetchPolicy, type LegacyFetchPolicy, @@ -97,7 +98,11 @@ export const createUseQuery = ( const cofetchingResolvers = new MultiDict(); - let currentResolver: ResolverParts | undefined = undefined; + // We keep track of the whole stack of resolvers ever created before a fetch + // happens. When the current cache has normalization disabled, and a fetch + // affects an existing cache key at the same time, all selections made in + // other contexts will also be included. + const resolverStack = new ModifiedSet(); return ({ extensions, @@ -128,10 +133,16 @@ export const createUseQuery = ( onSelect() { // Stick these resolvers together, their selections will be fetched // when either one of them requires a fetch. + const currentResolver = resolverStack.lastInserted; if (currentResolver && currentResolver !== resolver) { cofetchingResolvers.set(currentResolver, resolver); } + // Any selections triggers this resolver to be stacked. When a fetch + // happens without cache normalization, all stacked resovlers that + // has selections sharing the same cache key will also be fetched. + resolverStack.add(resolver); + // Trigger a fetch when selections are made outside of the rendering // phase, such as event listeners or polling. if (!getIsRendering()) { @@ -140,8 +151,6 @@ export const createUseQuery = ( }, }); - currentResolver = resolver; - return resolver; }, [cachePolicy, operationName, retryPolicy]); @@ -222,6 +231,29 @@ export const createUseQuery = ( if (!context.shouldFetch) return; try { + // Stitch stacked selections what shared the same cache key, even if + // those selections don't need fetching. Because without normalization + // they will be overwritten by this fetch. + // [ ] There is one overfetch triggered by parallel renders that I + // cannot eliminate right now. Deferring to future me. + if (!client.cache.normalizationOptions) { + selections.forEach(({ cacheKeys: [subType, subField] }) => { + resolverStack.forEach((stackResolver) => { + if (stackResolver === resolver) return; + + for (const { + cacheKeys: [objType, objField], + } of stackResolver.selections) { + if (subType == objType && subField == objField) { + cofetchingResolvers.set(resolver, stackResolver); + + return; + } + } + }); + }); + } + // Sticky co-fetching selections is only needed when more than one // active context are making selections in one component. This usually // happens with mixed usage of useQuery and other query methods. @@ -256,6 +288,11 @@ export const createUseQuery = ( context.notifyCacheUpdate = cachePolicy !== 'default'; state.promise = undefined; + // Release co-fetching context, dropping reference to the last resolver + // created in current render to prevent it from affecting the next render. + resolverStack.clear(); + cofetchingResolvers.delete(resolver); + setState(({ error }) => ({ error })); } }, @@ -268,14 +305,6 @@ export const createUseQuery = ( ] ); - // Release co-fetching context - useEffect( - () => () => { - cofetchingResolvers.delete(resolver); - }, - [] - ); - // context.shouldFetch only changes during component render, which happens // after this hook is called. A useEffect hook that runs every render // triggers a post-render check. From cc7384bff9b61f3d018078dddf6bb48ce5d02122 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 18 Aug 2023 16:07:46 +0800 Subject: [PATCH 100/122] fix(react): prevent non-query types from sticky fetching --- packages/react/src/query/useQuery.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index af34cbf27..9c917a3b4 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -238,6 +238,8 @@ export const createUseQuery = ( // cannot eliminate right now. Deferring to future me. if (!client.cache.normalizationOptions) { selections.forEach(({ cacheKeys: [subType, subField] }) => { + if (subType !== 'query') return; + resolverStack.forEach((stackResolver) => { if (stackResolver === resolver) return; From 25f041dbc8a94557da56028f86d0a84fec80caac Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 18 Aug 2023 16:48:36 +0800 Subject: [PATCH 101/122] chore(ci): test theguild's snapshot action --- .changeset/config.json | 8 +++++-- .changeset/pre.json | 11 ++++----- .github/workflows/canary.yaml | 44 +++++++---------------------------- package.json | 3 ++- pnpm-lock.yaml | 35 ++++++++++++++++++++++++---- 5 files changed, 52 insertions(+), 49 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index eee962cf0..ea8f115e8 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,12 +1,16 @@ { - "$schema": "https://unpkg.com/@changesets/config@1.5.0/schema.json", - "changelog": "@changesets/cli/changelog", + "$schema": "https://unpkg.com/@changesets/config@2.1.0/schema.json", + "changelog": ["@changesets/changelog-github", { "repo": "gqty-dev/gqty" }], "commit": false, "linked": [], "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": ["example-*"], + "snapshot": { + "useCalculatedVersion": true, + "prereleaseTemplate": "{tag}-{datetime}-{commit}" + }, "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true } diff --git a/.changeset/pre.json b/.changeset/pre.json index 70052b955..8064d073d 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -1,19 +1,16 @@ { - "mode": "pre", - "tag": "alpha", + "mode": "exit", + "tag": "beta", "initialVersions": { - "example-github": "1.0.0", + "example-gnt": "0.1.0", "example-react": "1.0.0", "example-vite": "0.0.0", - "integration-graphql-17": "0.0.1", "test-utils": "0.1.0", - "website": "0.0.1", "@gqty/cli": "3.3.0", "gqty": "2.3.0", "@gqty/logger": "2.0.2", "@gqty/react": "2.1.1", - "@gqty/subscriptions": "2.0.1", - "example-gnt": "0.1.0" + "@gqty/subscriptions": "2.0.1" }, "changesets": [ "afraid-flowers-thank", diff --git a/.github/workflows/canary.yaml b/.github/workflows/canary.yaml index cdcdb51af..855dd1ad3 100644 --- a/.github/workflows/canary.yaml +++ b/.github/workflows/canary.yaml @@ -6,38 +6,12 @@ on: - main jobs: - publish-canary: - name: Publish Canary - runs-on: ubuntu-latest - if: github.event.pull_request.head.repo.full_name == github.repository - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - with: - # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits - fetch-depth: 0 - - - uses: pnpm/action-setup@v2.2.4 - with: - version: ^7.1.1 - - name: Setup Node.js 16.x - uses: actions/setup-node@v3 - with: - node-version: 16.x - cache: 'pnpm' - - - name: Setup NPM credentials - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Install Dependencies - run: pnpm install - - - name: Release Canary - id: canary - uses: 'kamilkisiela/release-canary@master' - with: - npm-token: ${{ secrets.NPM_TOKEN }} - npm-script: 'pnpm release:canary' - changesets: true + release-canary: + uses: the-guild-org/shared-config/.github/workflows/release-snapshot.yml@main + with: + packageManager: pnpm + nodeVersion: 16 # align with the-guild-org/changesets-snapshot-action + npmTag: canary + secrets: + githubToken: ${{ secrets.GITHUB_TOKEN }} + npmToken: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 54a63492e..2bff41dae 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "license": "MIT", "type": "module", "scripts": { - "build": "pnpm build -r --stream", + "build": "pnpm -r --filter=!example-* build", "build:docs": "pnpm build:website", "build:website": "pnpm -r --filter website build:docs", "changeset": "changeset --", @@ -32,6 +32,7 @@ "devDependencies": { "@changesets/apply-release-plan": "^6.1.3", "@changesets/assemble-release-plan": "^5.2.3", + "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.0", "@changesets/config": "^2.3.0", "@changesets/read": "^0.5.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7aae2a1cd..6972e2759 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,9 @@ importers: '@changesets/assemble-release-plan': specifier: ^5.2.3 version: 5.2.3 + '@changesets/changelog-github': + specifier: ^0.4.8 + version: 0.4.8 '@changesets/cli': specifier: ^2.26.0 version: 2.26.0 @@ -3289,6 +3292,16 @@ packages: '@changesets/types': 5.2.1 dev: true + /@changesets/changelog-github@0.4.8: + resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} + dependencies: + '@changesets/get-github-info': 0.5.2 + '@changesets/types': 5.2.1 + dotenv: 8.6.0 + transitivePeerDependencies: + - encoding + dev: true + /@changesets/cli@2.26.0: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true @@ -3356,6 +3369,15 @@ packages: semver: 5.7.1 dev: true + /@changesets/get-github-info@0.5.2: + resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} + dependencies: + dataloader: 1.4.0 + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: @@ -7672,6 +7694,10 @@ packages: whatwg-url: 11.0.0 dev: true + /dataloader@1.4.0: + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dev: true + /dataloader@2.2.2: resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} dev: false @@ -7885,6 +7911,11 @@ packages: tslib: 2.6.1 dev: false + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: true + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -10797,7 +10828,6 @@ packages: optional: true dependencies: whatwg-url: 5.0.0 - dev: false /node-gyp-build@4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} @@ -12865,7 +12895,6 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} @@ -13450,7 +13479,6 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} @@ -13501,7 +13529,6 @@ packages: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} From ee5f83b601bd97ab16db08ab8bd6816221d173c6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 26 Aug 2023 14:14:45 +0800 Subject: [PATCH 102/122] fix(cli): missing default import in watch mode --- .changeset/config.json | 2 +- packages/cli/src/commands/default.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index ea8f115e8..7fa399019 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -9,7 +9,7 @@ "ignore": ["example-*"], "snapshot": { "useCalculatedVersion": true, - "prereleaseTemplate": "{tag}-{datetime}-{commit}" + "prereleaseTemplate": "{tag}-{datetime}.{commit}" }, "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { "onlyUpdatePeerDependentsWhenOutOfRange": true diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index 7594e7406..dbb333ca6 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -184,7 +184,9 @@ export const addCommand = (command: Command) => { const { printSchema } = await import('graphql'); const { FasterSMA: SMA } = await import('trading-signals'); const { default: throttle } = await import('lodash-es/throttle.js'); - const micromatch = await import('micromatch'); + const { + default: { isMatch }, + } = await import('micromatch'); const sma = new SMA(3); const getMovingAverage = () => { @@ -255,7 +257,7 @@ export const addCommand = (command: Command) => { // Watch file changes (async () => { for await (const { filename } of watch('.', { recursive: true })) { - if (micromatch.isMatch(filename, endpoints)) { + if (isMatch(filename, endpoints)) { doGenerateSchema(); } } From 09a6a4ad6dba57a8fd008f46ab1bdffe9ea034e6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sun, 27 Aug 2023 14:47:32 +0800 Subject: [PATCH 103/122] feat(cli): do not exit on fetch errors during watch mode --- packages/cli/src/commands/default.ts | 59 +++++++++++++++---- .../cli/src/commands/default/fetchSchema.ts | 17 ++---- .../src/commands/default/generateClient.ts | 2 +- packages/cli/src/commands/default/logger.ts | 46 +++++++++++---- 4 files changed, 86 insertions(+), 38 deletions(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index dbb333ca6..b33cf7f8f 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -89,7 +89,7 @@ export const addCommand = (command: Command) => { headers: convertHeadersInput(options.header) ?? config.introspection?.headers, headersByEndpoint: config.introspections, - }); + }).catch(terminateWithError); if (Object.keys(config.introspections ?? {}).length > 0) { // TODO: Save config to file. @@ -211,20 +211,34 @@ export const addCommand = (command: Command) => { headers: convertHeadersInput(options.header), headersByEndpoint: config.introspections, silent: true, + }).catch((e) => { + if (e instanceof Error) { + logger.errorProgress(e.message); + + return Promise.resolve(undefined); + } else { + return Promise.reject(e); + } }); + if (!schema) return; + const schemaText = printSchema(schema); - if (schemaText === lastSchema) return; + if (schemaText !== lastSchema) { + lastSchema = schemaText; - lastSchema = schemaText; + await generateClient(schema, { + destination: '', + ...config, + }); - await generateClient(schema, { - destination: '', - ...config, - }); + sma.update(Date.now() - start); + } - sma.update(Date.now() - start); + logger.infoProgress( + 'Watching for schema changes... (Ctrl+C to exit)' + ); } finally { mutexLock = false; } @@ -234,9 +248,9 @@ export const addCommand = (command: Command) => { ); let mutexLock = false; - let lastSchema: string = printSchema(schema); + let lastSchema = printSchema(schema); - logger.info('[GQty] Watching for schema changes... (Ctrl+C to exit)'); + logger.infoProgress('Watching for schema changes... (Ctrl+C to exit)'); // Polling loop, only happens with URL endpoints. if (endpoints.some((endpoint) => isURL(endpoint))) { @@ -256,15 +270,25 @@ export const addCommand = (command: Command) => { // Watch file changes (async () => { + let shouldRun = false; + for await (const { filename } of watch('.', { recursive: true })) { if (isMatch(filename, endpoints)) { - doGenerateSchema(); + // Already queued + if (shouldRun) continue; + shouldRun = true; + + process.nextTick(() => { + // Already executed + if (!shouldRun) return; + shouldRun = false; + + doGenerateSchema(); + }); } } })(); } - - // TODO: Change all `import type` from generated.ts to `import { type ... }` }); }; @@ -325,3 +349,12 @@ const promptTypescript = async (defaultValue: boolean) => { return typescript; }; + +const terminateWithError = (e: unknown) => { + if (e instanceof Error) { + logger.error(e.message); + process.exit(1); + } + + throw e; +}; diff --git a/packages/cli/src/commands/default/fetchSchema.ts b/packages/cli/src/commands/default/fetchSchema.ts index d66ab6ab3..e16a3e2b0 100644 --- a/packages/cli/src/commands/default/fetchSchema.ts +++ b/packages/cli/src/commands/default/fetchSchema.ts @@ -65,7 +65,7 @@ export const fetchSchemas = async ( // If still no headers provided, throw. if (inHeaders === undefined) { - terminateWithError(e); + throw e; } headersByEndpoint[endpoint] = { headers: inHeaders }; @@ -73,16 +73,16 @@ export const fetchSchemas = async ( try { await doFetchSchema(); } catch (e) { - terminateWithError(e); + throw e; } } else { - terminateWithError(e); + throw e; } } } if (schemas.length === 0) { - terminateWithError(new Error('No schemas found.')); + throw new Error('No schemas found.'); } if (!options.silent) { @@ -93,15 +93,6 @@ export const fetchSchemas = async ( return deps.buildSchema(schemas.join('\n')); }; -const terminateWithError = (e: unknown) => { - if (e instanceof Error) { - logger.error(e.message); - process.exit(1); - } - - throw e; -}; - const fetchSchema = async ( endpoint: string, options?: Pick & { silent?: boolean } diff --git a/packages/cli/src/commands/default/generateClient.ts b/packages/cli/src/commands/default/generateClient.ts index 3db4d7a54..9b2ec3ac4 100644 --- a/packages/cli/src/commands/default/generateClient.ts +++ b/packages/cli/src/commands/default/generateClient.ts @@ -45,7 +45,7 @@ export const generateClient = async ( ); logger.successProgress(`Code generation completed.`); - console.log(''); + console.log(); }; const promptRegenerate = async (message: string): Promise => { diff --git a/packages/cli/src/commands/default/logger.ts b/packages/cli/src/commands/default/logger.ts index f2bcc54b8..4107d5aff 100644 --- a/packages/cli/src/commands/default/logger.ts +++ b/packages/cli/src/commands/default/logger.ts @@ -1,32 +1,56 @@ import chalk from 'chalk'; +/** + * When false, triggers a new line before the next non-progress log. + */ +let isNewline = true; +let lastProgressLength = 0; + +const normalMessage = (message?: any, ...optionalParams: any[]): void => { + if (!isNewline) { + isNewline = true; + console.log(''); + } + + return console.log(message, ...optionalParams); +}; + +const progressMessage = (message: string) => { + isNewline = false; + + const result = process.stdout.write( + `\r${message}`.padEnd(lastProgressLength, ' ') + ); + + lastProgressLength = message.length + 1; + + return result; +}; + export const logger = { error(...args: unknown[]) { - console.log(chalk.red('✗'), ...args); + return normalMessage(chalk.red('✗'), ...args); }, warn(...args: unknown[]) { - console.log(chalk.yellow('!'), ...args); + return normalMessage(chalk.yellow('!'), ...args); }, info(...args: unknown[]) { - console.log(chalk.cyan('i'), ...args); + return normalMessage(chalk.cyan('i'), ...args); }, success(...args: unknown[]) { - console.log(chalk.green('✔'), ...args); + return normalMessage(chalk.green('✔'), ...args); }, errorProgress(message: string) { - process.stdout.write(progressMessage(chalk.red('✗') + ' ' + message)); + return progressMessage(chalk.red('✗') + ' ' + message); }, warnProgress(message: string) { - process.stdout.write(progressMessage(chalk.yellow('!') + ' ' + message)); + return progressMessage(chalk.yellow('!') + ' ' + message); }, infoProgress(message: string) { - process.stdout.write(progressMessage(chalk.cyan('i') + ' ' + message)); + return progressMessage(chalk.cyan('i') + ' ' + message); }, successProgress(message: string) { - process.stdout.write(progressMessage(chalk.green('✔') + ' ' + message)); + return progressMessage(chalk.green('✔') + ' ' + message); }, }; - -const progressMessage = (message: string) => - `\r${message}`.padEnd((process.stdout.columns ?? 0) - 2, ' '); From f9c5703c0b416cbf5d4c4d5a24c66e55b291c55d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 9 Sep 2023 02:08:39 +0800 Subject: [PATCH 104/122] chore(deps): remove unused packages --- examples/gnt/tsconfig.json | 2 +- packages/gqty/package.json | 4 - pnpm-lock.yaml | 173 +++++++++++++++++++++++++++++++++---- 3 files changed, 159 insertions(+), 20 deletions(-) diff --git a/examples/gnt/tsconfig.json b/examples/gnt/tsconfig.json index ba756c01c..a194d778a 100644 --- a/examples/gnt/tsconfig.json +++ b/examples/gnt/tsconfig.json @@ -8,7 +8,7 @@ "jsx": "preserve", "lib": ["dom", "dom.iterable", "esnext"], "module": "esnext", - "moduleResolution": "bundler", + "moduleResolution": "node", "noEmit": true, "paths": { "~/*": ["./*"] }, "plugins": [{ "name": "next" }], diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 47df2d62c..956cc1f13 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -60,8 +60,6 @@ "@types/mkdirp": "^1.0.2", "@types/node": "^18.15.5", "@types/object-hash": "^3.0.2", - "@types/react": "^17.0.53", - "@types/react-dom": "^18.0.11", "@types/wait-on": "^5.3.1", "@types/ws": "^8.5.4", "bob-esbuild-cli": "^4.0.0", @@ -75,8 +73,6 @@ "just-memoize": "^2.2.0", "mkdirp": "^2.1.5", "open-cli": "^7.2.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", "rimraf": "^4.4.0", "serve": "^14.2.0", "size-limit": "^8.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6972e2759..a89bfcff4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -589,12 +589,6 @@ importers: '@types/object-hash': specifier: ^3.0.2 version: 3.0.2 - '@types/react': - specifier: ^17.0.53 - version: 17.0.53 - '@types/react-dom': - specifier: ^18.0.11 - version: 18.2.7 '@types/wait-on': specifier: ^5.3.1 version: 5.3.1 @@ -603,7 +597,7 @@ importers: version: 8.5.4 bob-esbuild-cli: specifier: ^4.0.0 - version: 4.0.0(bob-esbuild@4.0.3) + version: 4.0.0 concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -624,19 +618,13 @@ importers: version: 5.12.1(graphql@16.7.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.16.3) mkdirp: specifier: ^2.1.5 version: 2.1.5 open-cli: specifier: ^7.2.0 version: 7.2.0 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) rimraf: specifier: ^4.4.0 version: 4.4.0 @@ -660,7 +648,7 @@ importers: version: 7.0.1 ws: specifier: ^8.13.0 - version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + version: 8.13.0 publishDirectory: dist packages/logger: @@ -5003,6 +4991,48 @@ packages: jest-util: 29.5.0 slash: 3.0.0 + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.3 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@18.16.3) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6916,6 +6946,19 @@ packages: readable-stream: 3.6.0 dev: false + /bob-esbuild-cli@4.0.0: + resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} + engines: {node: '>=14.13.1'} + hasBin: true + peerDependencies: + bob-esbuild: ^4.0.0 + peerDependenciesMeta: + bob-esbuild: + optional: true + dependencies: + commander: 9.5.0 + dev: true + /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -9768,6 +9811,34 @@ packages: transitivePeerDependencies: - supports-color + /jest-cli@29.5.0(@types/node@18.16.3): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@18.16.3) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest-cli@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9795,6 +9866,45 @@ packages: - supports-color - ts-node + /jest-config@29.5.0(@types/node@18.16.3): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.9 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.3 + babel-jest: 29.5.0(@babel/core@7.22.9) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10138,6 +10248,26 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 + /jest@29.5.0(@types/node@18.16.3): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@18.16.3) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + /jest@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -13639,6 +13769,19 @@ packages: utf-8-validate: 5.0.10 dev: true + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} From 65a4aab8b79dcc6b5c64536610fa8976faa802e6 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Mon, 11 Sep 2023 02:29:25 +0800 Subject: [PATCH 105/122] chore(lint): add prettier-plugin-jsdoc --- .prettierrc | 1 + package.json | 1 + packages/react/src/ModifiedSet.ts | 15 +- packages/react/src/query/useQuery.ts | 9 +- pnpm-lock.yaml | 442 +++++++++++++++++---------- 5 files changed, 300 insertions(+), 168 deletions(-) diff --git a/.prettierrc b/.prettierrc index ec66f0d83..80f33db58 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { + "plugins": ["prettier-plugin-jsdoc"], "printWidth": 80, "proseWrap": "always", "semi": true, diff --git a/package.json b/package.json index 2bff41dae..dad0f48a7 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "jest": "^29.5.0", "open": "^8.4.2", "prettier": "^2.8.6", + "prettier-plugin-jsdoc": "^0.4.2", "pretty-quick": "^3.1.3", "rimraf": "^4.4.0", "semver": "^7.3.8", diff --git a/packages/react/src/ModifiedSet.ts b/packages/react/src/ModifiedSet.ts index a1cf06957..b561c5494 100644 --- a/packages/react/src/ModifiedSet.ts +++ b/packages/react/src/ModifiedSet.ts @@ -1,21 +1,26 @@ +/** A Set that tracks the last added value. */ export default class ModifiedSet extends Set { - #lastInserted: T | undefined; + #lastAdded: T | undefined; add(value: T): this { if (!super.has(value)) { - this.#lastInserted = value; + this.#lastAdded = value; } return super.add(value); } clear(): void { - this.#lastInserted = undefined; + this.#lastAdded = undefined; return super.clear(); } - get lastInserted() { - return this.#lastInserted; + /** + * Only changes when the last call to `.add()` is a new value had not been + * added yet. + */ + get lastAdded() { + return this.#lastAdded; } } diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 9c917a3b4..5332e4c6d 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -52,13 +52,12 @@ export interface UseQueryOptions { } export interface UseQueryState { - /** - * Useful for `Non-Suspense` usage. - */ + /** Useful for `Non-Suspense` usage. */ readonly isLoading: boolean; /** - * Latest scheduler Error, for more in-depth error management use `useMetaState` hook + * Latest scheduler Error, for more in-depth error management use + * `useMetaState` hook */ error?: GQtyError; } @@ -133,7 +132,7 @@ export const createUseQuery = ( onSelect() { // Stick these resolvers together, their selections will be fetched // when either one of them requires a fetch. - const currentResolver = resolverStack.lastInserted; + const currentResolver = resolverStack.lastAdded; if (currentResolver && currentResolver !== resolver) { cofetchingResolvers.set(currentResolver, resolver); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a89bfcff4..622b12bc1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,6 +90,9 @@ importers: prettier: specifier: ^2.8.6 version: 2.8.6 + prettier-plugin-jsdoc: + specifier: ^0.4.2 + version: 0.4.2(prettier@2.8.6) pretty-quick: specifier: ^3.1.3 version: 3.1.3(prettier@2.8.6) @@ -597,7 +600,7 @@ importers: version: 8.5.4 bob-esbuild-cli: specifier: ^4.0.0 - version: 4.0.0 + version: 4.0.0(bob-esbuild@4.0.3) concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -618,7 +621,7 @@ importers: version: 5.12.1(graphql@16.7.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.16.3) + version: 29.5.0(@types/node@18.16.3)(ts-node@10.9.1) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -648,7 +651,7 @@ importers: version: 7.0.1 ws: specifier: ^8.13.0 - version: 8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) publishDirectory: dist packages/logger: @@ -4991,48 +4994,6 @@ packages: jest-util: 29.5.0 slash: 3.0.0 - /@jest/core@29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@18.16.3) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5901,6 +5862,12 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.16.3 + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + dependencies: + '@types/ms': 0.7.31 + dev: true + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false @@ -6030,6 +5997,12 @@ packages: /@types/lodash@4.14.194: resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + dependencies: + '@types/unist': 2.0.8 + dev: true + /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: @@ -6153,6 +6126,10 @@ packages: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + dev: true + /@types/use-sync-external-store@0.0.3: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true @@ -6938,6 +6915,10 @@ packages: engines: {node: '>=8'} dev: true + /binary-searching@2.0.5: + resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} + dev: true + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -6946,19 +6927,6 @@ packages: readable-stream: 3.6.0 dev: false - /bob-esbuild-cli@4.0.0: - resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} - engines: {node: '>=14.13.1'} - hasBin: true - peerDependencies: - bob-esbuild: ^4.0.0 - peerDependenciesMeta: - bob-esbuild: - optional: true - dependencies: - commander: 9.5.0 - dev: true - /bob-esbuild-cli@4.0.0(bob-esbuild@4.0.3): resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} engines: {node: '>=14.13.1'} @@ -7372,6 +7340,10 @@ packages: engines: {node: '>=12.20'} dev: false + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: true + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -7502,6 +7474,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /comment-parser@1.4.0: + resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + engines: {node: '>= 12.0.0'} + dev: true + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -7803,6 +7780,12 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: true + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -7912,6 +7895,11 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + /diff@5.1.0: + resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} + engines: {node: '>=0.3.1'} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -9811,34 +9799,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@18.16.3): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.16.3) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest-cli@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -9866,45 +9826,6 @@ packages: - supports-color - ts-node - /jest-config@29.5.0(@types/node@18.16.3): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.22.9 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.16.3 - babel-jest: 29.5.0(@babel/core@7.22.9) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-config@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10248,26 +10169,6 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@18.16.3): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.16.3) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /jest@29.5.0(@types/node@18.16.3)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10638,6 +10539,31 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true + /mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + dependencies: + '@types/mdast': 3.0.12 + '@types/unist': 2.0.8 + decode-named-character-reference: 1.0.2 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + dependencies: + '@types/mdast': 3.0.12 + dev: true + /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} @@ -10680,6 +10606,181 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + /micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + dev: true + + /micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + dev: true + + /micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + dependencies: + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + dependencies: + micromark-util-types: 1.1.0 + dev: true + + /micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + dev: true + + /micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + dev: true + + /micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + dev: true + + /micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + dev: true + + /micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + dependencies: + '@types/debug': 4.1.8 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11590,6 +11691,20 @@ packages: engines: {node: '>= 0.8.0'} dev: true + /prettier-plugin-jsdoc@0.4.2(prettier@2.8.6): + resolution: {integrity: sha512-w2jnAQm3z0GAG0bhzVJeehzDtrhGMSxJjit5ApCc2oxWfc7+jmLAkbtdOXaSpfwZz3IWkk+PiQPeRrLNpbM+Mw==} + engines: {node: '>=12.0.0'} + peerDependencies: + prettier: '>=2.1.2' + dependencies: + binary-searching: 2.0.5 + comment-parser: 1.4.0 + mdast-util-from-markdown: 1.3.1 + prettier: 2.8.6 + transitivePeerDependencies: + - supports-color + dev: true + /prettier@2.8.6: resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} @@ -12233,6 +12348,13 @@ packages: dependencies: tslib: 2.6.1 + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + /safe-array-concat@1.0.0: resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} engines: {node: '>=0.4'} @@ -13352,6 +13474,12 @@ packages: crypto-random-string: 4.0.0 dev: true + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.8 + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -13481,6 +13609,17 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + /uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + dequal: 2.0.3 + diff: 5.1.0 + kleur: 4.1.5 + sade: 1.8.1 + dev: true + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -13769,19 +13908,6 @@ packages: utf-8-validate: 5.0.10 dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} From 5b246f6b25d6ae7f144c3678625340afb7ad6610 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 5 Oct 2023 00:55:37 +0800 Subject: [PATCH 106/122] feat(react): add extensions option to useMutation --- packages/react/src/mutation/useMutation.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/react/src/mutation/useMutation.ts b/packages/react/src/mutation/useMutation.ts index 55768903d..9d8151599 100644 --- a/packages/react/src/mutation/useMutation.ts +++ b/packages/react/src/mutation/useMutation.ts @@ -48,6 +48,10 @@ export interface UseMutationOptions { * Enable suspense behavior */ suspense?: boolean; + /** + * extension object that allows user to pass custom data to the query fetcher. + */ + extensions?: Record; } export type UseMutationState = { @@ -85,6 +89,7 @@ export const createUseMutation = ( awaitRefetchQueries, suspense = defaultSuspense, noCache = false, + extensions, }: UseMutationOptions> = {} ) => { const [state, setState] = React.useState<{ @@ -119,6 +124,7 @@ export const createUseMutation = ( { cachePolicy: noCache ? 'no-store' : 'no-cache', retryPolicy: retry, + extensions, } ).then((data) => { const refetches = refetchQueries.map((v) => refetch(v)); From e9f8a0350de1519957d4d0e493da66a2858f1691 Mon Sep 17 00:00:00 2001 From: Vicary A Date: Thu, 5 Oct 2023 00:59:41 +0800 Subject: [PATCH 107/122] chore(prettier): remove jsdoc plugin to prevent noisy changes --- .prettierrc | 1 - package.json | 1 - packages/cli/src/generate.ts | 8 +- pnpm-lock.yaml | 281 ----------------------------------- 4 files changed, 6 insertions(+), 285 deletions(-) diff --git a/.prettierrc b/.prettierrc index 80f33db58..ec66f0d83 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,4 @@ { - "plugins": ["prettier-plugin-jsdoc"], "printWidth": 80, "proseWrap": "always", "semi": true, diff --git a/package.json b/package.json index dad0f48a7..2bff41dae 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "jest": "^29.5.0", "open": "^8.4.2", "prettier": "^2.8.6", - "prettier-plugin-jsdoc": "^0.4.2", "pretty-quick": "^3.1.3", "rimraf": "^4.4.0", "semver": "^7.3.8", diff --git a/packages/cli/src/generate.ts b/packages/cli/src/generate.ts index 787a124ae..245fde51e 100644 --- a/packages/cli/src/generate.ts +++ b/packages/cli/src/generate.ts @@ -64,16 +64,19 @@ export interface GenerateOptions { react?: boolean; /** * Define enums as string types instead of enums objects + * * @default false */ enumsAsStrings?: boolean; /** * Define enums as const types instead of enums objects + * * @default false */ enumsAsConst?: boolean; /** * Generate subscriptions client with target package + * * @default false */ subscriptions?: boolean | string; @@ -94,8 +97,9 @@ export interface GenerateOptions { export interface TransformSchemaOptions { /** - * Get a field in which every argument is optional, if this functions return "true", gqty will _always__ ignore it's arguments, - * and you won't be able to specify them + * Get a field in which every argument is optional, if this functions return + * "true", gqty will _always__ ignore it's arguments, and you won't be able to + * specify them */ ignoreArgs?: (type: GraphQLField) => boolean; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 622b12bc1..bb17dec86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,9 +90,6 @@ importers: prettier: specifier: ^2.8.6 version: 2.8.6 - prettier-plugin-jsdoc: - specifier: ^0.4.2 - version: 0.4.2(prettier@2.8.6) pretty-quick: specifier: ^3.1.3 version: 3.1.3(prettier@2.8.6) @@ -5862,12 +5859,6 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.16.3 - /@types/debug@4.1.8: - resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} - dependencies: - '@types/ms': 0.7.31 - dev: true - /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false @@ -5997,12 +5988,6 @@ packages: /@types/lodash@4.14.194: resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==} - /@types/mdast@3.0.12: - resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} - dependencies: - '@types/unist': 2.0.8 - dev: true - /@types/micromatch@4.0.2: resolution: {integrity: sha512-oqXqVb0ci19GtH0vOA/U2TmHTcRY9kuZl4mqUxe0QmJAlIW13kzhuK5pi1i9+ngav8FjpSb9FVS/GE00GLX1VA==} dependencies: @@ -6126,10 +6111,6 @@ packages: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/unist@2.0.8: - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} - dev: true - /@types/use-sync-external-store@0.0.3: resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: true @@ -6915,10 +6896,6 @@ packages: engines: {node: '>=8'} dev: true - /binary-searching@2.0.5: - resolution: {integrity: sha512-v4N2l3RxL+m4zDxyxz3Ne2aTmiPn8ZUpKFpdPtO+ItW1NcTCXA7JeHG5GMBSvoKSkQZ9ycS+EouDVxYB9ufKWA==} - dev: true - /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -7340,10 +7317,6 @@ packages: engines: {node: '>=12.20'} dev: false - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: true - /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -7474,11 +7447,6 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true - /comment-parser@1.4.0: - resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} - engines: {node: '>= 12.0.0'} - dev: true - /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -7780,12 +7748,6 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - dependencies: - character-entities: 2.0.2 - dev: true - /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -7895,11 +7857,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - /diff@5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -10539,31 +10496,6 @@ packages: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /mdast-util-from-markdown@1.3.1: - resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} - dependencies: - '@types/mdast': 3.0.12 - '@types/unist': 2.0.8 - decode-named-character-reference: 1.0.2 - mdast-util-to-string: 3.2.0 - micromark: 3.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-decode-string: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - unist-util-stringify-position: 3.0.3 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: true - - /mdast-util-to-string@3.2.0: - resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} - dependencies: - '@types/mdast': 3.0.12 - dev: true - /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} @@ -10606,181 +10538,6 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /micromark-core-commonmark@1.1.0: - resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-factory-destination: 1.1.0 - micromark-factory-label: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-factory-title: 1.1.0 - micromark-factory-whitespace: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-classify-character: 1.1.0 - micromark-util-html-tag-name: 1.2.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-factory-destination@1.1.0: - resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-label@1.1.0: - resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-factory-space@1.1.0: - resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-title@1.1.0: - resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-factory-whitespace@1.1.0: - resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} - dependencies: - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-character@1.2.0: - resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} - dependencies: - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-chunked@1.1.0: - resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-classify-character@1.1.0: - resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-combine-extensions@1.1.0: - resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-decode-numeric-character-reference@1.1.0: - resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-decode-string@1.1.0: - resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 1.2.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-encode@1.1.0: - resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} - dev: true - - /micromark-util-html-tag-name@1.2.0: - resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} - dev: true - - /micromark-util-normalize-identifier@1.1.0: - resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} - dependencies: - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-resolve-all@1.1.0: - resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} - dependencies: - micromark-util-types: 1.1.0 - dev: true - - /micromark-util-sanitize-uri@1.2.0: - resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} - dependencies: - micromark-util-character: 1.2.0 - micromark-util-encode: 1.1.0 - micromark-util-symbol: 1.1.0 - dev: true - - /micromark-util-subtokenize@1.1.0: - resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} - dependencies: - micromark-util-chunked: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - dev: true - - /micromark-util-symbol@1.1.0: - resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} - dev: true - - /micromark-util-types@1.1.0: - resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} - dev: true - - /micromark@3.2.0: - resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} - dependencies: - '@types/debug': 4.1.8 - debug: 4.3.4 - decode-named-character-reference: 1.0.2 - micromark-core-commonmark: 1.1.0 - micromark-factory-space: 1.1.0 - micromark-util-character: 1.2.0 - micromark-util-chunked: 1.1.0 - micromark-util-combine-extensions: 1.1.0 - micromark-util-decode-numeric-character-reference: 1.1.0 - micromark-util-encode: 1.1.0 - micromark-util-normalize-identifier: 1.1.0 - micromark-util-resolve-all: 1.1.0 - micromark-util-sanitize-uri: 1.2.0 - micromark-util-subtokenize: 1.1.0 - micromark-util-symbol: 1.1.0 - micromark-util-types: 1.1.0 - uvu: 0.5.6 - transitivePeerDependencies: - - supports-color - dev: true - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11691,20 +11448,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-jsdoc@0.4.2(prettier@2.8.6): - resolution: {integrity: sha512-w2jnAQm3z0GAG0bhzVJeehzDtrhGMSxJjit5ApCc2oxWfc7+jmLAkbtdOXaSpfwZz3IWkk+PiQPeRrLNpbM+Mw==} - engines: {node: '>=12.0.0'} - peerDependencies: - prettier: '>=2.1.2' - dependencies: - binary-searching: 2.0.5 - comment-parser: 1.4.0 - mdast-util-from-markdown: 1.3.1 - prettier: 2.8.6 - transitivePeerDependencies: - - supports-color - dev: true - /prettier@2.8.6: resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} @@ -12348,13 +12091,6 @@ packages: dependencies: tslib: 2.6.1 - /sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - dependencies: - mri: 1.2.0 - dev: true - /safe-array-concat@1.0.0: resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} engines: {node: '>=0.4'} @@ -13474,12 +13210,6 @@ packages: crypto-random-string: 4.0.0 dev: true - /unist-util-stringify-position@3.0.3: - resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} - dependencies: - '@types/unist': 2.0.8 - dev: true - /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -13609,17 +13339,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - dependencies: - dequal: 2.0.3 - diff: 5.1.0 - kleur: 4.1.5 - sade: 1.8.1 - dev: true - /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} From 2f0da89c6413a280de43441413937a34b29bb1cc Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 31 Oct 2023 02:59:18 +0800 Subject: [PATCH 108/122] feat(react): increase compatibility with non-web environments --- packages/gqty/src/Helpers/FrailMap.ts | 2 +- packages/react/src/query/useQuery.ts | 33 +++++++++++++++++++-------- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/gqty/src/Helpers/FrailMap.ts b/packages/gqty/src/Helpers/FrailMap.ts index 394806320..81ab715c9 100644 --- a/packages/gqty/src/Helpers/FrailMap.ts +++ b/packages/gqty/src/Helpers/FrailMap.ts @@ -49,7 +49,7 @@ export class FrailMap extends Map { set(key: K, value: V, options?: SetOptions) { return super.set( key, - (options?.strong + (options?.strong || typeof WeakRef === 'undefined' ? new StrongRef({ data: value }) : new WeakRef({ data: value })) as V ); diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 5332e4c6d..922d6a55c 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -209,11 +209,13 @@ export const createUseQuery = ( const refetch = useCallback( async (options?: { ignoreCache?: boolean; skipPrepass?: boolean }) => { - if (state.promise !== undefined) return; + if (state.promise !== undefined) { + return; + } if ( !fetchInBackground && - globalThis.document?.visibilityState !== 'visible' + globalThis.document?.visibilityState === 'hidden' ) { return; } @@ -227,7 +229,9 @@ export const createUseQuery = ( context.shouldFetch = true; } - if (!context.shouldFetch) return; + if (!context.shouldFetch) { + return; + } try { // Stitch stacked selections what shared the same cache key, even if @@ -237,10 +241,14 @@ export const createUseQuery = ( // cannot eliminate right now. Deferring to future me. if (!client.cache.normalizationOptions) { selections.forEach(({ cacheKeys: [subType, subField] }) => { - if (subType !== 'query') return; + if (subType !== 'query') { + return; + } resolverStack.forEach((stackResolver) => { - if (stackResolver === resolver) return; + if (stackResolver === resolver) { + return; + } for (const { cacheKeys: [objType, objField], @@ -310,7 +318,9 @@ export const createUseQuery = ( // after this hook is called. A useEffect hook that runs every render // triggers a post-render check. useEffect(() => { - if (!refetchOnRender) return; + if (!refetchOnRender) { + return; + } refetch({ skipPrepass: true }); }); @@ -322,7 +332,9 @@ export const createUseQuery = ( // refetchOnReconnect useOnlineEffect(() => { - if (!refetchOnReconnect) return; + if (!refetchOnReconnect) { + return; + } refetch(); }, [refetchOnReconnect]); @@ -330,7 +342,9 @@ export const createUseQuery = ( // A rerender should be enough to trigger a soft check, fetch will // happen if any of the accessed cache value is stale. useWindowFocusEffect(() => { - if (!refetchOnWindowVisible) return; + if (!refetchOnWindowVisible) { + return; + } refetch(); }); @@ -338,8 +352,9 @@ export const createUseQuery = ( // Legacy staleWhileRevalidate const swrDiff = usePrevious(staleWhileRevalidate); useUpdateEffect(() => { - if (!staleWhileRevalidate || Object.is(staleWhileRevalidate, swrDiff)) + if (!staleWhileRevalidate || Object.is(staleWhileRevalidate, swrDiff)) { return; + } refetch({ ignoreCache: true }); }, [refetch, swrDiff]); From 2d303e68ab4b33d855efbed1ad829fb7b6494b7a Mon Sep 17 00:00:00 2001 From: Vicary A Date: Tue, 7 Nov 2023 17:06:34 +0800 Subject: [PATCH 109/122] fix(react): prevent infinite fetches --- package.json | 1 - packages/gqty/src/Client/resolvers.ts | 4 +- packages/react/src/query/useQuery.ts | 42 ++++++---- packages/react/src/useIsRendering.ts | 16 ---- packages/react/src/useRenderSession.ts | 19 +++++ packages/react/src/useSafeRender.ts | 25 ------ scripts/canary-release.cjs | 103 ------------------------- 7 files changed, 49 insertions(+), 161 deletions(-) delete mode 100644 packages/react/src/useIsRendering.ts create mode 100644 packages/react/src/useRenderSession.ts delete mode 100644 packages/react/src/useSafeRender.ts delete mode 100644 scripts/canary-release.cjs diff --git a/package.json b/package.json index 2bff41dae..d2f4679d2 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,6 @@ "pretty": "pretty-quick", "pretty:all": "prettier --write \"**/*.{ts,tsx}\"", "publish:all": "changeset version && pnpm i && pnpm test && pnpm -r publish --access public", - "release:canary": "node scripts/canary-release.cjs", "test": "pnpm test -r --no-sort --no-bail --stream --", "test:ci": "pnpm test -r --workspace-concurrency=0 --no-sort --no-bail --stream --", "test:watch": "pnpm test:watch -r --no-bail --no-sort --stream", diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index f1aec928f..adaeda8d3 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -200,13 +200,13 @@ export const createResolvers = ({ }); context.subscribeSelect((selection, cache) => { + onSelect?.(selection, cache); + // Prevents infinite loop created by legacy functions if (!selections.has(selection)) { selections.add(selection); parentContext?.select(selection, cache); } - - onSelect?.(selection, cache); }); const accessor = createSchemaAccessor(context); diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 922d6a55c..7527e2da7 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -19,8 +19,8 @@ import { type LegacyFetchPolicy, type OnErrorHandler, } from '../common'; -import { useIsRendering } from '../useIsRendering'; import { useOnlineEffect } from '../useOnlineEffect'; +import { useRenderSession } from '../useRenderSession'; import { useWindowFocusEffect } from '../useWindowFocusEffect'; import { type ReactClientOptionsWithDefaults } from '../utils'; @@ -122,7 +122,10 @@ export const createUseQuery = ( staleWhileRevalidate = defaultStaleWhileRevalidate, } = {}) => { const render = useRerender(); - const getIsRendering = useIsRendering(); + const renderSession = useRenderSession(); + + renderSession.set('isRendering', true); + const resolver = useMemo(() => { const resolver = client.createResolver({ cachePolicy, @@ -137,16 +140,28 @@ export const createUseQuery = ( cofetchingResolvers.set(currentResolver, resolver); } - // Any selections triggers this resolver to be stacked. When a fetch - // happens without cache normalization, all stacked resovlers that - // has selections sharing the same cache key will also be fetched. + // Any selections happening will have this resolver stacked. When a + // fetch happens without cache normalization, all stacked resovlers + // with selections sharing common cache keys are also included. resolverStack.add(resolver); // Trigger a fetch when selections are made outside of the rendering // phase, such as event listeners or polling. - if (!getIsRendering()) { + if (!renderSession.get('isRendering')) { refetch({ skipPrepass: true }); } + // Clears previous selections if the current render is not triggered + // by a fetch, because it implies a user-triggered state change where + // old query inputs may be stale. Only clear selections once right + // when the first selection is made. + else if ( + !renderSession.get('postFetch') && + !renderSession.get('postFetchSelectionCleared') + ) { + renderSession.set('postFetchSelectionCleared', true); + + selections.clear(); + } }, }); @@ -192,12 +207,6 @@ export const createUseQuery = ( if (state.promise && !context.hasCacheHit) throw state.promise; } - // Reset selections to prevent overfetching, but do it only when the - // previous render is not triggered by a successful fetch. - if (context.shouldFetch === false) { - selections.clear(); - } - useEffect( () => context.cache.subscribe( @@ -284,6 +293,7 @@ export const createUseQuery = ( setState({ promise }); } + // Let the fetch happen. await promise; } catch (e) { const error = GQtyError.create(e); @@ -297,11 +307,15 @@ export const createUseQuery = ( context.notifyCacheUpdate = cachePolicy !== 'default'; state.promise = undefined; - // Release co-fetching context, dropping reference to the last resolver - // created in current render to prevent it from affecting the next render. + // Release co-fetching context, dropping reference to the last + // resolver created in current render to prevent it from affecting the + // next render. resolverStack.clear(); cofetchingResolvers.delete(resolver); + renderSession.set('postFetch', true); + + // Trigger a post-fetch render, keeps the error if caught. setState(({ error }) => ({ error })); } }, diff --git a/packages/react/src/useIsRendering.ts b/packages/react/src/useIsRendering.ts deleted file mode 100644 index 4a27239ad..000000000 --- a/packages/react/src/useIsRendering.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useCallback, useEffect, useRef } from 'react'; - -/** - * Returns a stable getter of a boolean value that indicates if the component is - * currently rendering. - */ -export const useIsRendering = () => { - const isRenderingRef = useRef(true); - isRenderingRef.current = true; - - useEffect(() => { - isRenderingRef.current = false; - }); - - return useCallback(() => isRenderingRef.current, []); -}; diff --git a/packages/react/src/useRenderSession.ts b/packages/react/src/useRenderSession.ts new file mode 100644 index 000000000..15caab666 --- /dev/null +++ b/packages/react/src/useRenderSession.ts @@ -0,0 +1,19 @@ +import { useEffect, useRef } from 'react'; + +export type Options = { + onClear?: (map: Map) => void; +}; + +/** + * Returns a map with its value cleared after each render, useful for + * render-sensitive state managements. + */ +export const useRenderSession = ({ + onClear = (map) => map.clear(), +}: Options = {}) => { + const mapRef = useRef(new Map()); + + useEffect(() => onClear(mapRef.current)); + + return mapRef.current; +}; diff --git a/packages/react/src/useSafeRender.ts b/packages/react/src/useSafeRender.ts deleted file mode 100644 index eb4e7651d..000000000 --- a/packages/react/src/useSafeRender.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { useRerender } from '@react-hookz/web'; -import { useCallback, useEffect, useRef } from 'react'; -import { useIsRendering } from './useIsRendering'; - -/** - * Triggers a re-render only when outside of a render phase, and at-most once - * before next render happens. - */ -export const useSafeRender = () => { - const isCalledRef = useRef(false); - - useEffect(() => { - isCalledRef.current = false; - }); - - const render = useRerender(); - const isRendering = useIsRendering(); - - return useCallback(() => { - if (isCalledRef.current || isRendering()) return; - isCalledRef.current = true; - - render(); - }, [render]); -}; diff --git a/scripts/canary-release.cjs b/scripts/canary-release.cjs deleted file mode 100644 index 4f002e749..000000000 --- a/scripts/canary-release.cjs +++ /dev/null @@ -1,103 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const semver = require('semver'); -const cp = require('child_process'); -const { basename } = require('path'); - -const { read: readConfig } = require('@changesets/config'); -const readChangesets = require('@changesets/read').default; -const assembleReleasePlan = - require('@changesets/assemble-release-plan').default; -const applyReleasePlan = require('@changesets/apply-release-plan').default; -const { getPackages } = require('@manypkg/get-packages'); - -function getNewVersion(version, type) { - const gitHash = cp - .spawnSync('git', ['rev-parse', '--short', 'HEAD']) - .stdout.toString() - .trim(); - - return semver.inc(version, `pre${type}`, true, 'alpha-' + gitHash); -} - -function getRelevantChangesets(baseBranch) { - const comparePoint = cp - .spawnSync('git', ['merge-base', `origin/${baseBranch}`, 'HEAD']) - .stdout.toString() - .trim(); - console.log('compare point', comparePoint); - const listModifiedFiles = cp - .spawnSync('git', ['diff', '--name-only', comparePoint]) - .stdout.toString() - .trim() - .split('\n'); - console.log('listModifiedFiles', listModifiedFiles); - - const items = listModifiedFiles - .filter((f) => f.startsWith('.changeset')) - .map((f) => basename(f, '.md')); - console.log('items', items); - - return items; -} - -async function updateVersions() { - const cwd = process.cwd(); - const packages = await getPackages(cwd); - const config = await readConfig(cwd, packages); - const modifiedChangesets = getRelevantChangesets(config.baseBranch); - const changesets = (await readChangesets(cwd)).filter((change) => - modifiedChangesets.includes(change.id) - ); - - if (changesets.length === 0) { - console.warn( - `Unable to find any relevant package for canary publishing. Please make sure changesets exists!` - ); - process.exit(0); - } else { - const releasePlan = assembleReleasePlan( - changesets, - packages, - config, - [], - false - ); - - if (releasePlan.releases.length === 0) { - console.warn( - `Unable to find any relevant package for canary releasing. Please make sure changesets exists!` - ); - process.exit(0); - } else { - for (const release of releasePlan.releases) { - if (release.type !== 'none') { - release.newVersion = getNewVersion(release.oldVersion, release.type); - } - } - - await applyReleasePlan( - releasePlan, - packages, - { - ...config, - commit: false, - }, - false, - true - ); - - cp.execSync(`pnpm ci:release`, { - stdio: 'inherit', - }); - } - } -} - -updateVersions() - .then(() => { - console.info(`Done!`); - }) - .catch((err) => { - console.error(err); - process.exit(1); - }); From 315f8780ebf552e07d42ceaddda16930f84b40bf Mon Sep 17 00:00:00 2001 From: Vicary A Date: Wed, 8 Nov 2023 13:26:58 +0800 Subject: [PATCH 110/122] feat(react): experimental greedy fetch --- packages/react/src/query/useQuery.ts | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/react/src/query/useQuery.ts b/packages/react/src/query/useQuery.ts index 7527e2da7..2cc14bd99 100644 --- a/packages/react/src/query/useQuery.ts +++ b/packages/react/src/query/useQuery.ts @@ -49,6 +49,7 @@ export interface UseQueryOptions { retryPolicy?: RetryOptions; staleWhileRevalidate?: boolean | object | number | string | null; suspense?: boolean; + __experimentalGreedyFetch?: boolean; } export interface UseQueryState { @@ -120,6 +121,7 @@ export const createUseQuery = ( retry = defaultRetry, retryPolicy = retry, staleWhileRevalidate = defaultStaleWhileRevalidate, + __experimentalGreedyFetch, } = {}) => { const render = useRerender(); const renderSession = useRenderSession(); @@ -243,20 +245,30 @@ export const createUseQuery = ( } try { + // Forcibly includes all resolvers in the same render when one of them + // requires a fetch. + if (__experimentalGreedyFetch) { + for (const stackResolver of resolverStack) { + cofetchingResolvers.set(resolver, stackResolver); + } + } + // Stitch stacked selections what shared the same cache key, even if // those selections don't need fetching. Because without normalization // they will be overwritten by this fetch. // [ ] There is one overfetch triggered by parallel renders that I // cannot eliminate right now. Deferring to future me. if (!client.cache.normalizationOptions) { - selections.forEach(({ cacheKeys: [subType, subField] }) => { + for (const { + cacheKeys: [subType, subField], + } of selections) { if (subType !== 'query') { - return; + continue; } - resolverStack.forEach((stackResolver) => { + for (const stackResolver of resolverStack) { if (stackResolver === resolver) { - return; + continue; } for (const { @@ -265,11 +277,11 @@ export const createUseQuery = ( if (subType == objType && subField == objField) { cofetchingResolvers.set(resolver, stackResolver); - return; + continue; } } - }); - }); + } + } } // Sticky co-fetching selections is only needed when more than one From 68bfbc55fc47787500166dc2beab3b211e4972bd Mon Sep 17 00:00:00 2001 From: Vicary A Date: Sat, 11 Nov 2023 15:26:47 +0800 Subject: [PATCH 111/122] feat(core): expose aliasLength option --- packages/gqty/src/Accessor/index.ts | 4 +- packages/gqty/src/Accessor/resolve.ts | 5 +- packages/gqty/src/Cache/index.ts | 12 ++-- packages/gqty/src/Client/context.ts | 4 ++ packages/gqty/src/Client/index.ts | 21 +++++-- packages/gqty/src/Client/resolvers.ts | 3 + packages/gqty/src/QueryBuilder/index.ts | 2 +- packages/gqty/src/Selection/index.ts | 65 +++++++++++++------- packages/gqty/test/client.test.ts | 4 +- packages/gqty/test/interfaces-unions.test.ts | 12 ++-- packages/gqty/test/persistence.test.ts | 4 +- packages/gqty/test/playground.test.ts | 2 +- packages/gqty/test/selection.test.ts | 16 +++++ 13 files changed, 105 insertions(+), 49 deletions(-) diff --git a/packages/gqty/src/Accessor/index.ts b/packages/gqty/src/Accessor/index.ts index 56c92a530..7086377ee 100644 --- a/packages/gqty/src/Accessor/index.ts +++ b/packages/gqty/src/Accessor/index.ts @@ -36,7 +36,9 @@ export function createSchemaAccessor( // // TODO: This is a half-way done solution for nullable objects, which // returns early and removes the possibility to make child selections. - const selection = selectionCache.get(key) ?? Selection.createRoot(key); + const selection = + selectionCache.get(key) ?? + Selection.createRoot(key, { aliasLength: context.aliasLength }); selectionCache.set(key, selection); return createObjectAccessor({ diff --git a/packages/gqty/src/Accessor/resolve.ts b/packages/gqty/src/Accessor/resolve.ts index 9ed84051f..c58b0410d 100644 --- a/packages/gqty/src/Accessor/resolve.ts +++ b/packages/gqty/src/Accessor/resolve.ts @@ -260,7 +260,7 @@ const objectProxyHandler: ProxyHandler = { const meta = $meta(proxy); if (typeof key !== 'string' || !meta) return false; - const { context, cache, selection } = meta; + const { cache, context, selection } = meta; // Extract proxy data, keep the object reference unless users deep clone it. value = deepMetadata(value) ?? value; @@ -487,6 +487,9 @@ const arrayProxyHandler: ProxyHandler = { } = meta; if (!Array.isArray(data)) return; + // [ ] Retain selections when an empty array is encountered. + // see Cache.#selectionAccessors() for more context. + if (typeof key === 'string') { if (!Array.isArray(data)) { throw new GQtyError(`Cache data must be an array.`); diff --git a/packages/gqty/src/Cache/index.ts b/packages/gqty/src/Cache/index.ts index 4fadfd81b..68b746b6f 100644 --- a/packages/gqty/src/Cache/index.ts +++ b/packages/gqty/src/Cache/index.ts @@ -285,16 +285,16 @@ export class Cache { /* TODO: Refactor * - * Caching accessors by selections is a mean to retain sub-selections when - * nullable arrays and objects has null cached, such accessors will return - * null and no futher selections can be triggered on them. + * Caching accessors by selections is a mean to retain sub-selections for + * empty arrays and nullables in cache, such accessors returns null where no + * futher selections can be triggered on them. * - * Only when cache value is null, such a cache should be responsible for + * When cache value is null or empty array, this cache is responsible for * returning all child selections made last time in this scope. * * Caching accessors by cache values is broken with normalization enabled. - * Different selection paths leading to the same normalized object overwrites - * each other, along with the selection inside. + * Different selection paths leading to the same normalized object, where they + * overwrites each other along with the sub-selections inside. * * Current workaround is to cache selection children in parents, preventing * excessive selection object creation. diff --git a/packages/gqty/src/Client/context.ts b/packages/gqty/src/Client/context.ts index 25ae8127e..7f5f5a7e3 100644 --- a/packages/gqty/src/Client/context.ts +++ b/packages/gqty/src/Client/context.ts @@ -9,6 +9,7 @@ export type SchemaContext< Disposable & Selectable & { cache: Cache; + readonly aliasLength?: number; readonly cacheOptions?: CacheGetOptions; readonly depthLimit: number; readonly scalars: ScalarsEnumsHash; @@ -23,6 +24,7 @@ export type SchemaContext< }; export type CreateContextOptions = { + aliasLength?: number; cache: Cache; depthLimit: number; cachePolicy: RequestCache; @@ -32,6 +34,7 @@ export type CreateContextOptions = { }; export const createContext = ({ + aliasLength, cache, cachePolicy, depthLimit, @@ -43,6 +46,7 @@ export const createContext = ({ const selectSubscriptions = new Set(); return { + aliasLength, cache: cachePolicy === 'no-cache' || cachePolicy === 'no-store' || diff --git a/packages/gqty/src/Client/index.ts b/packages/gqty/src/Client/index.ts index 6d66057fa..157d31a8b 100644 --- a/packages/gqty/src/Client/index.ts +++ b/packages/gqty/src/Client/index.ts @@ -17,7 +17,7 @@ import { } from './compat/client'; import { createLegacyQueryFetcher } from './compat/queryFetcher'; import { createLegacySubscriptionsClient } from './compat/subscriptionsClient'; -import { createContext, type CreateContextOptions } from './context'; +import { createContext } from './context'; import { createDebugger } from './debugger'; import { createResolvers, type Resolvers } from './resolvers'; @@ -103,6 +103,14 @@ export type FetchOptions = Omit & { }; export type ClientOptions = { + /** + * Maximum alias length, reducing overall query payload. You may increase this + * when collisions occur, specify Infinity here to use the full hash. + * + * @default 6 + */ + aliasLength?: number; + cache: Cache; fetchOptions: FetchOptions; scalars: ScalarsEnumsHash; @@ -136,6 +144,7 @@ export const createClient = < // TODO: compat: remove in v4 _ObjectTypes extends SchemaObjects = never >({ + aliasLength = 6, // This default cache on a required option is for legacy clients, which does // not provide a `cache` option. // TODO: compat: remove in v4 @@ -175,19 +184,19 @@ export const createClient = < // TODO: Defer creation until `@gqty/logger` is used. const debug = createDebugger(); - const defaultContextOptions: CreateContextOptions = { + // Global scope for accessing the cache via `schema` property. + const clientContext = createContext({ + aliasLength, cache, depthLimit: __depthLimit, cachePolicy: fetchPolicy, scalars, schema, typeKeys: cache.normalizationOptions?.schemaKeys, - }; - - // Global scope for accessing the cache via `schema` property. - const clientContext = createContext(defaultContextOptions); + }); const resolvers = createResolvers({ + aliasLength, scalars, schema, cache, diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index adaeda8d3..837d1b5ba 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -15,6 +15,7 @@ import { import { updateCaches } from './updateCaches'; export type CreateResolversOptions = { + aliasLength?: number; cache: Cache; debugger?: Debugger; depthLimit: number; @@ -170,6 +171,7 @@ export type SubscribeOptions = CreateResolverOptions & { const pendingQueries = new WeakMap>, Promise>(); export const createResolvers = ({ + aliasLength, cache: clientCache, debugger: debug, depthLimit, @@ -192,6 +194,7 @@ export const createResolvers = ({ }: SubscribeOptions = {}) => { const selections = new Set(); const context = createContext({ + aliasLength, cache: clientCache, depthLimit, cachePolicy, diff --git a/packages/gqty/src/QueryBuilder/index.ts b/packages/gqty/src/QueryBuilder/index.ts index c7b3885d5..47777ee6c 100644 --- a/packages/gqty/src/QueryBuilder/index.ts +++ b/packages/gqty/src/QueryBuilder/index.ts @@ -79,7 +79,7 @@ export const buildQuery = ( .map(([key, value]) => { const variableName = hash((s.alias ?? s.key) + '_' + key).slice( 0, - 6 + s.aliasLength ); variables.set(`${variableName}`, { diff --git a/packages/gqty/src/Selection/index.ts b/packages/gqty/src/Selection/index.ts index 6b7038920..9b8c044f8 100644 --- a/packages/gqty/src/Selection/index.ts +++ b/packages/gqty/src/Selection/index.ts @@ -42,36 +42,55 @@ export type SelectionSnapshot = Array< >; export class Selection { - readonly alias?: string; - readonly cacheKeys: string[] = []; readonly children = new Map(); - readonly input?: SelectionInput; - readonly parent?: Selection; - readonly root: Selection; - - /** Indicates current selection being a inteface/union key. */ - readonly isUnion: boolean; constructor( readonly key: string | number, - { input, alias, isUnion = false, parent }: SelectionOptions = {}, + readonly options: SelectionOptions = {}, token?: symbol ) { if (token !== createSymbol) { throw new GQtyError(`Use Selection.createRoot() instead.`); } + } + + get alias() { + return this.options.alias; + } + + get aliasLength(): number | undefined { + return this.options.aliasLength ?? this.parent?.aliasLength; + } - this.alias = alias; - this.input = input; - this.isUnion = isUnion; - this.parent = parent; - this.root = parent?.root ?? this; + get input() { + return this.options.input; + } + + /** Indicates current selection being a inteface/union key. */ + get isUnion() { + return this.options.isUnion ?? false; + } + + get parent() { + return this.options.parent; + } + + get root(): Selection { + return this.options.parent?.root ?? this; + } - if (typeof key === 'number' || key === '$on' || parent?.key === '$on') { - this.cacheKeys = parent?.cacheKeys ?? []; - } else { - this.cacheKeys = (parent?.cacheKeys ?? []).concat(this.alias || key); + get cacheKeys(): string[] { + const keys = this.parent?.cacheKeys ?? []; + + if ( + typeof this.key === 'number' || + this.key === '$on' || + this.parent?.key === '$on' + ) { + return keys; } + + return keys.concat(this.alias ?? this.key); } /** The selection path from root the leaf as an array. */ @@ -86,8 +105,8 @@ export class Selection { return ancestry; } - static createRoot(key: string) { - return new Selection(key, {}, createSymbol); + static createRoot(key: string, options?: SelectionOptions) { + return new Selection(key, options, createSymbol); } getChild(key: string | number, options?: SelectionOptions) { @@ -96,7 +115,7 @@ export class Selection { (options?.input ? aliasGenerator .get(key, options.input) - .slice(0, options.aliasLength ?? 5) + .slice(0, options?.aliasLength ?? this.aliasLength) : undefined); const hashKey = alias ?? key.toString(); @@ -124,9 +143,9 @@ export class Selection { } toJSON(): SelectionSnapshot { - return this.ancestry.map(({ key, isUnion, input }) => { + return this.ancestry.map(({ key, isUnion, input, options }) => { if (isUnion) { - return [key, { isUnion }]; + return [key, { isUnion, ...options }]; } else if (input) { return [key, { input }]; } else { diff --git a/packages/gqty/test/client.test.ts b/packages/gqty/test/client.test.ts index 3a6d3e3ad..0e5d451d9 100644 --- a/packages/gqty/test/client.test.ts +++ b/packages/gqty/test/client.test.ts @@ -331,8 +331,8 @@ describe('compat', () => { expect(queries.map(({ query }) => query)).toMatchInlineSnapshot(` [ - "query TestQueryA($a41350:String){a5b43:human(name:$a41350){__typename}}", - "mutation TestMutation($dd4050:String!){a133f:humanMutation(nameArg:$dd4050){__typename}}", + "query TestQueryA($e8a374:String){a5b434:human(name:$e8a374){__typename}}", + "mutation TestMutation($ef3ee3:String!){a133ff:humanMutation(nameArg:$ef3ee3){__typename}}", "query TestQueryB{hello}", ] `); diff --git a/packages/gqty/test/interfaces-unions.test.ts b/packages/gqty/test/interfaces-unions.test.ts index e5f8127bd..e93f1e6f5 100644 --- a/packages/gqty/test/interfaces-unions.test.ts +++ b/packages/gqty/test/interfaces-unions.test.ts @@ -124,10 +124,10 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($a385fe:NodeType!){a0b55:node(type:$a385fe){__typename ...on A{a}...on B{b}id}}", + "query": "query($a18aa4:NodeType!){a0b55f:node(type:$a18aa4){__typename ...on A{a}...on B{b}id}}", "result": { "data": { - "a0b55": { + "a0b55f": { "__typename": "A", "a": 1, "id": "1", @@ -135,7 +135,7 @@ describe('interfaces and unions', () => { }, }, "variables": { - "a385fe": "A", + "a18aa4": "A", }, }, ] @@ -187,10 +187,10 @@ describe('interfaces and unions', () => { expect(queries).toMatchInlineSnapshot(` [ { - "query": "query($a385fe:NodeType!){a0b55:node(type:$a385fe){__typename ...on A{a node{__typename ...on A{id node{__typename ...on C{node{__typename ...on A{id}id}}id}}id}}...on B{b}id}}", + "query": "query($a18aa4:NodeType!){a0b55f:node(type:$a18aa4){__typename ...on A{a node{__typename ...on A{id node{__typename ...on C{node{__typename ...on A{id}id}}id}}id}}...on B{b}id}}", "result": { "data": { - "a0b55": { + "a0b55f": { "__typename": "A", "a": 1, "id": "1", @@ -206,7 +206,7 @@ describe('interfaces and unions', () => { }, }, "variables": { - "a385fe": "A", + "a18aa4": "A", }, }, ] diff --git a/packages/gqty/test/persistence.test.ts b/packages/gqty/test/persistence.test.ts index 6842e00ac..244bcf086 100644 --- a/packages/gqty/test/persistence.test.ts +++ b/packages/gqty/test/persistence.test.ts @@ -123,7 +123,7 @@ test('basic functionality', async () => { const dataBackup1 = client1.persist(); expect(JSON.stringify(dataBackup1)).toMatchInlineSnapshot( - `"{"query":{"a7b30":{"__typename":"Human","id":"1","name":"asd"}}}"` + `"{"query":{"a7b306":{"__typename":"Human","id":"1","name":"asd"}}}"` ); const client2 = await createTestClient(); @@ -220,7 +220,7 @@ test('version check', async () => { const cacheBackupv1 = client1.persist('v1'); expect(JSON.stringify(cacheBackupv1)).toMatchInlineSnapshot( - `"{"query":{"a7b30":{"__typename":"Human","id":"1","name":"asd"}},"version":"v1"}"` + `"{"query":{"a7b306":{"__typename":"Human","id":"1","name":"asd"}},"version":"v1"}"` ); const client2 = await createTestClient(); diff --git a/packages/gqty/test/playground.test.ts b/packages/gqty/test/playground.test.ts index 5f343d242..4c136fab0 100644 --- a/packages/gqty/test/playground.test.ts +++ b/packages/gqty/test/playground.test.ts @@ -89,7 +89,7 @@ describe('playground', () => { }, }, "query": { - "a7b30": { + "a7b306": { "__ref": "Human:1", }, }, diff --git a/packages/gqty/test/selection.test.ts b/packages/gqty/test/selection.test.ts index 24273fc36..1e10f66f8 100644 --- a/packages/gqty/test/selection.test.ts +++ b/packages/gqty/test/selection.test.ts @@ -93,4 +93,20 @@ describe('selection creation', () => { ).length ).toEqual(3); }); + + fit('should descend aliasLength from root', () => { + const selectionA = Selection.createRoot('a', { aliasLength: 2 }).getChild( + 'b', + { input: { types: { a: 'Int!' }, values: { a: 1 } } } + ); + + expect(selectionA.alias?.length).toBe(2); + + const selectionB = Selection.createRoot('a', { + aliasLength: Infinity, + }).getChild('b', { input: { types: { a: 'Int!' }, values: { a: 1 } } }); + + // Future proof: object-hash defaults to SHA1, check against that or above. + expect(selectionB.alias?.length).toBeGreaterThanOrEqual(40); + }); }); From 3a09ecd6d9b459c68abb3820183eb7825e17ef8d Mon Sep 17 00:00:00 2001 From: Vicary A Date: Fri, 24 Nov 2023 15:25:05 +0800 Subject: [PATCH 112/122] feat(core): supress empty warnings when onEmptyResolve is specified --- packages/gqty/src/Client/compat/inlineResolved.ts | 6 ++++-- packages/gqty/src/Client/compat/resolved.ts | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/gqty/src/Client/compat/inlineResolved.ts b/packages/gqty/src/Client/compat/inlineResolved.ts index 4fd5298c1..1c9dec640 100644 --- a/packages/gqty/src/Client/compat/inlineResolved.ts +++ b/packages/gqty/src/Client/compat/inlineResolved.ts @@ -58,10 +58,12 @@ export const createLegacyInlineResolved = < unsubscribe(); if (selections.size === 0) { - if (process.env.NODE_ENV !== 'production') { + if (onEmptyResolve) { + onEmptyResolve(); + } else if (process.env.NODE_ENV !== 'production') { console.warn('[gqty] Warning! No data requested.'); } - onEmptyResolve?.(); + return data; } diff --git a/packages/gqty/src/Client/compat/resolved.ts b/packages/gqty/src/Client/compat/resolved.ts index 650e08ece..8f0279dcf 100644 --- a/packages/gqty/src/Client/compat/resolved.ts +++ b/packages/gqty/src/Client/compat/resolved.ts @@ -152,10 +152,12 @@ export const createLegacyResolved = < unsubscribe(); if (selections.size === 0) { - if (process.env.NODE_ENV !== 'production') { + if (onEmptyResolve) { + onEmptyResolve(); + } else if (process.env.NODE_ENV !== 'production') { console.warn('[gqty] Warning! No data requested.'); } - onEmptyResolve?.(); + return data; } From af99c833b80fb7010b8ae3134115dcd4fe8d658a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 13:49:42 -0500 Subject: [PATCH 113/122] Fix missing exports types package.json --- .changeset/tall-cheetahs-help.md | 9 + .github/workflows/canary.yaml | 6 +- .github/workflows/release.yaml | 2 +- .github/workflows/tests.yaml | 4 +- examples/ez/package.json | 2 +- examples/react/package.json | 2 +- integration/graphql-17/package.json | 2 +- internal/test-utils/package.json | 6 +- internal/website/package.json | 2 +- package.json | 11 +- packages/cli/package.json | 6 +- packages/gqty/package.json | 4 +- packages/logger/package.json | 4 +- packages/react/package.json | 4 +- packages/subscriptions/package.json | 4 +- pnpm-lock.yaml | 6857 ++++++++++++++------------- 16 files changed, 3477 insertions(+), 3448 deletions(-) create mode 100644 .changeset/tall-cheetahs-help.md diff --git a/.changeset/tall-cheetahs-help.md b/.changeset/tall-cheetahs-help.md new file mode 100644 index 000000000..2120dd950 --- /dev/null +++ b/.changeset/tall-cheetahs-help.md @@ -0,0 +1,9 @@ +--- +'@gqty/subscriptions': patch +'@gqty/logger': patch +'@gqty/react': patch +'gqty': patch +'@gqty/cli': patch +--- + +Fix missing exports types package.json diff --git a/.github/workflows/canary.yaml b/.github/workflows/canary.yaml index cdcdb51af..71a06e4c1 100644 --- a/.github/workflows/canary.yaml +++ b/.github/workflows/canary.yaml @@ -19,11 +19,11 @@ jobs: - uses: pnpm/action-setup@v2.2.4 with: - version: ^7.1.1 - - name: Setup Node.js 16.x + version: ^8.14.0 + - name: Setup Node.js 18.x uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 18.x cache: 'pnpm' - name: Setup NPM credentials diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 437a363d4..93fa53463 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -22,7 +22,7 @@ jobs: - uses: pnpm/action-setup@v2.2.4 with: - version: ^7.1.1 + version: ^8.14.0 - name: Setup Node.js 16.x uses: actions/setup-node@v3 with: diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 4a3f8153f..54ea19fb7 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -25,14 +25,14 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [14, 16, 18] + node-version: [18, 20.5.1] os: [ubuntu-latest] steps: - name: Checkout code uses: actions/checkout@v3 - uses: pnpm/action-setup@v2.2.4 with: - version: ^7.1.1 + version: ^8.14.0 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: diff --git a/examples/ez/package.json b/examples/ez/package.json index a764c19a4..70f3cfb3e 100644 --- a/examples/ez/package.json +++ b/examples/ez/package.json @@ -30,7 +30,7 @@ "@types/lodash": "^4.14.191", "@types/node": "^18.15.5", "@types/randomstring": "^1.1.8", - "bob-tsm": "^1.1.2", + "bob-tsm": "2.0.0-alpha-227aebc.0", "esbuild": "^0.17.12", "jest": "^29.5.0", "typescript": "^4.9.5" diff --git a/examples/react/package.json b/examples/react/package.json index 5d568d638..1ad98565d 100644 --- a/examples/react/package.json +++ b/examples/react/package.json @@ -57,7 +57,7 @@ "@types/node": "^18.15.5", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", - "bob-tsm": "^1.1.2", + "bob-tsm": "2.0.0-alpha-227aebc.0", "concurrently": "^7.6.0", "cross-env": "^7.0.3", "esbuild": "^0.17.12", diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json index 98340d33d..d8d158638 100644 --- a/integration/graphql-17/package.json +++ b/integration/graphql-17/package.json @@ -13,7 +13,7 @@ "@graphql-typed-document-node/core": "^3.2.0", "@types/node": "^18.15.5", "ava": "^5.2.0", - "bob-tsm": "^1.1.2", + "bob-tsm": "2.0.0-alpha-227aebc.0", "c8": "^7.13.0", "esbuild": "^0.17.12", "fastify": "^4.11.0", diff --git a/internal/test-utils/package.json b/internal/test-utils/package.json index 1b436d258..6dcc59c1a 100644 --- a/internal/test-utils/package.json +++ b/internal/test-utils/package.json @@ -9,10 +9,12 @@ "types": "src/index.ts", "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" }, @@ -50,8 +52,8 @@ "@jest/types": "^29.5.0", "@types/node": "^18.15.5", "@types/randomstring": "^1.1.8", - "bob-esbuild-cli": "^4.0.0", - "bob-ts": "^4.1.1", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", + "bob-ts": "5.0.0-alpha-227aebc.0", "concurrently": "^7.6.0", "esbuild": "^0.17.12", "tslib": "^2.5.0", diff --git a/internal/website/package.json b/internal/website/package.json index ff1c9c5ea..f1ffa35c7 100644 --- a/internal/website/package.json +++ b/internal/website/package.json @@ -38,7 +38,7 @@ "@types/node": "^18.15.5", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", - "bob-tsm": "^1.1.2", + "bob-tsm": "2.0.0-alpha-227aebc.0", "concurrently": "^7.6.0", "cross-env": "^7.0.3", "esbuild": "^0.17.12", diff --git a/package.json b/package.json index 119f78a20..7f8aac5f6 100644 --- a/package.json +++ b/package.json @@ -37,10 +37,10 @@ "@changesets/read": "^0.5.9", "@manypkg/get-packages": "^1.1.3", "@types/node": "^18.15.5", - "bob-esbuild": "^4.0.3", - "bob-esbuild-cli": "^4.0.0", - "bob-ts": "^4.1.1", - "bob-tsm": "^1.1.2", + "bob-esbuild": "5.0.0-alpha-227aebc.0", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", + "bob-ts": "5.0.0-alpha-227aebc.0", + "bob-tsm": "2.0.0-alpha-227aebc.0", "bufferutil": "^4.0.7", "chalk": "^5.2.0", "changesets-github-release": "^0.1.0", @@ -75,7 +75,8 @@ "dset@<3.1.2": ">=3.1.2", "mermaid@>=8.0.0 <9.1.2": ">=9.1.2", "mdx-mermaid@<1.3.0": ">=1.3.0", - "d3-color@<3.1.0": ">=3.1.0" + "d3-color@<3.1.0": ">=3.1.0", + "@manypkg/get-packages": "^1.1.3" }, "peerDependencyRules": { "allowedVersions": { diff --git a/packages/cli/package.json b/packages/cli/package.json index aae21169b..c99b71496 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -11,11 +11,13 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./deps": "./dist/deps.js", "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" } @@ -54,8 +56,8 @@ "@types/lodash.sortby": "^4.7.7", "@types/mkdirp": "^1.0.2", "@types/node": "^18.15.5", - "bob-ts": "^4.1.1", - "bob-tsm": "^1.1.2", + "bob-ts": "5.0.0-alpha-227aebc.0", + "bob-tsm": "2.0.0-alpha-227aebc.0", "changesets-github-release": "^0.1.0", "commander": "^10.0.0", "cosmiconfig": "^8.1.3", diff --git a/packages/gqty/package.json b/packages/gqty/package.json index 863f87eb7..9831002f3 100644 --- a/packages/gqty/package.json +++ b/packages/gqty/package.json @@ -12,10 +12,12 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" } @@ -52,7 +54,7 @@ "@types/react-dom": "^18.0.11", "@types/wait-on": "^5.3.1", "@types/ws": "^8.5.4", - "bob-esbuild-cli": "^4.0.0", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", "concurrently": "^7.6.0", "cross-env": "^7.0.3", "esbuild": "^0.17.12", diff --git a/packages/logger/package.json b/packages/logger/package.json index 93fab19ae..e763347a5 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -11,10 +11,12 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" } @@ -44,7 +46,7 @@ "@size-limit/preset-small-lib": "^8.2.4", "@types/node": "^18.15.5", "@types/prettier": "^2.7.2", - "bob-esbuild-cli": "^4.0.0", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", "esbuild": "^0.17.12", "gqty": "workspace:^2.3.0", "jest": "^29.5.0", diff --git a/packages/react/package.json b/packages/react/package.json index de305de36..bede32c59 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,10 +11,12 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" } @@ -51,7 +53,7 @@ "@types/node": "^18.15.5", "@types/react": "^17.0.53", "@types/react-dom": "^18.0.11", - "bob-esbuild-cli": "^4.0.0", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", "esbuild": "^0.17.12", "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", diff --git a/packages/subscriptions/package.json b/packages/subscriptions/package.json index 8b5bbe758..04d44312f 100644 --- a/packages/subscriptions/package.json +++ b/packages/subscriptions/package.json @@ -10,10 +10,12 @@ "sideEffects": false, "exports": { ".": { + "types": "./dist/index.d.ts", "require": "./dist/index.js", "import": "./dist/index.mjs" }, "./*": { + "types": "./dist/*.d.ts", "require": "./dist/*.js", "import": "./dist/*.mjs" } @@ -40,7 +42,7 @@ "devDependencies": { "@types/node": "^18.15.5", "@types/ws": "^8.5.4", - "bob-esbuild-cli": "^4.0.0", + "bob-esbuild-cli": "5.0.0-alpha-227aebc.0", "esbuild": "^0.17.12", "gqty": "workspace:^2.3.0", "graphql": "^16.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 76b273da8..dade620de 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,8 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false overrides: trim@<0.0.3: '>=0.0.3' @@ -10,363 +14,518 @@ overrides: mermaid@>=8.0.0 <9.1.2: '>=9.1.2' mdx-mermaid@<1.3.0: '>=1.3.0' d3-color@<3.1.0: '>=3.1.0' + '@manypkg/get-packages': ^1.1.3 importers: .: - specifiers: - '@changesets/apply-release-plan': ^6.1.3 - '@changesets/assemble-release-plan': ^5.2.3 - '@changesets/cli': ^2.26.0 - '@changesets/config': ^2.3.0 - '@changesets/read': ^0.5.9 - '@manypkg/get-packages': ^1.1.3 - '@types/node': ^18.15.5 - bob-esbuild: ^4.0.3 - bob-esbuild-cli: ^4.0.0 - bob-ts: ^4.1.1 - bob-tsm: ^1.1.2 - bufferutil: ^4.0.7 - chalk: ^5.2.0 - changesets-github-release: ^0.1.0 - concurrently: ^7.6.0 - esbuild: ^0.17.12 - globby: ^13.1.3 - graphql: ^16.6.0 - husky: ^8.0.3 - jest: ^29.5.0 - open: ^8.4.2 - prettier: ^2.8.6 - pretty-quick: ^3.1.3 - rimraf: ^4.4.0 - semver: ^7.3.8 - ts-jest: ^29.0.5 - ts-node: ^10.9.1 - tslib: ^2.5.0 - typescript: ^4.9.5 - utf-8-validate: ^6.0.3 - wait-on: ^7.0.1 devDependencies: - '@changesets/apply-release-plan': 6.1.3 - '@changesets/assemble-release-plan': 5.2.3 - '@changesets/cli': 2.26.0 - '@changesets/config': 2.3.0 - '@changesets/read': 0.5.9 - '@manypkg/get-packages': 1.1.3 - '@types/node': 18.15.5 - bob-esbuild: 4.0.3_zofgjzmca2gwtey4x4go3tg4j4 - bob-esbuild-cli: 4.0.0_bob-esbuild@4.0.3 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - bufferutil: 4.0.7 - chalk: 5.2.0 - changesets-github-release: 0.1.0 - concurrently: 7.6.0 - esbuild: 0.17.12 - globby: 13.1.3 - graphql: 16.6.0 - husky: 8.0.3 - jest: 29.5.0_757mb262zsxkcnuknwfdsckmku - open: 8.4.2 - prettier: 2.8.6 - pretty-quick: 3.1.3_prettier@2.8.6 - rimraf: 4.4.0 - semver: 7.3.8 - ts-jest: 29.0.5_kxkw7io5lipdvgpiby7d7545le - ts-node: 10.9.1_345kigqis4fipgyy5xb3ndshmq - tslib: 2.5.0 - typescript: 4.9.5 - utf-8-validate: 6.0.3 - wait-on: 7.0.1 + '@changesets/apply-release-plan': + specifier: ^6.1.3 + version: 6.1.3 + '@changesets/assemble-release-plan': + specifier: ^5.2.3 + version: 5.2.3 + '@changesets/cli': + specifier: ^2.26.0 + version: 2.26.0 + '@changesets/config': + specifier: ^2.3.0 + version: 2.3.0 + '@changesets/read': + specifier: ^0.5.9 + version: 0.5.9 + '@manypkg/get-packages': + specifier: ^1.1.3 + version: 1.1.3 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + bob-esbuild: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + bob-ts: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + bufferutil: + specifier: ^4.0.7 + version: 4.0.7 + chalk: + specifier: ^5.2.0 + version: 5.2.0 + changesets-github-release: + specifier: ^0.1.0 + version: 0.1.0 + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + globby: + specifier: ^13.1.3 + version: 13.1.3 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + open: + specifier: ^8.4.2 + version: 8.4.2 + prettier: + specifier: ^2.8.6 + version: 2.8.6 + pretty-quick: + specifier: ^3.1.3 + version: 3.1.3(prettier@2.8.6) + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + semver: + specifier: ^7.3.8 + version: 7.3.8 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + utf-8-validate: + specifier: ^6.0.3 + version: 6.0.3 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/ez: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-ez/plugin-altair': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-typed-document-node/core': ^3.2.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/randomstring': ^1.1.8 - bob-tsm: ^1.1.2 - esbuild: ^0.17.12 - fastify: ^4.11.0 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - jest: ^29.5.0 - lodash: ^4.17.21 - randomstring: ^1.2.3 - test-utils: workspace:^0.1.0 - typescript: ^4.9.5 - dependencies: - '@gqty/cli': link:../../packages/cli - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/fastify-testing': 0.4.0_zow4snlfvwzlxlnfckljwyv4aa - '@graphql-ez/plugin-altair': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 - fastify: 4.11.0 - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - lodash: 4.17.21 - randomstring: 1.2.3 - test-utils: link:../../internal/test-utils + dependencies: + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-altair': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@16.6.0) + fastify: + specifier: ^4.11.0 + version: 4.11.0 + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + randomstring: + specifier: ^1.2.3 + version: 1.2.3 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils devDependencies: - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/randomstring': 1.1.8 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - esbuild: 0.17.12 - jest: 29.5.0_@types+node@18.15.5 - typescript: 4.9.5 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/randomstring': + specifier: ^1.1.8 + version: 1.1.8 + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + typescript: + specifier: ^4.9.5 + version: 4.9.5 examples/ez-react-next: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@gqty/logger': workspace:^2.0.2 - '@gqty/react': workspace:^2.1.1 - '@graphql-ez/nextjs': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-graphiql': ^0.12.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - concurrently: ^7.6.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - next: ^12.3.4 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - typescript: ^4.9.5 - wait-on: ^7.0.1 - dependencies: - '@gqty/logger': link:../../packages/logger - '@gqty/react': link:../../packages/react - '@graphql-ez/nextjs': 0.11.0_c5xlb76vribzm5vdd4qmd4rlja - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-graphiql': 0.12.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + dependencies: + '@gqty/logger': + specifier: workspace:^2.0.2 + version: link:../../packages/logger/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + '@graphql-ez/nextjs': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-graphiql': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) devDependencies: - '@gqty/cli': link:../../packages/cli - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - concurrently: 7.6.0 - esbuild: 0.17.12 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/github: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@types/node': ^18.15.5 - dotenv: ^16.0.3 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - isomorphic-unfetch: ^4.0.2 - jest: ^29.5.0 - test-utils: workspace:^0.1.0 - typescript: ^4.9.5 - dependencies: - '@gqty/cli': link:../../packages/cli - dotenv: 16.0.3 - gqty: link:../../packages/gqty - test-utils: link:../../internal/test-utils + dependencies: + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + dotenv: + specifier: ^16.0.3 + version: 16.0.3 + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils devDependencies: - '@types/node': 18.15.5 - esbuild: 0.17.12 - isomorphic-unfetch: 4.0.2 - jest: 29.5.0_@types+node@18.15.5 - typescript: 4.9.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + isomorphic-unfetch: + specifier: ^4.0.2 + version: 4.0.2 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + typescript: + specifier: ^4.9.5 + version: 4.9.5 examples/react: - specifiers: - '@chakra-ui/react': ^1.8.9 - '@emotion/react': ^11.10.6 - '@emotion/styled': ^11.10.6 - '@faker-js/faker': ^7.6.0 - '@fastify/nextjs': ^9.2.0 - '@gqty/cli': workspace:^3.3.0 - '@gqty/logger': workspace:^2.0.2 - '@gqty/react': workspace:^2.1.1 - '@gqty/subscriptions': workspace:^2.0.1 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/plugin-altair': ^0.11.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-dataloader': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-ez/plugin-upload': ^0.8.0 - '@graphql-ez/plugin-websockets': ^0.11.0 - '@react-native-async-storage/async-storage': ^1.17.12 - '@types/extract-files': ^8.1.1 - '@types/graphql-upload': ^16.0.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-tsm: ^1.1.2 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - date-fns: ^2.29.3 - esbuild: ^0.17.12 - extract-files: 13.0.0 - fastify: ^4.11.0 - framer-motion: ^6.5.1 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - graphql-upload: ^16.0.2 - jest: ^29.5.0 - localforage: ^1.10.0 - lodash: ^4.17.21 - ms: ^3.0.0-canary.1 - next: ^12.3.4 - node-json-db: ^2.1.5 - open: ^8.4.2 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-error-boundary: ^3.1.4 - react-intersection-observer: ^9.4.3 - react-ssr-prepass: ^1.5.0 - react-use: ^17.4.0 - serialize-error: ^11.0.0 - typescript: ^4.9.5 - use-error-boundary: ^2.0.6 - wait-on: ^7.0.1 - dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@faker-js/faker': 7.6.0 - '@gqty/cli': link:../../packages/cli - '@gqty/logger': link:../../packages/logger - '@gqty/react': link:../../packages/react - '@gqty/subscriptions': link:../../packages/subscriptions - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/plugin-altair': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-dataloader': 0.8.0_4khj4v5e4vfkswp32g74ajok3i - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-upload': 0.8.0_kjoqpzaqt57iapo3yu2w2aeoce - '@graphql-ez/plugin-websockets': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@react-native-async-storage/async-storage': 1.17.12 - '@types/extract-files': 8.1.1 - date-fns: 2.29.3 - extract-files: 13.0.0 - fastify: 4.11.0 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m - gqty: link:../../packages/gqty - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-upload: 16.0.2_graphql@16.6.0 - localforage: 1.10.0 - lodash: 4.17.21 - ms: 3.0.0-canary.1 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - node-json-db: 2.1.5 - open: 8.4.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-error-boundary: 3.1.4_react@17.0.2 - react-intersection-observer: 9.4.3_react@17.0.2 - react-ssr-prepass: 1.5.0_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m - serialize-error: 11.0.0 - use-error-boundary: 2.0.6_sfoxds7t5ydpegc3knd667wn6m + dependencies: + '@chakra-ui/react': + specifier: ^1.8.9 + version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@emotion/react': + specifier: ^11.10.6 + version: 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@faker-js/faker': + specifier: ^7.6.0 + version: 7.6.0 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@gqty/logger': + specifier: workspace:^2.0.2 + version: link:../../packages/logger/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + '@gqty/subscriptions': + specifier: workspace:^2.0.1 + version: link:../../packages/subscriptions/dist + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-altair': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-dataloader': + specifier: ^0.8.0 + version: 0.8.0(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-upload': + specifier: ^0.8.0 + version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@16.0.2)(graphql@16.6.0) + '@graphql-ez/plugin-websockets': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + '@react-native-async-storage/async-storage': + specifier: ^1.17.12 + version: 1.17.12 + '@types/extract-files': + specifier: ^8.1.1 + version: 8.1.1 + date-fns: + specifier: ^2.29.3 + version: 2.29.3 + extract-files: + specifier: 13.0.0 + version: 13.0.0 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + framer-motion: + specifier: ^6.5.1 + version: 6.5.1(react-dom@17.0.2)(react@17.0.2) + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-upload: + specifier: ^16.0.2 + version: 16.0.2(graphql@16.6.0) + localforage: + specifier: ^1.10.0 + version: 1.10.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + ms: + specifier: ^3.0.0-canary.1 + version: 3.0.0-canary.1 + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + node-json-db: + specifier: ^2.1.5 + version: 2.1.5 + open: + specifier: ^8.4.2 + version: 8.4.2 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-error-boundary: + specifier: ^4.0.7 + version: 4.0.12(react@17.0.2) + react-intersection-observer: + specifier: ^9.4.3 + version: 9.4.3(react@17.0.2) + react-ssr-prepass: + specifier: ^1.5.0 + version: 1.5.0(react@17.0.2) + react-use: + specifier: ^17.4.0 + version: 17.4.0(react-dom@17.0.2)(react@17.0.2) + serialize-error: + specifier: ^11.0.0 + version: 11.0.0 + use-error-boundary: + specifier: ^2.0.6 + version: 2.0.6(react-dom@17.0.2)(react@17.0.2) devDependencies: - '@fastify/nextjs': 9.2.0_next@12.3.4 - '@types/graphql-upload': 16.0.0 - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - jest: 29.5.0_@types+node@18.15.5 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@fastify/nextjs': + specifier: ^9.2.0 + version: 9.2.0(next@12.3.4) + '@types/graphql-upload': + specifier: ^16.0.0 + version: 16.0.0 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 examples/vite-example: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@gqty/react': workspace:^2.1.1 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - '@vitejs/plugin-react-refresh': ^1.3.6 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - react: ^17.0.2 - react-dom: ^17.0.2 - typescript: ^4.9.5 - vite: ^4.2.1 dependencies: - '@gqty/cli': link:../../packages/cli - '@gqty/react': link:../../packages/react - gqty: link:../../packages/gqty - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: link:../../packages/cli/dist + '@gqty/react': + specifier: workspace:^2.1.1 + version: link:../../packages/react/dist + gqty: + specifier: workspace:^2.3.0 + version: link:../../packages/gqty/dist + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) devDependencies: - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - '@vitejs/plugin-react-refresh': 1.3.6 - esbuild: 0.17.12 - typescript: 4.9.5 - vite: 4.2.1_@types+node@18.15.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + '@vitejs/plugin-react-refresh': + specifier: ^1.3.6 + version: 1.3.6 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + vite: + specifier: ^4.2.1 + version: 4.2.1(@types/node@18.15.5) integration/graphql-17: - specifiers: - '@gqty/cli': workspace:^3.3.0 - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-typed-document-node/core': ^3.2.0 - '@types/node': ^18.15.5 - ava: ^5.2.0 - bob-tsm: ^1.1.2 - c8: ^7.13.0 - esbuild: ^0.17.12 - fastify: ^4.11.0 - gqty: workspace:^2.3.0 - graphql: 17.0.0-alpha.2 - graphql-ez: ^0.16.0 - typescript: ^4.9.5 devDependencies: - '@gqty/cli': file:packages/cli_graphql@17.0.0-alpha.2 - '@graphql-ez/fastify': 0.12.0_sjoruv57pci442joaaplrlyrfa - '@graphql-ez/fastify-testing': 0.4.0_ea5semnvare4dczwxuvgvhhrim - '@graphql-typed-document-node/core': 3.2.0_graphql@17.0.0-alpha.2 - '@types/node': 18.15.5 - ava: 5.2.0 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - c8: 7.13.0 - esbuild: 0.17.12 - fastify: 4.11.0 - gqty: file:packages/gqty_graphql@17.0.0-alpha.2 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm - typescript: 4.9.5 + '@gqty/cli': + specifier: workspace:^3.3.0 + version: file:packages/cli/dist(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-typed-document-node/core': + specifier: ^3.2.0 + version: 3.2.0(graphql@17.0.0-alpha.2) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + ava: + specifier: ^5.2.0 + version: 5.2.0 + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + c8: + specifier: ^7.13.0 + version: 7.13.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + gqty: + specifier: workspace:^2.3.0 + version: file:packages/gqty/dist(graphql@17.0.0-alpha.2) + graphql: + specifier: 17.0.0-alpha.2 + version: 17.0.0-alpha.2 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + typescript: + specifier: ^4.9.5 + version: 4.9.5 dependenciesMeta: '@gqty/cli': injected: true @@ -374,401 +533,562 @@ importers: injected: true internal/test-utils: - specifiers: - '@graphql-ez/fastify': ^0.12.0 - '@graphql-ez/fastify-testing': ^0.4.0 - '@graphql-ez/plugin-codegen': ^0.8.0 - '@graphql-ez/plugin-schema': ^0.9.0 - '@graphql-ez/plugin-websockets': ^0.11.0 - '@jest/types': ^29.5.0 - '@rollup/plugin-babel': ^6.0.3 - '@types/jest': ^29.5.0 - '@types/node': ^18.15.5 - '@types/randomstring': ^1.1.8 - bob-esbuild-cli: ^4.0.0 - bob-ts: ^4.1.1 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - esbuild: ^0.17.12 - fastify: ^4.11.0 - graphql: ^16.6.0 - graphql-ez: ^0.16.0 - jest: ^29.5.0 - jest-watch-typeahead: ^2.2.2 - prettier: ^2.8.6 - randomstring: ^1.2.3 - ts-jest: ^29.0.5 - tslib: ^2.5.0 - typescript: ^4.9.5 - wait-for-expect: ^3.0.2 - dependencies: - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/fastify-testing': 0.4.0_gw55l7m33unpztkcavxnnvhm5q - '@graphql-ez/plugin-codegen': 0.8.0_ybhfgsau5tg5dsvtpo567urcge - '@graphql-ez/plugin-schema': 0.9.0_ybhfgsau5tg5dsvtpo567urcge - '@rollup/plugin-babel': 6.0.3 - '@types/jest': 29.5.0 - cross-env: 7.0.3 - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - jest: 29.5.0_@types+node@18.15.5 - jest-watch-typeahead: 2.2.2_jest@29.5.0 - prettier: 2.8.6 - randomstring: 1.2.3 - ts-jest: 29.0.5_7zwficsud2wmcwakxus3xxpqke - wait-for-expect: 3.0.2 + dependencies: + '@graphql-ez/fastify': + specifier: ^0.12.0 + version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/fastify-testing': + specifier: ^0.4.0 + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-codegen': + specifier: ^0.8.0 + version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/plugin-schema': + specifier: ^0.9.0 + version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + '@rollup/plugin-babel': + specifier: ^6.0.3 + version: 6.0.3 + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + fastify: + specifier: ^4.11.0 + version: 4.11.0 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + graphql-ez: + specifier: ^0.16.0 + version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-watch-typeahead: + specifier: ^2.2.2 + version: 2.2.2(jest@29.5.0) + prettier: + specifier: ^2.8.6 + version: 2.8.6 + randomstring: + specifier: ^1.2.3 + version: 1.2.3 + ts-jest: + specifier: ^29.0.5 + version: 29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5) + wait-for-expect: + specifier: ^3.0.2 + version: 3.0.2 devDependencies: - '@graphql-ez/plugin-websockets': 0.11.0_ybhfgsau5tg5dsvtpo567urcge - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - '@types/randomstring': 1.1.8 - bob-esbuild-cli: 4.0.0 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - concurrently: 7.6.0 - esbuild: 0.17.12 - tslib: 2.5.0 - typescript: 4.9.5 + '@graphql-ez/plugin-websockets': + specifier: ^0.11.0 + version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + '@jest/types': + specifier: ^29.5.0 + version: 29.5.0 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/randomstring': + specifier: ^1.1.8 + version: 1.1.8 + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + bob-ts: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 internal/website: - specifiers: - '@chakra-ui/icons': ^1.1.7 - '@chakra-ui/react': ^1.8.9 - '@chakra-ui/theme-tools': ^1.3.6 - '@chakra-ui/utils': ^1.10.4 - '@emotion/react': ^11.10.6 - '@emotion/styled': ^11.10.6 - '@guild-docs/client': 2.1.1 - '@guild-docs/server': 4.0.0 - '@mdx-js/react': ^2.3.0 - '@next/bundle-analyzer': ^12.3.4 - '@theguild/components': ^1.12.0 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-tsm: ^1.1.2 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - csstype: ^3.1.1 - esbuild: ^0.17.12 - framer-motion: ^6.5.1 - i18next: ^22.4.13 - next: ^12.3.4 - next-i18next: ^13.2.2 - next-remote-watch: ^2.0.0 - next-seo: ^5.15.0 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-i18next: ^12.2.0 - react-icons: ^4.8.0 - react-use: ^17.4.0 - shiki: ^0.12.1 - typescript: ^4.9.5 - wait-on: ^7.0.1 - dependencies: - '@chakra-ui/icons': 1.1.7_react@17.0.2 - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q - '@chakra-ui/theme-tools': 1.3.6 - '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@guild-docs/client': 2.1.1_i7yamdcqgfam5kgmi3p25dpzk4 - '@guild-docs/server': 4.0.0_vunfziydkmle7wbsgwsinw3tpa - '@mdx-js/react': 2.3.0_react@17.0.2 - '@theguild/components': 1.12.0_zsjcj4gvi24ks76nprapl4hsmq - csstype: 3.1.1 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m - i18next: 22.4.13 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy - next-seo: 5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-i18next: 12.2.0_ffdbohwx3htqpx4tpuhghjrmkq - react-icons: 4.8.0_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m - shiki: 0.12.1 + dependencies: + '@chakra-ui/icons': + specifier: ^1.1.7 + version: 1.1.7(react@17.0.2) + '@chakra-ui/react': + specifier: ^1.8.9 + version: 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/theme-tools': + specifier: ^1.3.6 + version: 1.3.6(@chakra-ui/system@1.12.1) + '@chakra-ui/utils': + specifier: ^1.10.4 + version: 1.10.4 + '@emotion/react': + specifier: ^11.10.6 + version: 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': + specifier: ^11.10.6 + version: 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@guild-docs/client': + specifier: 2.1.1 + version: 2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.12.1) + '@guild-docs/server': + specifier: 4.0.0 + version: 4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.12.1) + '@mdx-js/react': + specifier: ^2.3.0 + version: 2.3.0(react@17.0.2) + '@theguild/components': + specifier: ^1.12.0 + version: 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + csstype: + specifier: ^3.1.1 + version: 3.1.1 + framer-motion: + specifier: ^6.5.1 + version: 6.5.1(react-dom@17.0.2)(react@17.0.2) + i18next: + specifier: ^22.4.13 + version: 22.4.13 + next: + specifier: ^12.3.4 + version: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: + specifier: ^13.2.2 + version: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) + next-seo: + specifier: ^5.15.0 + version: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-i18next: + specifier: ^12.2.0 + version: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) + react-icons: + specifier: ^4.8.0 + version: 4.8.0(react@17.0.2) + react-use: + specifier: ^17.4.0 + version: 17.4.0(react-dom@17.0.2)(react@17.0.2) + shiki: + specifier: ^0.12.1 + version: 0.12.1 devDependencies: - '@next/bundle-analyzer': 12.3.4 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - next-remote-watch: 2.0.0_next@12.3.4 - open-cli: 7.2.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@next/bundle-analyzer': + specifier: ^12.3.4 + version: 12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + next-remote-watch: + specifier: ^2.0.0 + version: 2.0.0(next@12.3.4) + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 packages/cli: - specifiers: - '@graphql-codegen/core': ^3.1.0 - '@graphql-codegen/typescript': ^3.0.2 - '@graphql-tools/delegate': ^9.0.25 - '@graphql-tools/utils': ^9.2.0 - '@graphql-tools/wrap': ^9.3.4 - '@size-limit/preset-small-lib': ^8.2.4 - '@types/lodash': ^4.14.191 - '@types/lodash.sortby': ^4.7.7 - '@types/mkdirp': ^1.0.2 - '@types/node': ^18.15.5 - bob-ts: ^4.1.1 - bob-tsm: ^1.1.2 - changesets-github-release: ^0.1.0 - commander: ^10.0.0 - cosmiconfig: ^8.1.3 - esbuild: ^0.17.12 - fast-glob: ^3.2.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - lodash: ^4.17.21 - mkdirp: ^2.1.5 - open-cli: ^7.2.0 - prettier: ^2.8.6 - rimraf: ^4.4.0 - serve: ^14.2.0 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tmp-promise: ^3.0.3 - tslib: ^2.5.0 - typescript: ^4.9.5 - undici: 5.7.0 - wait-on: ^7.0.1 dependencies: - gqty: link:../gqty - undici: 5.7.0 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + undici: + specifier: 5.7.0 + version: 5.7.0 devDependencies: - '@graphql-codegen/core': 3.1.0_graphql@16.6.0 - '@graphql-codegen/typescript': 3.0.2_graphql@16.6.0 - '@graphql-tools/delegate': 9.0.25_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - '@graphql-tools/wrap': 9.3.4_graphql@16.6.0 - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/lodash': 4.14.191 - '@types/lodash.sortby': 4.7.7 - '@types/mkdirp': 1.0.2 - '@types/node': 18.15.5 - bob-ts: 4.1.1_egtog7kfy74nw7rr3bmqx36oni - bob-tsm: 1.1.2_zofgjzmca2gwtey4x4go3tg4j4 - changesets-github-release: 0.1.0 - commander: 10.0.0 - cosmiconfig: 8.1.3 - esbuild: 0.17.12 - fast-glob: 3.2.12 - graphql: 16.6.0 - lodash: 4.17.21 - mkdirp: 2.1.5 - open-cli: 7.2.0 - prettier: 2.8.6 - rimraf: 4.4.0 - serve: 14.2.0 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tmp-promise: 3.0.3 - tslib: 2.5.0 - typescript: 4.9.5 - wait-on: 7.0.1 + '@graphql-codegen/core': + specifier: ^3.1.0 + version: 3.1.0(graphql@16.6.0) + '@graphql-codegen/typescript': + specifier: ^3.0.2 + version: 3.0.2(graphql@16.6.0) + '@graphql-tools/delegate': + specifier: ^9.0.25 + version: 9.0.25(graphql@16.6.0) + '@graphql-tools/utils': + specifier: ^9.2.0 + version: 9.2.0(graphql@16.6.0) + '@graphql-tools/wrap': + specifier: ^9.3.4 + version: 9.3.4(graphql@16.6.0) + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/lodash.sortby': + specifier: ^4.7.7 + version: 4.7.7 + '@types/mkdirp': + specifier: ^1.0.2 + version: 1.0.2 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + bob-ts: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5) + bob-tsm: + specifier: 2.0.0-alpha-227aebc.0 + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + changesets-github-release: + specifier: ^0.1.0 + version: 0.1.0 + commander: + specifier: ^10.0.0 + version: 10.0.0 + cosmiconfig: + specifier: ^8.1.3 + version: 8.1.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + fast-glob: + specifier: ^3.2.12 + version: 3.2.12 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + mkdirp: + specifier: ^2.1.5 + version: 2.1.5 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + prettier: + specifier: ^2.8.6 + version: 2.8.6 + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + serve: + specifier: ^14.2.0 + version: 14.2.0 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tmp-promise: + specifier: ^3.0.3 + version: 3.0.3 + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 publishDirectory: dist packages/gqty: - specifiers: - '@gqty/utils': workspace:^1.0.0 - '@size-limit/preset-small-lib': ^8.2.4 - '@types/mkdirp': ^1.0.2 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - '@types/wait-on': ^5.3.1 - '@types/ws': ^8.5.4 - bob-esbuild-cli: ^4.0.0 - concurrently: ^7.6.0 - cross-env: ^7.0.3 - esbuild: ^0.17.12 - graphql: ^16.6.0 - jest: ^29.5.0 - mkdirp: ^2.1.5 - open-cli: ^7.2.0 - react: ^17.0.2 - react-dom: ^17.0.2 - rimraf: ^4.4.0 - serve: ^14.2.0 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tsc-watch: ^6.0.0 - typescript: ^4.9.5 - wait-on: ^7.0.1 - ws: ^8.13.0 - dependencies: - '@gqty/utils': link:../utils + dependencies: + '@gqty/utils': + specifier: workspace:^1.0.0 + version: link:../utils/dist devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/mkdirp': 1.0.2 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - '@types/wait-on': 5.3.1 - '@types/ws': 8.5.4 - bob-esbuild-cli: 4.0.0 - concurrently: 7.6.0 - cross-env: 7.0.3 - esbuild: 0.17.12 - graphql: 16.6.0 - jest: 29.5.0_@types+node@18.15.5 - mkdirp: 2.1.5 - open-cli: 7.2.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - rimraf: 4.4.0 - serve: 14.2.0 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tsc-watch: 6.0.0_typescript@4.9.5 - typescript: 4.9.5 - wait-on: 7.0.1 - ws: 8.13.0 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/mkdirp': + specifier: ^1.0.2 + version: 1.0.2 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + '@types/wait-on': + specifier: ^5.3.1 + version: 5.3.1 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.4 + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + concurrently: + specifier: ^7.6.0 + version: 7.6.0 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + graphql: + specifier: ^16.6.0 + version: 16.6.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + mkdirp: + specifier: ^2.1.5 + version: 2.1.5 + open-cli: + specifier: ^7.2.0 + version: 7.2.0 + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + rimraf: + specifier: ^4.4.0 + version: 4.4.0 + serve: + specifier: ^14.2.0 + version: 14.2.0 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tsc-watch: + specifier: ^6.0.0 + version: 6.0.0(typescript@4.9.5) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + wait-on: + specifier: ^7.0.1 + version: 7.0.1 + ws: + specifier: ^8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) publishDirectory: dist packages/logger: - specifiers: - '@size-limit/preset-small-lib': ^8.2.4 - '@types/node': ^18.15.5 - '@types/prettier': ^2.7.2 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - jest: ^29.5.0 - prettier: ^2.8.6 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 dependencies: - prettier: 2.8.6 + prettier: + specifier: ^2.8.6 + version: 2.8.6 devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@types/node': 18.15.5 - '@types/prettier': 2.7.2 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - jest: 29.5.0_@types+node@18.15.5 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/prettier': + specifier: ^2.7.2 + version: 2.7.2 + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/react: - specifiers: - '@size-limit/preset-small-lib': ^8.2.4 - '@testing-library/jest-dom': ^5.16.5 - '@testing-library/react': ^12.1.5 - '@testing-library/react-hooks': ^8.0.1 - '@types/jest': ^29.5.0 - '@types/lodash': ^4.14.191 - '@types/node': ^18.15.5 - '@types/react': ^17.0.53 - '@types/react-dom': ^18.0.11 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 - react: ^17.0.2 - react-dom: ^17.0.2 - react-ssr-prepass: ^1.5.0 - react-test-renderer: ^17.0.2 - regenerator-runtime: ^0.13.11 - size-limit: ^8.2.4 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 - dependencies: - react-ssr-prepass: 1.5.0_react@17.0.2 + dependencies: + react-ssr-prepass: + specifier: ^1.5.0 + version: 1.5.0(react@17.0.2) devDependencies: - '@size-limit/preset-small-lib': 8.2.4_size-limit@8.2.4 - '@testing-library/jest-dom': 5.16.5 - '@testing-library/react': 12.1.5_sfoxds7t5ydpegc3knd667wn6m - '@testing-library/react-hooks': 8.0.1_x4rus6jnwzjq3zgm4bvjbdzauy - '@types/jest': 29.5.0 - '@types/lodash': 4.14.191 - '@types/node': 18.15.5 - '@types/react': 17.0.53 - '@types/react-dom': 18.0.11 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - graphql: 16.6.0 - jest: 29.5.0_@types+node@18.15.5 - jest-environment-jsdom: 29.5.0 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-test-renderer: 17.0.2_react@17.0.2 - regenerator-runtime: 0.13.11 - size-limit: 8.2.4 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@size-limit/preset-small-lib': + specifier: ^8.2.4 + version: 8.2.4(size-limit@8.2.4) + '@testing-library/jest-dom': + specifier: ^5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: ^12.1.5 + version: 12.1.5(react-dom@17.0.2)(react@17.0.2) + '@testing-library/react-hooks': + specifier: ^8.0.1 + version: 8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2) + '@types/jest': + specifier: ^29.5.0 + version: 29.5.0 + '@types/lodash': + specifier: ^4.14.191 + version: 4.14.191 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/react': + specifier: ^17.0.53 + version: 17.0.53 + '@types/react-dom': + specifier: ^18.0.11 + version: 18.0.11 + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-environment-jsdom: + specifier: ^29.5.0 + version: 29.5.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) + react: + specifier: ^17.0.2 + version: 17.0.2 + react-dom: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + react-test-renderer: + specifier: ^17.0.2 + version: 17.0.2(react@17.0.2) + regenerator-runtime: + specifier: ^0.13.11 + version: 0.13.11 + size-limit: + specifier: ^8.2.4 + version: 8.2.4 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/subscriptions: - specifiers: - '@types/node': ^18.15.5 - '@types/ws': ^8.5.4 - bob-esbuild-cli: ^4.0.0 - esbuild: ^0.17.12 - gqty: workspace:^2.3.0 - graphql: ^16.6.0 - isomorphic-ws: ^5.0.0 - test-utils: workspace:^0.1.0 - tslib: ^2.5.0 - typescript: ^4.9.5 - ws: ^8.13.0 - dependencies: - isomorphic-ws: 5.0.0_ws@8.13.0 - ws: 8.13.0 + dependencies: + isomorphic-ws: + specifier: ^5.0.0 + version: 5.0.0(ws@8.13.0) + ws: + specifier: ^8.13.0 + version: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) devDependencies: - '@types/node': 18.15.5 - '@types/ws': 8.5.4 - bob-esbuild-cli: 4.0.0 - esbuild: 0.17.12 - gqty: link:../gqty - graphql: 16.6.0 - test-utils: link:../../internal/test-utils - tslib: 2.5.0 - typescript: 4.9.5 + '@types/node': + specifier: ^18.15.5 + version: 18.15.5 + '@types/ws': + specifier: ^8.5.4 + version: 8.5.4 + bob-esbuild-cli: + specifier: 5.0.0-alpha-227aebc.0 + version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) + esbuild: + specifier: ^0.17.12 + version: 0.17.12 + gqty: + specifier: workspace:^2.3.0 + version: link:../gqty/dist + graphql: + specifier: ^16.6.0 + version: 16.6.0 + test-utils: + specifier: workspace:^0.1.0 + version: link:../../internal/test-utils + tslib: + specifier: ^2.5.0 + version: 2.5.0 + typescript: + specifier: ^4.9.5 + version: 4.9.5 publishDirectory: dist packages/utils: - specifiers: - '@types/lodash-es': ^4.17.7 - '@types/sha1': 1.1.3 - lodash-es: ^4.17.21 - sha1: 1.1.1 devDependencies: - '@types/lodash-es': 4.17.7 - '@types/sha1': 1.1.3 - lodash-es: 4.17.21 - sha1: 1.1.1 + '@types/lodash-es': + specifier: ^4.17.7 + version: 4.17.7 + '@types/sha1': + specifier: 1.1.3 + version: 1.1.3 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + sha1: + specifier: 1.1.1 + version: 1.1.1 publishDirectory: dist packages: - /@adobe/css-tools/4.0.1: + /@adobe/css-tools@4.0.1: resolution: {integrity: sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==} dev: true - /@algolia/autocomplete-core/1.7.2: + /@algolia/autocomplete-core@1.7.2: resolution: {integrity: sha512-eclwUDC6qfApNnEfu1uWcL/rudQsn59tjEoUYZYE2JSXZrHLRjBUGMxiCoknobU2Pva8ejb0eRxpIYDtVVqdsw==} dependencies: '@algolia/autocomplete-shared': 1.7.2 dev: false - /@algolia/autocomplete-js/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-js@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-/x0r0510yEHtTt9+JIhWa9CIvS2s95n5eSyKrCXA6QF8DYKJV+LQpGCpHnO4gEHJFEe0itVdmws3DzOZrBGa9Q==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' @@ -777,7 +1097,7 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-preset-algolia': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 htm: 3.1.1 preact: 10.11.2 @@ -785,12 +1105,12 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-algolia-insights/1.7.2_nl7ecob7oenl7dfhoewptlc4ye: + /@algolia/autocomplete-plugin-algolia-insights@1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1): resolution: {integrity: sha512-dyWJ3Hpn0vGy+Lxd6BZYUupIPB/j7ZA4uzmQ+ThRQF3fjQMpDk4/zNi8/hf0r0Ow9tXOQ7ALKJtHbxWIT/f/Uw==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 search-insights: 2.2.1 transitivePeerDependencies: @@ -798,7 +1118,7 @@ packages: - algoliasearch dev: false - /@algolia/autocomplete-plugin-query-suggestions/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-plugin-query-suggestions@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-lM1B4tsJP+5ePHqXl4kuanmclu8uppmknNTTzWfinjuNRY2WrypwfqrBaCIztbZZYAfs7s0qeC/XXhA4PPSqoA==} peerDependencies: '@algolia/client-search': '>= 4.5.1 < 6' @@ -808,13 +1128,13 @@ packages: optional: true dependencies: '@algolia/autocomplete-core': 1.7.2 - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 - '@algolia/autocomplete-preset-algolia': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-preset-algolia': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-shared': 1.7.2 algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-preset-algolia/1.7.2_algoliasearch@4.14.2: + /@algolia/autocomplete-preset-algolia@1.7.2(algoliasearch@4.14.2): resolution: {integrity: sha512-+RYEG6B0QiGGfRb2G3MtPfyrl0dALF3cQNTWBzBX6p5o01vCCGTTinAm2UKG3tfc2CnOMAtnPLkzNZyJUpnVJw==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' @@ -827,31 +1147,31 @@ packages: algoliasearch: 4.14.2 dev: false - /@algolia/autocomplete-shared/1.7.2: + /@algolia/autocomplete-shared@1.7.2: resolution: {integrity: sha512-QCckjiC7xXHIUaIL3ektBtjJ0w7tTA3iqKcAE/Hjn1lZ5omp7i3Y4e09rAr9ZybqirL7AbxCLLq0Ra5DDPKeug==} dev: false - /@algolia/autocomplete-theme-classic/1.7.2: + /@algolia/autocomplete-theme-classic@1.7.2: resolution: {integrity: sha512-bUoT4wdScyAY4oZrk3zcaGwSKYJ11MGXNFIckWWN/Bd9xqoFu8/09Ujyw5WyzYZidHrs8D3FSTJi6sfHz5g3/Q==} dev: false - /@algolia/cache-browser-local-storage/4.14.2: + /@algolia/cache-browser-local-storage@4.14.2: resolution: {integrity: sha512-FRweBkK/ywO+GKYfAWbrepewQsPTIEirhi1BdykX9mxvBPtGNKccYAxvGdDCumU1jL4r3cayio4psfzKMejBlA==} dependencies: '@algolia/cache-common': 4.14.2 dev: false - /@algolia/cache-common/4.14.2: + /@algolia/cache-common@4.14.2: resolution: {integrity: sha512-SbvAlG9VqNanCErr44q6lEKD2qoK4XtFNx9Qn8FK26ePCI8I9yU7pYB+eM/cZdS9SzQCRJBbHUumVr4bsQ4uxg==} dev: false - /@algolia/cache-in-memory/4.14.2: + /@algolia/cache-in-memory@4.14.2: resolution: {integrity: sha512-HrOukWoop9XB/VFojPv1R5SVXowgI56T9pmezd/djh2JnVN/vXswhXV51RKy4nCpqxyHt/aGFSq2qkDvj6KiuQ==} dependencies: '@algolia/cache-common': 4.14.2 dev: false - /@algolia/client-account/4.14.2: + /@algolia/client-account@4.14.2: resolution: {integrity: sha512-WHtriQqGyibbb/Rx71YY43T0cXqyelEU0lB2QMBRXvD2X0iyeGl4qMxocgEIcbHyK7uqE7hKgjT8aBrHqhgc1w==} dependencies: '@algolia/client-common': 4.14.2 @@ -859,7 +1179,7 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-analytics/4.14.2: + /@algolia/client-analytics@4.14.2: resolution: {integrity: sha512-yBvBv2mw+HX5a+aeR0dkvUbFZsiC4FKSnfqk9rrfX+QrlNOKEhCG0tJzjiOggRW4EcNqRmaTULIYvIzQVL2KYQ==} dependencies: '@algolia/client-common': 4.14.2 @@ -868,14 +1188,14 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-common/4.14.2: + /@algolia/client-common@4.14.2: resolution: {integrity: sha512-43o4fslNLcktgtDMVaT5XwlzsDPzlqvqesRi4MjQz2x4/Sxm7zYg5LRYFol1BIhG6EwxKvSUq8HcC/KxJu3J0Q==} dependencies: '@algolia/requester-common': 4.14.2 '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-personalization/4.14.2: + /@algolia/client-personalization@4.14.2: resolution: {integrity: sha512-ACCoLi0cL8CBZ1W/2juehSltrw2iqsQBnfiu/Rbl9W2yE6o2ZUb97+sqN/jBqYNQBS+o0ekTMKNkQjHHAcEXNw==} dependencies: '@algolia/client-common': 4.14.2 @@ -883,7 +1203,7 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/client-search/4.14.2: + /@algolia/client-search@4.14.2: resolution: {integrity: sha512-L5zScdOmcZ6NGiVbLKTvP02UbxZ0njd5Vq9nJAmPFtjffUSOGEp11BmD2oMJ5QvARgx2XbX4KzTTNS5ECYIMWw==} dependencies: '@algolia/client-common': 4.14.2 @@ -891,37 +1211,37 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /@algolia/events/4.0.1: + /@algolia/events@4.0.1: resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} dev: false - /@algolia/logger-common/4.14.2: + /@algolia/logger-common@4.14.2: resolution: {integrity: sha512-/JGlYvdV++IcMHBnVFsqEisTiOeEr6cUJtpjz8zc0A9c31JrtLm318Njc72p14Pnkw3A/5lHHh+QxpJ6WFTmsA==} dev: false - /@algolia/logger-console/4.14.2: + /@algolia/logger-console@4.14.2: resolution: {integrity: sha512-8S2PlpdshbkwlLCSAB5f8c91xyc84VM9Ar9EdfE9UmX+NrKNYnWR1maXXVDQQoto07G1Ol/tYFnFVhUZq0xV/g==} dependencies: '@algolia/logger-common': 4.14.2 dev: false - /@algolia/requester-browser-xhr/4.14.2: + /@algolia/requester-browser-xhr@4.14.2: resolution: {integrity: sha512-CEh//xYz/WfxHFh7pcMjQNWgpl4wFB85lUMRyVwaDPibNzQRVcV33YS+63fShFWc2+42YEipFGH2iPzlpszmDw==} dependencies: '@algolia/requester-common': 4.14.2 dev: false - /@algolia/requester-common/4.14.2: + /@algolia/requester-common@4.14.2: resolution: {integrity: sha512-73YQsBOKa5fvVV3My7iZHu1sUqmjjfs9TteFWwPwDmnad7T0VTCopttcsM3OjLxZFtBnX61Xxl2T2gmG2O4ehg==} dev: false - /@algolia/requester-node-http/4.14.2: + /@algolia/requester-node-http@4.14.2: resolution: {integrity: sha512-oDbb02kd1o5GTEld4pETlPZLY0e+gOSWjWMJHWTgDXbv9rm/o2cF7japO6Vj1ENnrqWvLBmW1OzV9g6FUFhFXg==} dependencies: '@algolia/requester-common': 4.14.2 dev: false - /@algolia/transporter/4.14.2: + /@algolia/transporter@4.14.2: resolution: {integrity: sha512-t89dfQb2T9MFQHidjHcfhh6iGMNwvuKUvojAj+JsrHAGbuSy7yE4BylhLX6R0Q1xYRoC4Vvv+O5qIw/LdnQfsQ==} dependencies: '@algolia/cache-common': 4.14.2 @@ -929,14 +1249,14 @@ packages: '@algolia/requester-common': 4.14.2 dev: false - /@ampproject/remapping/2.2.0: + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 - /@ardatan/relay-compiler/12.0.0_graphql@16.6.0: + /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true peerDependencies: @@ -948,7 +1268,7 @@ packages: '@babel/runtime': 7.20.13 '@babel/traverse': 7.20.1 '@babel/types': 7.20.0 - babel-preset-fbjs: 3.4.0_@babel+core@7.19.6 + babel-preset-fbjs: 3.4.0(@babel/core@7.19.6) chalk: 4.1.2 fb-watchman: 2.0.2 fbjs: 3.0.4 @@ -964,31 +1284,31 @@ packages: - encoding - supports-color - /@babel/code-frame/7.16.7: + /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.1: + /@babel/compat-data@7.20.1: resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} engines: {node: '>=6.9.0'} - /@babel/core/7.19.6: + /@babel/core@7.19.6: resolution: {integrity: sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.20.1 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) '@babel/helper-module-transforms': 7.19.6 '@babel/helpers': 7.20.1 '@babel/parser': 7.20.1 @@ -1003,7 +1323,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator/7.20.1: + /@babel/generator@7.20.1: resolution: {integrity: sha512-u1dMdBUmA7Z0rBB97xh8pIhviK7oItYOkjbsCxTWMknyvbQRBwX7/gn4JXurRdirWMFh+ZtYARqkA6ydogVZpg==} engines: {node: '>=6.9.0'} dependencies: @@ -1011,13 +1331,13 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure/7.18.6: + /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.19.6: + /@babel/helper-compilation-targets@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1032,7 +1352,7 @@ packages: browserslist: 4.21.4 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.6: + /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.19.6): resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1052,36 +1372,36 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name/7.19.0: + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 '@babel/types': 7.20.0 - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-member-expression-to-functions/7.18.9: + /@babel/helper-member-expression-to-functions@7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-module-transforms/7.19.6: + /@babel/helper-module-transforms@7.19.6: resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} engines: {node: '>=6.9.0'} dependencies: @@ -1096,17 +1416,17 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression/7.18.6: + /@babel/helper-optimise-call-expression@7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-plugin-utils/7.19.0: + /@babel/helper-plugin-utils@7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - /@babel/helper-replace-supers/7.19.1: + /@babel/helper-replace-supers@7.19.1: resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} engines: {node: '>=6.9.0'} dependencies: @@ -1118,37 +1438,37 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-simple-access/7.19.4: + /@babel/helper-simple-access@7.19.4: resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.0 - /@babel/helper-string-parser/7.19.4: + /@babel/helper-string-parser@7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option/7.18.6: + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helpers/7.20.1: + /@babel/helpers@7.20.1: resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} engines: {node: '>=6.9.0'} dependencies: @@ -1158,7 +1478,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -1166,16 +1486,17 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.1: + /@babel/parser@7.20.1: resolution: {integrity: sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.20.0 - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.6: + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: @@ -1183,14 +1504,15 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.6 + '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.19.6) '@babel/helper-plugin-utils': 7.19.0 transitivePeerDependencies: - supports-color - /@babel/plugin-proposal-object-rest-spread/7.19.4_@babel+core@7.19.6: + /@babel/plugin-proposal-object-rest-spread@7.19.4(@babel/core@7.19.6): resolution: {integrity: sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 peerDependenciesMeta: @@ -1199,12 +1521,12 @@ packages: dependencies: '@babel/compat-data': 7.20.1 '@babel/core': 7.19.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-transform-parameters': 7.20.1_@babel+core@7.19.6 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-transform-parameters': 7.20.1(@babel/core@7.19.6) - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.6: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.19.6): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1215,7 +1537,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1226,7 +1548,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.6: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.19.6): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1237,7 +1559,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.19.6: + /@babel/plugin-syntax-flow@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1249,7 +1571,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1260,7 +1582,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1271,7 +1593,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.6: + /@babel/plugin-syntax-jsx@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1283,7 +1605,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1294,7 +1616,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1305,7 +1627,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.6: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.19.6): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1316,7 +1638,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1327,7 +1649,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1338,7 +1660,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.6: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.19.6): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1349,7 +1671,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.6: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.19.6): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1361,7 +1683,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.19.6: + /@babel/plugin-syntax-typescript@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1373,7 +1695,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1385,7 +1707,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1397,7 +1719,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-block-scoping/7.20.0_@babel+core@7.19.6: + /@babel/plugin-transform-block-scoping@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1409,7 +1731,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-classes@7.19.0(@babel/core@7.19.6): resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1420,7 +1742,7 @@ packages: dependencies: '@babel/core': 7.19.6 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 @@ -1431,7 +1753,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.19.6): resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1443,7 +1765,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-destructuring/7.20.0_@babel+core@7.19.6: + /@babel/plugin-transform-destructuring@7.20.0(@babel/core@7.19.6): resolution: {integrity: sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1455,7 +1777,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-flow-strip-types@7.19.0(@babel/core@7.19.6): resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1466,9 +1788,9 @@ packages: dependencies: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6 + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.19.6) - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.6: + /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.19.6): resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1480,7 +1802,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.19.6): resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1490,11 +1812,11 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.19.6 + '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.19.6) '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.19.6): resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1506,7 +1828,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1518,7 +1840,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.19.6: + /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.19.6): resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1534,7 +1856,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1549,7 +1871,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/plugin-transform-parameters/7.20.1_@babel+core@7.19.6: + /@babel/plugin-transform-parameters@7.20.1(@babel/core@7.19.6): resolution: {integrity: sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1561,7 +1883,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1573,7 +1895,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1585,7 +1907,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1598,7 +1920,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.19.6): resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1611,7 +1933,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.19.6): resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1624,10 +1946,10 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.6) '@babel/types': 7.20.0 - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.6: + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.19.6): resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1639,7 +1961,7 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.6: + /@babel/plugin-transform-spread@7.19.0(@babel/core@7.19.6): resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1652,7 +1974,7 @@ packages: '@babel/helper-plugin-utils': 7.19.0 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.6: + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.19.6): resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: @@ -1664,26 +1986,13 @@ packages: '@babel/core': 7.19.6 '@babel/helper-plugin-utils': 7.19.0 - /@babel/runtime/7.20.1: - resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - - /@babel/runtime/7.20.13: + /@babel/runtime@7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/runtime/7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/template/7.18.10: + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: @@ -1691,7 +2000,7 @@ packages: '@babel/parser': 7.20.1 '@babel/types': 7.20.0 - /@babel/traverse/7.20.1: + /@babel/traverse@7.20.1: resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} engines: {node: '>=6.9.0'} dependencies: @@ -1708,7 +2017,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types/7.20.0: + /@babel/types@7.20.0: resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==} engines: {node: '>=6.9.0'} dependencies: @@ -1716,14 +2025,14 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - /@braintree/sanitize-url/6.0.1: + /@braintree/sanitize-url@6.0.1: resolution: {integrity: sha512-zr9Qs9KFQiEvMWdZesjcmRJlUck5NR+eKGS1uyKk+oYTWwlYrsoPEi6VmG6/TzBD1hKCGEimrhTgGS6hvn/xIQ==} dev: false - /@chakra-ui/accordion/1.4.12_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/accordion@1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-Hq5Ie1SI4mmtgBmeuir+f7QKgopZEyQOojgufo/A20keMSy5Yk9WZjkXNQgvoIRl1AsoziIPUlubQOtkBZjjbA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1733,18 +2042,18 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/alert/1.3.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/alert@1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-fFpJYBpHOIK/BX4BVl/xafYiDBUW+Bq/gUYDOo4iAiO4vHgxo74oa+yOwSRNlNjAgIX7pi2ridsYQALKyWyxxQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1753,14 +2062,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/anatomy/1.3.0_@chakra-ui+system@1.12.1: + /@chakra-ui/anatomy@1.3.0(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-vj/lcHkCuq/dtbl69DkNsftZTnrGEegB90ODs1B6rxw8iVMdDSYkthPPFAkqzNs4ppv1y2IBjELuVzpeta1OHA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1768,11 +2077,11 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) dev: false - /@chakra-ui/avatar/1.3.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/avatar@1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-/eRRK48Er92/QWAfWhxsJIN0gZBBvk+ew4Hglo+pxt3/NDnfTF2yPE7ZN29Dl6daPNbyTOpoksMwaU2mZIqLgA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1781,14 +2090,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/image': 1.1.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/image': 1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/breadcrumb/1.3.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/breadcrumb@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-iXxienBO6RUnJEcDvyDWyRt+mzPyl7/b6N8i0vrjGKGLpgtayJFvIdo33tFcvx6TCy7V9hiE3HTtZnNomWdR6A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1797,13 +2106,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/button/1.5.10_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/button@1.5.10(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-IVEOrleI378CckAa3b3CTUHMPZRfpy6LPwn1Mx3sMpHEkDTKu8zJcjgEvCE8HYzNC1KbwBsa1PfTgk40ui6EtA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1812,15 +2121,15 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/spinner': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/spinner': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/checkbox/1.7.1_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/checkbox@1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-9Io97yn8OrdaIynCj+3Z/neJV7lTT1MtcdYh3BKMd7WnoJDkRY/GlBM8zsdgC5Wvm+ZQ1M83t0YvRPKLLzusyA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1830,27 +2139,27 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/clickable/1.2.6_react@17.0.2: + /@chakra-ui/clickable@1.2.6(react@17.0.2): resolution: {integrity: sha512-89SsrQwwwAadcl/bN8nZqqaaVhVNFdBXqQnxVy1t07DL5ezubmNb5SgFh9LDznkm9YYPQhaGr3W6HFro7iAHMg==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/close-button/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/close-button@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-cYTxfgrIlPU4IZm1sehZXxx/TNQBk9c3LBPvTpywEM8GVRGINh4YLq8WiMaPtO+TDNBnKoWS/jS4IHnR+abADw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1859,24 +2168,24 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/color-mode/1.4.8_react@17.0.2: + /@chakra-ui/color-mode@1.4.8(react@17.0.2): resolution: {integrity: sha512-iD4126DVQi06c6ARr3uf3R2rtEu8aBVjW8rhZ+lOsV26Z15iCJA7OAut13Xu06fcZvgjSB/ChDy6Sx9sV9UjHA==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-env': 1.1.6_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/control-box/1.1.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/control-box@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1885,41 +2194,41 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/counter/1.2.10_react@17.0.2: + /@chakra-ui/counter@1.2.10(react@17.0.2): resolution: {integrity: sha512-HQd09IuJ4z8M8vWajH+99jBWWSHDesQZmnN95jUg3HKOuNleLaipf2JFdrqbO1uWQyHobn2PM6u+B+JCAh2nig==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/css-reset/1.1.3_lppulqnmkkrmfes7eqrbphxjnm: + /@chakra-ui/css-reset@1.1.3(@emotion/react@11.10.6)(react@17.0.2): resolution: {integrity: sha512-AgfrE7bRTJvNi/4zIfacI/kBHmHmHEIeQtHwCvk/0qM9V2gK1VM3ctYlnibf7BTh17F/UszweOGRb1lHSPfWjw==} peerDependencies: '@emotion/react': '>=10.0.35' react: '>=16.8.6' dependencies: - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/descendant/2.1.4_react@17.0.2: + /@chakra-ui/descendant@2.1.4(react@17.0.2): resolution: {integrity: sha512-k1olHM6c0fcI5fQxO9rqg9rxripcfHMEm2LkORgH0CAzFn/U75CxCw5ec0IMedNWCdiv740enVfnfhBAoSg7gw==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/editable/1.4.2_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/editable@1.4.2(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-a5zKghA/IvG7yNkmFl7Z9c2KSsf0FgyijsNPTg/4S5jxyz13QJtoTg40tdpyaxHHCT25y25iUcV4FYCj6Jd01w==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1928,26 +2237,26 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/focus-lock/1.2.6_h7fc2el62uaa77gho3xhys6ola: + /@chakra-ui/focus-lock@1.2.6(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-ZJNE1oNdUM1aGWuCJ+bxFa/d3EwxzfMWzTKzSvKDK50GWoUQQ10xFTT9nY/yFpkcwhBvx1KavxKf44mIhIbSog==} peerDependencies: react: '>=16.8.6' dependencies: '@chakra-ui/utils': 1.10.4 react: 17.0.2 - react-focus-lock: 2.5.2_h7fc2el62uaa77gho3xhys6ola + react-focus-lock: 2.5.2(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/form-control/1.6.0_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/form-control@1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-MtUE98aocP2QTgvyyJ/ABuG33mhT3Ox56phKreG3HzbUKByMwrbQSm1QcAgyYdqSZ9eKB2tXx+qgGNh+avAfDA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1956,27 +2265,27 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/hooks/1.9.1_react@17.0.2: + /@chakra-ui/hooks@1.9.1(react@17.0.2): resolution: {integrity: sha512-SEeh1alDKzrP9gMLWMnXOUDBQDKF/URL6iTmkumTn6vhawWNla6sPrcMyoCzWdMzwUhZp3QNtCKbUm7dxBXvPw==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 compute-scroll-into-view: 1.0.14 copy-to-clipboard: 3.3.1 react: 17.0.2 dev: false - /@chakra-ui/icon/2.0.5_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/icon@2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -1985,25 +2294,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/icon/2.0.5_react@17.0.2: - resolution: {integrity: sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - react: '>=16.8.6' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true - dependencies: - '@chakra-ui/utils': 1.10.4 - react: 17.0.2 - dev: false - - /@chakra-ui/icons/1.1.7_react@17.0.2: + /@chakra-ui/icons@1.1.7(react@17.0.2): resolution: {integrity: sha512-YIHxey/B4M2PyFASlHXtAWFyW+tsAtGAChOJ8dsM2kpu1MbVUqm/6nMI1KIFd7Te5IWuNYA75rAHBdLI0Yu61A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2012,12 +2308,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_react@17.0.2 + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) '@types/react': 17.0.53 react: 17.0.2 dev: false - /@chakra-ui/image/1.1.10_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/image@1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-PJZmhQ/R1PgdMyCRjALfoyq1FNh/WzMAw70sliHLtLcb9hBXniwQZuckYfUshCkUoFBj/ow9d4byn9Culdpk7Q==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2026,13 +2322,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/input/1.4.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/input@1.4.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Ljy/NbOhh9cNQxKTWQRsT4aQiXs2vVya+Cj5NpMAz08NFFjPZovsTawhI7m6ejT5Vsh76QYjh2rOLLI3fWqQQw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2041,14 +2337,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/layout/1.8.0_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/layout@1.8.0(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-GJtEKez5AZu0XQTxI6a6jwA/hMDD36pP0HBxBOGuHP1hWCebDzMjraiMfWiP9w7hKERFE4j19kocHxIXyocfJA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2057,14 +2353,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/live-region/1.1.6_react@17.0.2: + /@chakra-ui/live-region@1.1.6(react@17.0.2): resolution: {integrity: sha512-9gPQHXf7oW0jXyT5R/JzyDMfJ3hF70TqhN8bRH4fMyfNr2Se+SjztMBqCrv5FS5rPjcCeua+e0eArpoB3ROuWQ==} peerDependencies: react: '>=16.8.6' @@ -2073,7 +2369,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/media-query/2.0.4_sxr25aaor3bltw4csjjk62xw3q: + /@chakra-ui/media-query@2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2): resolution: {integrity: sha512-kn6g/L0IFFUHz2v4yiCsBnhg9jUeA7525Z+AWl+BPtvryi7i9J+AJ27y/QAge7vUGy4dwDeFyxOZTs2oZ9/BsA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2083,14 +2379,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/menu/1.8.12_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/menu@1.8.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-X/s74VpOReQW4fCRCa21f/VOe++cXhPz2Sh7pDjtaT3zmKjrJwgk1Kw75cXfNX1eke6hf/wZ0FGweu/m7+C3OA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2100,19 +2396,19 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/clickable': 1.2.6_react@17.0.2 - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/clickable': 1.2.6(react@17.0.2) + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/modal/1.11.1_znojjvmuimc52wc6sir6sqg4da: + /@chakra-ui/modal@1.11.1(@chakra-ui/system@1.12.1)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-B2BBDonHb04vbPLAWgko1JYBwgW8ZNSLyhTJK+rbrCsRSgazuLTcwq4hdyJqrYNWtaQEfSwpAXqJ7joMZdv59A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2123,24 +2419,24 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/focus-lock': 1.2.6_h7fc2el62uaa77gho3xhys6ola - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/focus-lock': 1.2.6(@types/react@17.0.53)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - aria-hidden: 1.2.1_h7fc2el62uaa77gho3xhys6ola - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + aria-hidden: 1.2.1(@types/react@17.0.53)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-remove-scroll: 2.4.1_h7fc2el62uaa77gho3xhys6ola + react-dom: 17.0.2(react@17.0.2) + react-remove-scroll: 2.4.1(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/number-input/1.4.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/number-input@1.4.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-LorGRZFMipom8vCUEbLi2s7bTHF2Fgiu766W0jTbzMje+8Z1ZoRQunH9OZWQnxnWQTUfUM2KBW8KwToYh1ojfQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2149,17 +2445,17 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/counter': 1.2.10_react@17.0.2 - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/counter': 1.2.10(react@17.0.2) + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/pin-input/1.7.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/pin-input@1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-KEVUHHmf22tI4F7gzT9+pHi4E5cCyte6M8rPEwRyuc0kUBo48D8OW0BJwGdESWOKMkQXazDF6Zg4o32t45tbpg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2168,15 +2464,15 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/popover/1.11.9_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/popover@1.11.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-hJ1/Lwukox3ryTN7W1wnj+nE44utfLwQYvfUSdatt5dznnh8k0P6Wx7Hmjm1cYffRavBhqzwua/QZDWjJN9N0g==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2186,40 +2482,40 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/popper/2.4.3_react@17.0.2: + /@chakra-ui/popper@2.4.3(react@17.0.2): resolution: {integrity: sha512-TGzFnYt3mtIVkIejtYIAu4Ka9DaYLzMR4NgcqI6EtaTvgK7Xep+6RTiY/Nq+ZT3l/eaNUwqHRFoNrDUg1XYasA==} peerDependencies: react: '>=16.8.6' dependencies: - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@popperjs/core': 2.11.6 react: 17.0.2 dev: false - /@chakra-ui/portal/1.3.10_sfoxds7t5ydpegc3knd667wn6m: + /@chakra-ui/portal@1.3.10(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-t2KQ6MXbyf1qFYxWw/bs//CnwD+Clq7mbsP1Y7g+THCz2FvlLlMj45BWocLB30NoNyA8WCS2zyMBszW2/qvDiA==} peerDependencies: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/progress/1.2.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/progress@1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-thaHRIYTVktgV78vJMNwzfCX+ickhSpn2bun6FtGVUphFx4tjV+ggz+IGohm6AH2hapskoR1mQU2iNZb6BK0hQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2228,13 +2524,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/provider/1.7.14_6dvm3afkgzqn7vmqvog4mojbze: + /@chakra-ui/provider@1.7.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-FCA33CZy/jFzExglKMioeri8sr9NtDTcNVPnx95ZJiA7WpfFo0xuZ6/fMC4DwIQPkJKbSIZBXYLZ3U10Ntylrw==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2242,19 +2538,19 @@ packages: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/css-reset': 1.1.3_lppulqnmkkrmfes7eqrbphxjnm - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/css-reset': 1.1.3(@emotion/react@11.10.6)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/radio/1.5.1_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/radio@1.5.1(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-zO5eShz+j68A7935jJ2q5u3brX/bjPEGh9Pj2+bnKbmC9Vva6jEzBSJsAx9n4WbkAzR3xDMGWsbpivFp8X1tJw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2263,16 +2559,16 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/react-env/1.1.6_react@17.0.2: + /@chakra-ui/react-env@1.1.6(react@17.0.2): resolution: {integrity: sha512-L90LNvCfe04FTkN9OPok/o2e60zLJNBH8Im/5dUHvqy7dXLXok8ZDad5vEL46XmGbhe7O8fbxhG6FmAYdcCHrQ==} peerDependencies: react: '>=16.8.6' @@ -2281,7 +2577,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react-utils/1.2.3_react@17.0.2: + /@chakra-ui/react-utils@1.2.3(react@17.0.2): resolution: {integrity: sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw==} peerDependencies: react: '>=16.8.6' @@ -2290,7 +2586,7 @@ packages: react: 17.0.2 dev: false - /@chakra-ui/react/1.8.9_pizuovw4rxklnfeqfejc6mp34q: + /@chakra-ui/react@1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-NfR5XKVqEWhchFLiWaTWkWeYZJK1SNF2O6sQxFVrX6M+nAgJ3Q9tfMk6/I3II+xc4hXJUcYmUvmw37vT92yMaQ==} peerDependencies: '@emotion/react': ^11.0.0 @@ -2299,63 +2595,63 @@ packages: react: '>=16.8.6' react-dom: '>=16.8.6' dependencies: - '@chakra-ui/accordion': 1.4.12_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/alert': 1.3.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/avatar': 1.3.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/breadcrumb': 1.3.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/button': 1.5.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/checkbox': 1.7.1_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/control-box': 1.1.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/counter': 1.2.10_react@17.0.2 - '@chakra-ui/css-reset': 1.1.3_lppulqnmkkrmfes7eqrbphxjnm - '@chakra-ui/editable': 1.4.2_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/image': 1.1.10_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/input': 1.4.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/layout': 1.8.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/live-region': 1.1.6_react@17.0.2 - '@chakra-ui/media-query': 2.0.4_sxr25aaor3bltw4csjjk62xw3q - '@chakra-ui/menu': 1.8.12_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/modal': 1.11.1_znojjvmuimc52wc6sir6sqg4da - '@chakra-ui/number-input': 1.4.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/pin-input': 1.7.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/popover': 1.11.9_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/progress': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/provider': 1.7.14_6dvm3afkgzqn7vmqvog4mojbze - '@chakra-ui/radio': 1.5.1_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/react-env': 1.1.6_react@17.0.2 - '@chakra-ui/select': 1.2.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/skeleton': 1.2.14_glnyuheil4qa4aagin4jhz34ei - '@chakra-ui/slider': 1.5.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/spinner': 1.2.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/stat': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/switch': 1.3.10_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/table': 1.3.6_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/tabs': 1.6.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/tag': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/textarea': 1.2.11_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 - '@chakra-ui/toast': 1.5.9_zbxngkwtndcajnqyumwskenfdm - '@chakra-ui/tooltip': 1.5.1_zbxngkwtndcajnqyumwskenfdm - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/accordion': 1.4.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/alert': 1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/avatar': 1.3.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/breadcrumb': 1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/button': 1.5.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/checkbox': 1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/control-box': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/counter': 1.2.10(react@17.0.2) + '@chakra-ui/css-reset': 1.1.3(@emotion/react@11.10.6)(react@17.0.2) + '@chakra-ui/editable': 1.4.2(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/image': 1.1.10(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/input': 1.4.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/layout': 1.8.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/live-region': 1.1.6(react@17.0.2) + '@chakra-ui/media-query': 2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2) + '@chakra-ui/menu': 1.8.12(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/modal': 1.11.1(@chakra-ui/system@1.12.1)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/number-input': 1.4.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/pin-input': 1.7.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/popover': 1.11.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/progress': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/provider': 1.7.14(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/radio': 1.5.1(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/react-env': 1.1.6(react@17.0.2) + '@chakra-ui/select': 1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/skeleton': 1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/slider': 1.5.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/spinner': 1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/stat': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/switch': 1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/table': 1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/tabs': 1.6.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/tag': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/textarea': 1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) + '@chakra-ui/toast': 1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/tooltip': 1.5.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /@chakra-ui/select/1.2.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/select@1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-6Tis1+ZrRjQeWhQfziQn3ZdPphV5ccafpZOhiPdTcM2J1XcXOlII+9rHxvaW+jx7zQ5ly5o8kd7iXzalDgl5wA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2364,13 +2660,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/skeleton/1.2.14_glnyuheil4qa4aagin4jhz34ei: + /@chakra-ui/skeleton@1.2.14(@chakra-ui/theme@1.14.1)(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-R0v4DfQ2yjXCJf9SzhTmDb2PLx5//LxsRbjjgRa8qJCR4MZaGswPrekp4dP8YjY8aEYzuZbvHU12T3vqZBk2GA==} peerDependencies: '@chakra-ui/theme': '>=1.0.0' @@ -2378,17 +2674,17 @@ packages: '@emotion/styled': ^11.0.0 react: '>=16.8.6' dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/media-query': 2.0.4_sxr25aaor3bltw4csjjk62xw3q - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/media-query': 2.0.4(@chakra-ui/system@1.12.1)(@chakra-ui/theme@1.14.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/slider/1.5.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/slider@1.5.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-THkGU2BsA6XMosXcEVQkWVRftqUIAKCb+y4iEpR3C2ztqL7Fl/CbIGwyr5majhPhKc275rb8dfxwp8R0L0ZIiQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2397,14 +2693,14 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/spinner/1.2.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/spinner@1.2.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-GoUCccN120fGRVgUtfuwcEjeoaxffB+XsgpxX7jhWloXf8b6lkqm68bsxX4Ybb2vGN1fANI98/45JmrnddZO/A==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2413,13 +2709,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/stat/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/stat@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-m76jumFW1N+mCG4ytrUz9Mh09nZtS4OQcADEvOslfdI5StwwuzasTA1tueaelPzdhBioMwFUWL05Fr1fXbPJ/Q==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2428,21 +2724,21 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/styled-system/1.19.0: + /@chakra-ui/styled-system@1.19.0: resolution: {integrity: sha512-z+bMfWs6jQGkpgarge1kmk78DuDhJIXRUMyRqZ3+CiIkze88bIIsww6mV2i8tEfUfTAvALeMnlYZ1DYsHsTTJw==} dependencies: '@chakra-ui/utils': 1.10.4 csstype: 3.0.9 dev: false - /@chakra-ui/switch/1.3.10_csxourtydlqlkdypnr3c6yasxu: + /@chakra-ui/switch@1.3.10(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-V6qDLY6oECCbPyu7alWWOAhSBI4+SAuT6XW/zEQbelkwuUOiGO1ax67rTXOmZ59A2AaV1gqQFxDh8AcbvwO5XQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2452,31 +2748,31 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/checkbox': 1.7.1_csxourtydlqlkdypnr3c6yasxu - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/checkbox': 1.7.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/system/1.12.1_zc6uy6i6ttehedii47aio4ko3u: + /@chakra-ui/system@1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2): resolution: {integrity: sha512-Rp09/rMuPA3hF38OJxeQciGO9N0Ie1GxwHRAw1AFA/TY3fVyK9pNI5oN+J/1cAxq7v9yKdIr1YfnruJTI9xfEg==} peerDependencies: '@emotion/react': ^11.0.0 '@emotion/styled': ^11.0.0 react: '>=16.8.6' dependencies: - '@chakra-ui/color-mode': 1.4.8_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 + '@chakra-ui/color-mode': 1.4.8(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) '@chakra-ui/styled-system': 1.19.0 '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) react: 17.0.2 react-fast-compare: 3.2.0 dev: false - /@chakra-ui/table/1.3.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/table@1.3.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2485,12 +2781,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/tabs/1.6.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/tabs@1.6.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-hGs2REEVVWyfgs+qEkPiUsNnqwv3QwXfKYyXaMnGS7CCkGgUiEvIO7n9968/KGnGbM4GuEHX+BxG2suIUf24yg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2499,16 +2795,16 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/clickable': 1.2.6_react@17.0.2 - '@chakra-ui/descendant': 2.1.4_react@17.0.2 - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/clickable': 1.2.6(react@17.0.2) + '@chakra-ui/descendant': 2.1.4(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/tag/1.2.7_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/tag@1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-RKrKOol4i/CnpFfo3T9LMm1abaqM+5Bs0soQLbo1iJBbBACY09sWXrQYvveQ2GYzU/OrAUloHqqmKjyVGOlNtg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2517,13 +2813,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/icon': 2.0.5_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/icon': 2.0.5(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/textarea/1.2.11_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/textarea@1.2.11(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-RDWbMyC87/AFRX98EnVum5eig/7hhcvS1BrqW5lvmTgrpr7KVr80Dfa8hUj58Iq37Z7AqZijDPkBn/zg7bPdIg==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2532,25 +2828,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/form-control': 1.6.0_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/form-control': 1.6.0(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@chakra-ui/theme-tools/1.3.6: - resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} - peerDependencies: - '@chakra-ui/system': '>=1.0.0' - peerDependenciesMeta: - '@chakra-ui/system': - optional: true - dependencies: - '@chakra-ui/utils': 1.10.4 - '@ctrl/tinycolor': 3.4.1 - dev: false - - /@chakra-ui/theme-tools/1.3.6_@chakra-ui+system@1.12.1: + /@chakra-ui/theme-tools@1.3.6(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2558,12 +2842,12 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 '@ctrl/tinycolor': 3.4.1 dev: false - /@chakra-ui/theme/1.14.1_@chakra-ui+system@1.12.1: + /@chakra-ui/theme@1.14.1(@chakra-ui/system@1.12.1): resolution: {integrity: sha512-VeNZi+zD3yDwzvZm234Cy3vnalCzQ+dhAgpHdIYzGO1CYO8DPa+ROcQ70rUueL7dSvUz15KOiGTw6DAl7LXlGA==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2571,13 +2855,13 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/anatomy': 1.3.0_@chakra-ui+system@1.12.1 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme-tools': 1.3.6_@chakra-ui+system@1.12.1 + '@chakra-ui/anatomy': 1.3.0(@chakra-ui/system@1.12.1) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme-tools': 1.3.6(@chakra-ui/system@1.12.1) '@chakra-ui/utils': 1.10.4 dev: false - /@chakra-ui/toast/1.5.9_zbxngkwtndcajnqyumwskenfdm: + /@chakra-ui/toast@1.5.9(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-rns04bGdMcG7Ijg45L+PfuEW4rCd0Ycraix4EJQhcl9RXI18G9sphmlp9feidhZAkI6Ukafq1YvyvkBfkKnIzQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2588,20 +2872,20 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/alert': 1.3.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/close-button': 1.2.7_5qblqjf622vzzkdskgddihcrca - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u - '@chakra-ui/theme': 1.14.1_@chakra-ui+system@1.12.1 - '@chakra-ui/transition': 1.4.8_4bcqv2kvtjx6raziruhdnbn2uq + '@chakra-ui/alert': 1.3.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/close-button': 1.2.7(@chakra-ui/system@1.12.1)(react@17.0.2) + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) + '@chakra-ui/theme': 1.14.1(@chakra-ui/system@1.12.1) + '@chakra-ui/transition': 1.4.8(framer-motion@6.5.1)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@reach/alert': 0.13.2_sfoxds7t5ydpegc3knd667wn6m - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@reach/alert': 0.13.2(react-dom@17.0.2)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/tooltip/1.5.1_zbxngkwtndcajnqyumwskenfdm: + /@chakra-ui/tooltip@1.5.1(@chakra-ui/system@1.12.1)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-EUAlDdlCBt63VpEVtj/RkFjHQVN/xA9gEAumngQdi1Sp+OXPYCBM9GwSY0NwrM1RfKBnhPSH9wz7FwredJWeaw==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2612,30 +2896,30 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/hooks': 1.9.1_react@17.0.2 - '@chakra-ui/popper': 2.4.3_react@17.0.2 - '@chakra-ui/portal': 1.3.10_sfoxds7t5ydpegc3knd667wn6m - '@chakra-ui/react-utils': 1.2.3_react@17.0.2 - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/hooks': 1.9.1(react@17.0.2) + '@chakra-ui/popper': 2.4.3(react@17.0.2) + '@chakra-ui/portal': 1.3.10(react-dom@17.0.2)(react@17.0.2) + '@chakra-ui/react-utils': 1.2.3(react@17.0.2) + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@chakra-ui/visually-hidden': 1.1.6_5qblqjf622vzzkdskgddihcrca - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@chakra-ui/visually-hidden': 1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /@chakra-ui/transition/1.4.8_4bcqv2kvtjx6raziruhdnbn2uq: + /@chakra-ui/transition@1.4.8(framer-motion@6.5.1)(react@17.0.2): resolution: {integrity: sha512-5uc8LEuCH7+0h++wqAav/EktTHOjbLDSTXQlU9fzPIlNNgyf2eXrHVN2AGMGKiMR9Z4gS7umQjZ54r0w/mZ/Fw==} peerDependencies: framer-motion: 3.x || 4.x || 5.x || 6.x react: '>=16.8.6' dependencies: '@chakra-ui/utils': 1.10.4 - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 dev: false - /@chakra-ui/utils/1.10.4: + /@chakra-ui/utils@1.10.4: resolution: {integrity: sha512-AM91VQQxw8F4F1WDA28mqKY6NFIOuzc2Ekkna88imy2OiqqmYH0xkq8J16L2qj4cLiLozpYqba3C79pWioy6FA==} dependencies: '@types/lodash.mergewith': 4.6.6 @@ -2644,7 +2928,7 @@ packages: lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/visually-hidden/1.1.6_5qblqjf622vzzkdskgddihcrca: + /@chakra-ui/visually-hidden@1.1.6(@chakra-ui/system@1.12.1)(react@17.0.2): resolution: {integrity: sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ==} peerDependencies: '@chakra-ui/system': '>=1.0.0' @@ -2653,15 +2937,15 @@ packages: '@chakra-ui/system': optional: true dependencies: - '@chakra-ui/system': 1.12.1_zc6uy6i6ttehedii47aio4ko3u + '@chakra-ui/system': 1.12.1(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(react@17.0.2) '@chakra-ui/utils': 1.10.4 react: 17.0.2 dev: false - /@changesets/apply-release-plan/6.1.3: + /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.13 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -2676,10 +2960,10 @@ packages: semver: 5.7.1 dev: true - /@changesets/assemble-release-plan/5.2.3: + /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.13 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -2687,17 +2971,17 @@ packages: semver: 5.7.1 dev: true - /@changesets/changelog-git/0.1.14: + /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 dev: true - /@changesets/cli/2.26.0: + /@changesets/cli@2.26.0: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.13 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -2732,7 +3016,7 @@ packages: tty-table: 4.1.6 dev: true - /@changesets/config/2.3.0: + /@changesets/config@2.3.0: resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} dependencies: '@changesets/errors': 0.1.4 @@ -2744,13 +3028,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors/0.1.4: + /@changesets/errors@0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.5: + /@changesets/get-dependents-graph@1.3.5: resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} dependencies: '@changesets/types': 5.2.1 @@ -2760,7 +3044,7 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-release-plan/3.0.16: + /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: '@babel/runtime': 7.20.13 @@ -2772,11 +3056,11 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type/0.3.2: + /@changesets/get-version-range-type@0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git/2.0.0: + /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: '@babel/runtime': 7.20.13 @@ -2788,20 +3072,20 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger/0.0.5: + /@changesets/logger@0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse/0.3.16: + /@changesets/parse@0.3.16: resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 dev: true - /@changesets/pre/1.0.14: + /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: '@babel/runtime': 7.20.13 @@ -2811,10 +3095,10 @@ packages: fs-extra: 7.0.1 dev: true - /@changesets/read/0.5.9: + /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.13 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -2824,15 +3108,15 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types/4.1.0: + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types/5.2.1: + /@changesets/types@5.2.1: resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} dev: true - /@changesets/write/0.2.3: + /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: '@babel/runtime': 7.20.13 @@ -2842,19 +3126,18 @@ packages: prettier: 2.8.6 dev: true - /@cspotcode/source-map-support/0.8.1: + /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@ctrl/tinycolor/3.4.1: + /@ctrl/tinycolor@3.4.1: resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} engines: {node: '>=10'} dev: false - /@emotion/babel-plugin/11.10.6: + /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 @@ -2870,7 +3153,7 @@ packages: stylis: 4.1.3 dev: false - /@emotion/cache/11.10.5: + /@emotion/cache@11.10.5: resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: '@emotion/memoize': 0.8.0 @@ -2880,11 +3163,11 @@ packages: stylis: 4.1.3 dev: false - /@emotion/hash/0.9.0: + /@emotion/hash@0.9.0: resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} dev: false - /@emotion/is-prop-valid/0.8.8: + /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true dependencies: @@ -2892,22 +3175,23 @@ packages: dev: false optional: true - /@emotion/is-prop-valid/1.2.0: + /@emotion/is-prop-valid@1.2.0: resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: '@emotion/memoize': 0.8.0 dev: false - /@emotion/memoize/0.7.4: + /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true dev: false optional: true - /@emotion/memoize/0.8.0: + /@emotion/memoize@0.8.0: resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@emotion/react/11.10.6_h7fc2el62uaa77gho3xhys6ola: + /@emotion/react@11.10.6(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==} peerDependencies: '@types/react': '*' @@ -2920,7 +3204,7 @@ packages: '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@17.0.2) '@emotion/utils': 1.2.0 '@emotion/weak-memoize': 0.3.0 '@types/react': 17.0.53 @@ -2928,7 +3212,7 @@ packages: react: 17.0.2 dev: false - /@emotion/serialize/1.1.1: + /@emotion/serialize@1.1.1: resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: '@emotion/hash': 0.9.0 @@ -2938,11 +3222,11 @@ packages: csstype: 3.1.1 dev: false - /@emotion/sheet/1.2.1: + /@emotion/sheet@1.2.1: resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} dev: false - /@emotion/styled/11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi: + /@emotion/styled@11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -2955,19 +3239,19 @@ packages: '@babel/runtime': 7.20.13 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@17.0.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@17.0.2) '@emotion/utils': 1.2.0 '@types/react': 17.0.53 react: 17.0.2 dev: false - /@emotion/unitless/0.8.0: + /@emotion/unitless@0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} dev: false - /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@17.0.2: + /@emotion/use-insertion-effect-with-fallbacks@1.0.0(react@17.0.2): resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} peerDependencies: react: '>=16.8.0' @@ -2975,21 +3259,21 @@ packages: react: 17.0.2 dev: false - /@emotion/utils/1.2.0: + /@emotion/utils@1.2.0: resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} dev: false - /@emotion/weak-memoize/0.3.0: + /@emotion/weak-memoize@0.3.0: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@envelop/core/3.0.4: + /@envelop/core@3.0.4: resolution: {integrity: sha512-AybIZxQsDlFQTWHy6YtX/MSQPVuw+eOFtTW90JsHn6EbmcQnD6N3edQfSiTGjggPRHLoC0+0cuYXp2Ly2r3vrQ==} dependencies: '@envelop/types': 3.0.1 tslib: 2.4.0 - /@envelop/dataloader/4.0.4_dataloader@2.1.0: + /@envelop/dataloader@4.0.4(dataloader@2.1.0): resolution: {integrity: sha512-e98vs9n9rEh/E0sFtUvMujHpA6ZzxLvhs/ei/KRiQWVtKDtKeWIiTKTpWXKevWWiugbB6YbSWvvEDcMLlCZrGQ==} peerDependencies: '@envelop/core': ^3.0.4 @@ -3002,7 +3286,7 @@ packages: tslib: 2.5.0 dev: false - /@envelop/execute-subscription-event/3.0.4_graphql@16.6.0: + /@envelop/execute-subscription-event@3.0.4(graphql@16.6.0): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 @@ -3015,28 +3299,28 @@ packages: tslib: 2.5.0 dev: false - /@envelop/types/3.0.1: + /@envelop/types@3.0.1: resolution: {integrity: sha512-Ok62K1K+rlS+wQw77k8Pis8+1/h7+/9Wk5Fgcc2U6M5haEWsLFAHcHsk8rYlnJdEUl2Y3yJcCSOYbt1dyTaU5w==} dependencies: tslib: 2.5.0 - /@esbuild/android-arm/0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} + /@esbuild/android-arm64@0.17.12: + resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm64/0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} + /@esbuild/android-arm@0.17.12: + resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64/0.17.12: + /@esbuild/android-x64@0.17.12: resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} engines: {node: '>=12'} cpu: [x64] @@ -3044,7 +3328,7 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-arm64/0.17.12: + /@esbuild/darwin-arm64@0.17.12: resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} engines: {node: '>=12'} cpu: [arm64] @@ -3052,7 +3336,7 @@ packages: requiresBuild: true optional: true - /@esbuild/darwin-x64/0.17.12: + /@esbuild/darwin-x64@0.17.12: resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} engines: {node: '>=12'} cpu: [x64] @@ -3060,7 +3344,7 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-arm64/0.17.12: + /@esbuild/freebsd-arm64@0.17.12: resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} engines: {node: '>=12'} cpu: [arm64] @@ -3068,7 +3352,7 @@ packages: requiresBuild: true optional: true - /@esbuild/freebsd-x64/0.17.12: + /@esbuild/freebsd-x64@0.17.12: resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} engines: {node: '>=12'} cpu: [x64] @@ -3076,23 +3360,23 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-arm/0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} + /@esbuild/linux-arm64@0.17.12: + resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm64/0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} + /@esbuild/linux-arm@0.17.12: + resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32/0.17.12: + /@esbuild/linux-ia32@0.17.12: resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} engines: {node: '>=12'} cpu: [ia32] @@ -3100,7 +3384,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64/0.17.12: + /@esbuild/linux-loong64@0.17.12: resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} engines: {node: '>=12'} cpu: [loong64] @@ -3108,7 +3392,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-mips64el/0.17.12: + /@esbuild/linux-mips64el@0.17.12: resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} engines: {node: '>=12'} cpu: [mips64el] @@ -3116,7 +3400,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-ppc64/0.17.12: + /@esbuild/linux-ppc64@0.17.12: resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} engines: {node: '>=12'} cpu: [ppc64] @@ -3124,7 +3408,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-riscv64/0.17.12: + /@esbuild/linux-riscv64@0.17.12: resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} engines: {node: '>=12'} cpu: [riscv64] @@ -3132,7 +3416,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-s390x/0.17.12: + /@esbuild/linux-s390x@0.17.12: resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} engines: {node: '>=12'} cpu: [s390x] @@ -3140,7 +3424,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-x64/0.17.12: + /@esbuild/linux-x64@0.17.12: resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} engines: {node: '>=12'} cpu: [x64] @@ -3148,7 +3432,7 @@ packages: requiresBuild: true optional: true - /@esbuild/netbsd-x64/0.17.12: + /@esbuild/netbsd-x64@0.17.12: resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} engines: {node: '>=12'} cpu: [x64] @@ -3156,7 +3440,7 @@ packages: requiresBuild: true optional: true - /@esbuild/openbsd-x64/0.17.12: + /@esbuild/openbsd-x64@0.17.12: resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} engines: {node: '>=12'} cpu: [x64] @@ -3164,7 +3448,7 @@ packages: requiresBuild: true optional: true - /@esbuild/sunos-x64/0.17.12: + /@esbuild/sunos-x64@0.17.12: resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} engines: {node: '>=12'} cpu: [x64] @@ -3172,7 +3456,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-arm64/0.17.12: + /@esbuild/win32-arm64@0.17.12: resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} engines: {node: '>=12'} cpu: [arm64] @@ -3180,7 +3464,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-ia32/0.17.12: + /@esbuild/win32-ia32@0.17.12: resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} engines: {node: '>=12'} cpu: [ia32] @@ -3188,7 +3472,7 @@ packages: requiresBuild: true optional: true - /@esbuild/win32-x64/0.17.12: + /@esbuild/win32-x64@0.17.12: resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} engines: {node: '>=12'} cpu: [x64] @@ -3196,96 +3480,82 @@ packages: requiresBuild: true optional: true - /@faker-js/faker/7.6.0: + /@faker-js/faker@7.6.0: resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} dev: false - /@fastify/ajv-compiler/3.4.0: + /@fastify/ajv-compiler@3.4.0: resolution: {integrity: sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w==} dependencies: ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1(ajv@8.11.0) fast-uri: 2.1.0 - /@fastify/cors/8.2.0: + /@fastify/cors@8.2.0: resolution: {integrity: sha512-qDgwpmg6C4D0D3nh8MTMuRXWyEwPnDZDBODaJv90FP2o9ukbahJByW4FtrM5Bpod5KbTf1oIExBmpItbUTQmHg==} dependencies: fastify-plugin: 4.3.0 mnemonist: 0.39.5 - /@fastify/deepmerge/1.1.0: + /@fastify/deepmerge@1.1.0: resolution: {integrity: sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==} - /@fastify/error/3.0.0: + /@fastify/error@3.0.0: resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} - /@fastify/fast-json-stringify-compiler/4.1.0: + /@fastify/fast-json-stringify-compiler@4.1.0: resolution: {integrity: sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==} dependencies: fast-json-stringify: 5.4.0 - /@fastify/nextjs/9.2.0_next@12.3.4: + /@fastify/nextjs@9.2.0(next@12.3.4): resolution: {integrity: sha512-javnZvkO0+HLfuHYUqNF/14mE0T01gy2gkBCiJ2IFDIvpVhFzp65ElF3c7meGAF7Osqz//6useY04+vTIxGU3A==} peerDependencies: next: 12.x.x || 13.x.x dependencies: '@fastify/under-pressure': 8.1.0 fastify-plugin: 4.3.0 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) dev: true - /@fastify/under-pressure/8.1.0: + /@fastify/under-pressure@8.1.0: resolution: {integrity: sha512-2Nm0UyVxTdssvNTbYVZFSH4C2LwgQcphOxgX6hIQce8jH1sm1gx/wusDBr6+0lyzwE06V537kwA7JeAvysK3xw==} dependencies: '@fastify/error': 3.0.0 fastify-plugin: 4.3.0 dev: true - /@graphql-codegen/core/2.6.8_graphql@16.6.0: + /@graphql-codegen/core@2.6.8(graphql@16.6.0): resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.1_graphql@16.6.0 - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/schema': 9.0.15(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.4.1 dev: false - /@graphql-codegen/core/3.1.0_graphql@16.6.0: + /@graphql-codegen/core@3.1.0(graphql@16.6.0): resolution: {integrity: sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/schema': 9.0.15(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: true - /@graphql-codegen/plugin-helpers/3.1.1_graphql@16.6.0: - resolution: {integrity: sha512-+V1WK4DUhejVSbkZrAsyv9gA4oQABVrtEUkT7vWq7gSf7Ln6OEM59lDUDsjp5wpLPTBIDJANbAe3qEd+iCB3Ow==} - peerDependencies: - graphql: '*' - dependencies: - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 - change-case-all: 1.0.15 - common-tags: 1.8.2 - graphql: 16.6.0 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 - dev: false - - /@graphql-codegen/plugin-helpers/3.1.2_graphql@16.6.0: + /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.6.0 @@ -3294,12 +3564,12 @@ packages: tslib: 2.4.1 dev: false - /@graphql-codegen/plugin-helpers/4.1.0_graphql@16.6.0: + /@graphql-codegen/plugin-helpers@4.1.0(graphql@16.6.0): resolution: {integrity: sha512-xvSHJb9OGb5CODIls0AI1rCenLz+FuiaNPCsfHMCNsLDjOZK2u0jAQ9zUBdc/Wb+21YXZujBCc0Vm1QX+Zz0nw==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.6.0 @@ -3308,35 +3578,35 @@ packages: tslib: 2.5.0 dev: true - /@graphql-codegen/schema-ast/2.6.1_graphql@16.6.0: + /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.4.1 dev: false - /@graphql-codegen/schema-ast/3.0.1_graphql@16.6.0: + /@graphql-codegen/schema-ast@3.0.1(graphql@16.6.0): resolution: {integrity: sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: true - /@graphql-codegen/typed-document-node/2.3.10_graphql@16.6.0: + /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.6.0 @@ -3346,14 +3616,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript-operations/2.5.10_graphql@16.6.0: + /@graphql-codegen/typescript-operations@2.5.10(graphql@16.6.0): resolution: {integrity: sha512-N5H7JhcMRzjM2KdvCitqkOd4hphzD9q3NVWGLvBe3Xgqx5Cs3Y4GUcCJbRolSXdQcYBVgZpLZrUe/qoxwYyfeg==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.8_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3362,15 +3632,15 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript-resolvers/2.7.10_graphql@16.6.0: + /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.6.0): resolution: {integrity: sha512-MCts4Vq4l8j5zxbfSjm3bkqYOsMWF9yzzNakYSTWsQZqxqAggsiMz18GTdhQvWCtFt6eKYadVrX3WDZBLuAHOA==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.8_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3379,30 +3649,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript/2.8.5_graphql@16.6.0: - resolution: {integrity: sha512-5w3zNlnNKM9tI5ZRbhESmsJ4G16rSiFmNQX6Ot56fmcYUC6bnAt5fqvSqs2C+8fVGIIjeWuwjQA5Xn1VkaLY8A==} - peerDependencies: - graphql: '*' - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/schema-ast': 2.6.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.5_graphql@16.6.0 - auto-bind: 4.0.0 - graphql: 16.6.0 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@graphql-codegen/typescript/2.8.8_graphql@16.6.0: + /@graphql-codegen/typescript@2.8.8(graphql@16.6.0): resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-codegen/schema-ast': 2.6.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 2.13.8_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/schema-ast': 2.6.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.4.1 @@ -3411,14 +3665,14 @@ packages: - supports-color dev: false - /@graphql-codegen/typescript/3.0.2_graphql@16.6.0: + /@graphql-codegen/typescript@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-qD6QkTB+2eJmIaZ6Tihv6HRz7daWWLz9uw5vwCmPeZN6XL2RINZGLkR7D8BQzLDlNGMrpQ4SeSM9o3ZALSCIuQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-codegen/schema-ast': 3.0.1_graphql@16.6.0 - '@graphql-codegen/visitor-plugin-common': 3.0.2_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-codegen/schema-ast': 3.0.1(graphql@16.6.0) + '@graphql-codegen/visitor-plugin-common': 3.0.2(graphql@16.6.0) auto-bind: 4.0.0 graphql: 16.6.0 tslib: 2.5.0 @@ -3427,20 +3681,20 @@ packages: - supports-color dev: true - /@graphql-codegen/visitor-plugin-common/2.13.5_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -3448,20 +3702,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common/2.13.8_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.6.0): resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -3469,20 +3723,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common/3.0.2_graphql@16.6.0: + /@graphql-codegen/visitor-plugin-common@3.0.2(graphql@16.6.0): resolution: {integrity: sha512-dKblRFrB0Fdl3+nPlzlLBka+TN/EGwr/q09mwry0H58z3j6gXkMbsdPr+dc8MhgOV7w/8egRvSPIvd7m6eFCnw==} peerDependencies: graphql: '*' dependencies: - '@graphql-codegen/plugin-helpers': 4.1.0_graphql@16.6.0 - '@graphql-tools/optimize': 1.3.1_graphql@16.6.0 - '@graphql-tools/relay-operation-optimizer': 6.5.8_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-codegen/plugin-helpers': 4.1.0(graphql@16.6.0) + '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 graphql: 16.6.0 - graphql-tag: 2.12.6_graphql@16.6.0 + graphql-tag: 2.12.6(graphql@16.6.0) parse-filepath: 1.0.2 tslib: 2.5.0 transitivePeerDependencies: @@ -3490,24 +3744,7 @@ packages: - supports-color dev: true - /@graphql-ez/client/0.6.1_b243oerbkaq6iicamxlfxsskte: - resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} - peerDependencies: - '@graphql-typed-document-node/core': '*' - '@types/node': '*' - graphql: '*' - peerDependenciesMeta: - '@graphql-typed-document-node/core': - optional: true - dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 - '@types/node': 18.15.5 - graphql: 16.6.0 - undici: 5.7.0 - dev: false - - /@graphql-ez/client/0.6.1_cqyb4buyc4habqgvcucexr22xm: + /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -3517,13 +3754,14 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) '@types/node': 18.15.5 graphql: 16.6.0 undici: 5.7.0 dev: false - /@graphql-ez/client/0.6.1_ecm5me3wxveow2jprdqx4kgwjq: + /@graphql-ez/client@0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -3533,33 +3771,14 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - '@graphql-typed-document-node/core': 3.2.0_graphql@17.0.0-alpha.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@17.0.0-alpha.2) '@types/node': 18.15.5 graphql: 17.0.0-alpha.2 undici: 5.7.0 dev: true - /@graphql-ez/fastify-testing/0.4.0_ea5semnvare4dczwxuvgvhhrim: - resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} - peerDependencies: - '@graphql-ez/fastify': 0.12.0 - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - dependencies: - '@graphql-ez/client': 0.6.1_ecm5me3wxveow2jprdqx4kgwjq - '@graphql-ez/fastify': 0.12.0_sjoruv57pci442joaaplrlyrfa - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - fastify: 4.11.0 - graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm - transitivePeerDependencies: - - '@graphql-typed-document-node/core' - - '@types/node' - dev: true - - /@graphql-ez/fastify-testing/0.4.0_gw55l7m33unpztkcavxnnvhm5q: + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -3567,18 +3786,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1_cqyb4buyc4habqgvcucexr22xm - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) fastify: 4.11.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' dev: false - /@graphql-ez/fastify-testing/0.4.0_zow4snlfvwzlxlnfckljwyv4aa: + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -3586,18 +3805,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1_b243oerbkaq6iicamxlfxsskte - '@graphql-ez/fastify': 0.12.0_orbaahc6eekuqylvdxzf34kuru - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/client': 0.6.1(@graphql-typed-document-node/core@3.2.0)(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql: 17.0.0-alpha.2 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' - dev: false + dev: true - /@graphql-ez/fastify/0.12.0_orbaahc6eekuqylvdxzf34kuru: + /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3612,14 +3831,14 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 fastify: 4.11.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) dev: false - /@graphql-ez/fastify/0.12.0_sjoruv57pci442joaaplrlyrfa: + /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3634,14 +3853,14 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) '@types/node': 18.15.5 fastify: 4.11.0 graphql: 17.0.0-alpha.2 - graphql-ez: 0.16.0_ddkhnomv6qakhz4wmciki3kakm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) dev: true - /@graphql-ez/nextjs/0.11.0_c5xlb76vribzm5vdd4qmd4rlja: + /@graphql-ez/nextjs@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0)(next@12.3.4): resolution: {integrity: sha512-oZNeAu8Kbi0QmGpyK17QIjS5Vxzn6smCjZ4qE5+OKmAeJ8iSlTJlZtUn+ALEG0DzEIFg2nPM5xTAMlKO47WdCg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3659,29 +3878,29 @@ packages: '@types/node': 18.15.5 cors: 2.8.5 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) dev: false - /@graphql-ez/plugin-altair/0.11.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} peerDependencies: '@types/node': '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/node': 18.15.5 altair-static-slim: 5.0.9 cross-undici-fetch: 0.4.14 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) mime-types: 2.1.35 transitivePeerDependencies: - encoding - graphql dev: false - /@graphql-ez/plugin-codegen/0.8.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-dv0nW2PAG4EqaFwLn0lmm45rPtQ7yqfP4ega3J3JPHM1qUCBNi/QBTk2X2V3k2bBLCyDzDtXiNNDKgu9ILKW0w==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3691,56 +3910,56 @@ packages: graphql: optional: true dependencies: - '@graphql-codegen/core': 2.6.8_graphql@16.6.0 - '@graphql-codegen/plugin-helpers': 3.1.1_graphql@16.6.0 - '@graphql-codegen/typed-document-node': 2.3.10_graphql@16.6.0 - '@graphql-codegen/typescript': 2.8.5_graphql@16.6.0 - '@graphql-codegen/typescript-operations': 2.5.10_graphql@16.6.0 - '@graphql-codegen/typescript-resolvers': 2.7.10_graphql@16.6.0 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-tools/graphql-file-loader': 7.5.13_graphql@16.6.0 - '@graphql-tools/load': 7.8.8_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-codegen/core': 2.6.8(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) + '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.6.0) + '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) + '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.6.0) + '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.6.0) + '@graphql-tools/load': 7.8.8(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) mkdirp: 1.0.4 - prettier: 2.8.1 + prettier: 2.8.6 transitivePeerDependencies: - '@types/node' - encoding - supports-color dev: false - /@graphql-ez/plugin-dataloader/0.8.0_4khj4v5e4vfkswp32g74ajok3i: + /@graphql-ez/plugin-dataloader@0.8.0(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@envelop/dataloader': 4.0.4_dataloader@2.1.0 - '@envelop/execute-subscription-event': 3.0.4_graphql@16.6.0 + '@envelop/dataloader': 4.0.4(dataloader@2.1.0) + '@envelop/execute-subscription-event': 3.0.4(graphql@16.6.0) dataloader: 2.1.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@envelop/core' - graphql dev: false - /@graphql-ez/plugin-graphiql/0.12.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-graphiql@0.12.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-d2MPAi6MXaDzKPr/Ai2+GNn/6mQKoNfbeQLudIzNOr1/zc00tO5HAgDaO8WwhHTDfCX+GwFw2Bgr4ZOU3lv+Uw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@pablosz/graphql-helix-graphiql': 4.2.2_cqyb4buyc4habqgvcucexr22xm - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@pablosz/graphql-helix-graphiql': 4.2.2(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' - graphql dev: false - /@graphql-ez/plugin-schema/0.9.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3750,16 +3969,16 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-tools/schema': 9.0.15(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-upload/0.8.0_kjoqpzaqt57iapo3yu2w2aeoce: + /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@16.0.2)(graphql@16.6.0): resolution: {integrity: sha512-R/cE1vT5kZxWe4EpuwV15znWU+GSu4KsUIgdCUYcE897XO1O9+Iadn4K/RyPuRY3tv//6+7Bj5gKruJaFgmsbg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3773,16 +3992,16 @@ packages: graphql-upload: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) '@types/graphql-upload': 16.0.0 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-upload: 16.0.2_graphql@16.6.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-upload: 16.0.2(graphql@16.6.0) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-websockets/0.11.0_ybhfgsau5tg5dsvtpo567urcge: + /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): resolution: {integrity: sha512-jtvw5o3rw3Y6JNFfl+CoybQWdzqy0ml+eHNelHEd1Jd1b/Jbsc9RsIyOHE6uRqOxQhsBi6/1HL+nJCUuW+/n9A==} engines: {node: '>=14.13.1'} peerDependencies: @@ -3792,19 +4011,19 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@types/ws': 8.5.3 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@types/ws': 8.5.4 graphql: 16.6.0 - graphql-ez: 0.16.0_cqyb4buyc4habqgvcucexr22xm - graphql-ws: 5.11.2_graphql@16.6.0 - subscriptions-transport-ws-envelop: 2.0.2_graphql@16.6.0+ws@8.11.0 - ws: 8.11.0 + graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ws: 5.11.2(graphql@16.6.0) + subscriptions-transport-ws-envelop: 2.0.2(graphql@16.6.0)(ws@8.13.0) + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - '@types/node' - bufferutil - utf-8-validate - /@graphql-ez/utils/0.2.0_cqyb4buyc4habqgvcucexr22xm: + /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' @@ -3813,7 +4032,7 @@ packages: '@types/node': 18.15.5 graphql: 16.6.0 - /@graphql-ez/utils/0.2.0_ddkhnomv6qakhz4wmciki3kakm: + /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' @@ -3823,103 +4042,102 @@ packages: graphql: 17.0.0-alpha.2 dev: true - /@graphql-tools/batch-execute/8.5.16_graphql@16.6.0: + /@graphql-tools/batch-execute@8.5.16(graphql@16.6.0): resolution: {integrity: sha512-x/gXA6R1Q/qigT5LDesZYemErzFYvBBuTaVgiIJuE2wG6oMV1cln0O35Z7WVQw6H3I4vF7cCG7c7wKSoC+3z4Q==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) dataloader: 2.1.0 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/delegate/9.0.25_graphql@16.6.0: + /@graphql-tools/delegate@9.0.25(graphql@16.6.0): resolution: {integrity: sha512-M7DMrPx8uEjXUshkki0ufcL//9Dj12eR3vykvteFB6odYL9cX5dhZC9l1D2IdQRuHzLMskhkhRtfnXRoa82KTA==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/batch-execute': 8.5.16_graphql@16.6.0 - '@graphql-tools/executor': 0.0.13_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/batch-execute': 8.5.16(graphql@16.6.0) + '@graphql-tools/executor': 0.0.13(graphql@16.6.0) + '@graphql-tools/schema': 9.0.15(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) dataloader: 2.1.0 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/executor/0.0.13_graphql@16.6.0: + /@graphql-tools/executor@0.0.13(graphql@16.6.0): resolution: {integrity: sha512-bZ7QdUV5URLCjD/WuDkvyROYoDVoueTN5W1PatkcN949lwIwEKXUW6y3gRSpiZjXw8IH4/NmN3xPk10OT1emRw==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 - '@graphql-typed-document-node/core': 3.1.1_graphql@16.6.0 + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) + '@graphql-typed-document-node/core': 3.1.1(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-tools/graphql-file-loader/7.5.13_graphql@16.6.0: + /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/import': 6.7.14_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/import': 6.7.14(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) globby: 11.1.0 graphql: 16.6.0 tslib: 2.5.0 unixify: 1.0.0 dev: false - /@graphql-tools/import/6.7.14_graphql@16.6.0: + /@graphql-tools/import@6.7.14(graphql@16.6.0): resolution: {integrity: sha512-lRX/MHM0Km497kg4VXMvtV1DeG/AfPJFO2ovaL0kDujWEdyCsWxsB4whY7nPeiNaPA/nT3mQ8MU7yFzVjogF/Q==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 resolve-from: 5.0.0 tslib: 2.5.0 dev: false - /@graphql-tools/load/7.8.8_graphql@16.6.0: + /@graphql-tools/load@7.8.8(graphql@16.6.0): resolution: {integrity: sha512-gMuQdO2jXmI0BNUc1MafxRQTWVMUtuH500pZAQtOdDdNJppV7lJdY6mMhITQ2qnhYDuMrcZPHhIkcftyQfkgUg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/schema': 9.0.12_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/schema': 9.0.12(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 p-limit: 3.1.0 tslib: 2.5.0 dev: false - /@graphql-tools/merge/8.3.14_graphql@16.6.0: + /@graphql-tools/merge@8.3.14(graphql@16.6.0): resolution: {integrity: sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 dev: false - /@graphql-tools/merge/8.3.17_graphql@16.6.0: + /@graphql-tools/merge@8.3.17(graphql@16.6.0): resolution: {integrity: sha512-CLzz49lc6BavPhH9gPRm0sJeNA7kC/tF/jLUTQsyef6xj82Jw3rqIJ9PE+bk1cqPCOG01WLOfquBu445OMDO2g==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - dev: true - /@graphql-tools/optimize/1.3.1_graphql@16.6.0: + /@graphql-tools/optimize@1.3.1(graphql@16.6.0): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} peerDependencies: graphql: '*' @@ -3927,44 +4145,43 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/relay-operation-optimizer/6.5.8_graphql@16.6.0: + /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} peerDependencies: graphql: '*' dependencies: - '@ardatan/relay-compiler': 12.0.0_graphql@16.6.0 - '@graphql-tools/utils': 8.13.1_graphql@16.6.0 + '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) + '@graphql-tools/utils': 8.13.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 transitivePeerDependencies: - encoding - supports-color - /@graphql-tools/schema/9.0.12_graphql@16.6.0: + /@graphql-tools/schema@9.0.12(graphql@16.6.0): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/merge': 8.3.14_graphql@16.6.0 - '@graphql-tools/utils': 9.1.3_graphql@16.6.0 + '@graphql-tools/merge': 8.3.14(graphql@16.6.0) + '@graphql-tools/utils': 9.1.3(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.11 dev: false - /@graphql-tools/schema/9.0.15_graphql@16.6.0: + /@graphql-tools/schema@9.0.15(graphql@16.6.0): resolution: {integrity: sha512-p2DbpkOBcsi+yCEjwoS+r4pJ5z+3JjlJdhbPkCwC4q8lGf5r93dVYrExOrqGKTU5kxLXI/mxabSxcunjNIsDIg==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/merge': 8.3.17_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/merge': 8.3.17(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 - dev: true - /@graphql-tools/utils/8.13.1_graphql@16.6.0: + /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: graphql: '*' @@ -3972,7 +4189,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/utils/9.1.3_graphql@16.6.0: + /@graphql-tools/utils@9.1.3(graphql@16.6.0): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} peerDependencies: graphql: '*' @@ -3981,29 +4198,29 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/utils/9.2.0_graphql@16.6.0: + /@graphql-tools/utils@9.2.0(graphql@16.6.0): resolution: {integrity: sha512-s3lEG1iYkyYEnKCWrIFECX3XH2wmZvbg6Ir3udCvIDynq+ydaO7JQXobclpPtwSJtjlS353haF//6V7mnBQ4bg==} peerDependencies: graphql: '*' dependencies: - '@graphql-typed-document-node/core': 3.2.0_graphql@16.6.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 - /@graphql-tools/wrap/9.3.4_graphql@16.6.0: + /@graphql-tools/wrap@9.3.4(graphql@16.6.0): resolution: {integrity: sha512-MJY6lZqi+j96izjOYOLk5fys34oiLt7U34SQ4Wd6V/sy1utVMbh2H7XiZAuDJ38JIKmr72qN7kLgNcnNOxXjHQ==} peerDependencies: graphql: '*' dependencies: - '@graphql-tools/delegate': 9.0.25_graphql@16.6.0 - '@graphql-tools/schema': 9.0.15_graphql@16.6.0 - '@graphql-tools/utils': 9.2.0_graphql@16.6.0 + '@graphql-tools/delegate': 9.0.25(graphql@16.6.0) + '@graphql-tools/schema': 9.0.15(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.5.0 value-or-promise: 1.0.12 dev: true - /@graphql-typed-document-node/core/3.1.1_graphql@16.6.0: + /@graphql-typed-document-node/core@3.1.1(graphql@16.6.0): resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} peerDependencies: graphql: '*' @@ -4011,14 +4228,14 @@ packages: graphql: 16.6.0 dev: true - /@graphql-typed-document-node/core/3.2.0_graphql@16.6.0: + /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 - /@graphql-typed-document-node/core/3.2.0_graphql@17.0.0-alpha.2: + /@graphql-typed-document-node/core@3.2.0(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: '*' @@ -4026,7 +4243,7 @@ packages: graphql: 17.0.0-alpha.2 dev: true - /@guild-docs/client/2.1.1_i7yamdcqgfam5kgmi3p25dpzk4: + /@guild-docs/client@2.1.1(@chakra-ui/icons@1.1.7)(@chakra-ui/react@1.8.9)(@chakra-ui/utils@1.10.4)(@emotion/react@11.10.6)(@mdx-js/react@2.3.0)(@theguild/components@1.12.0)(@types/react@17.0.53)(framer-motion@6.5.1)(next-i18next@13.2.2)(next-seo@5.15.0)(next@12.3.4)(react-dom@17.0.2)(react-icons@4.8.0)(react-use@17.4.0)(react@17.0.2)(shiki@0.12.1): resolution: {integrity: sha512-ikdcOnjeLvwih+V+WvDCKwP6u8752mVtzK1zjm01H7O+EosmiHHgilHPER7lvvwf7DJ/tBjZJJfqTtvSSrw1zQ==} peerDependencies: '@chakra-ui/icons': '*' @@ -4049,32 +4266,32 @@ packages: react-dom: optional: true dependencies: - '@chakra-ui/icons': 1.1.7_react@17.0.2 - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/icons': 1.1.7(react@17.0.2) + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@chakra-ui/utils': 1.10.4 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@guild-docs/mdx-remote': 2.0.2_utcvqzmoogmguqse2qaqwut5au - '@guild-docs/types': 2.0.0_plm56vbnmjadqejeinvs2v2cgm - '@mdx-js/react': 2.3.0_react@17.0.2 - '@theguild/components': 1.12.0_zsjcj4gvi24ks76nprapl4hsmq - framer-motion: 6.5.1_sfoxds7t5ydpegc3knd667wn6m + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.12.1) + '@guild-docs/types': 2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) + '@mdx-js/react': 2.3.0(react@17.0.2) + '@theguild/components': 1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1) + framer-motion: 6.5.1(react-dom@17.0.2)(react@17.0.2) immer: 9.0.12 - mdx-mermaid: 1.3.2_mermaid@9.1.7+react@17.0.2 + mdx-mermaid: 1.3.2(mermaid@9.1.7)(react@17.0.2) mermaid: 9.1.7 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy - next-seo: 5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) + next-seo: 5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2) nprogress: 0.2.0 react: 17.0.2 - react-children-utilities: 2.7.0_react@17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-icons: 4.8.0_react@17.0.2 - react-intersection-observer: 8.33.1_react@17.0.2 - react-sticky-box: 1.0.2_react@17.0.2 - react-use: 17.4.0_sfoxds7t5ydpegc3knd667wn6m + react-children-utilities: 2.7.0(react@17.0.2) + react-dom: 17.0.2(react@17.0.2) + react-icons: 4.8.0(react@17.0.2) + react-intersection-observer: 8.33.1(react@17.0.2) + react-sticky-box: 1.0.2(react@17.0.2) + react-use: 17.4.0(react-dom@17.0.2)(react@17.0.2) remove-markdown: 0.3.0 - use-immer: 0.6.0_immer@9.0.12+react@17.0.2 - zustand: 3.7.2_react@17.0.2 + use-immer: 0.6.0(immer@9.0.12)(react@17.0.2) + zustand: 3.7.2(react@17.0.2) transitivePeerDependencies: - '@types/react' - shiki @@ -4082,17 +4299,17 @@ packages: - unist-util-visit dev: false - /@guild-docs/mdx-remote/2.0.2_utcvqzmoogmguqse2qaqwut5au: + /@guild-docs/mdx-remote@2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.12.1): resolution: {integrity: sha512-g35B/Lo7s4l3HLcB9Z7jvTYrhMjCLMbfeS4i3rEhzhP54S0lvQ6gFTbVY25nDGZjZGMgMpkykY4Rk/p73UF2qQ==} peerDependencies: '@mdx-js/react': ^2.1.1 react: '*' dependencies: '@babel/code-frame': 7.16.7 - '@guild-docs/types': 3.0.0_plm56vbnmjadqejeinvs2v2cgm + '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) '@mdx-js/mdx': 2.1.1 - '@mdx-js/react': 2.3.0_react@17.0.2 - '@stefanprobst/rehype-shiki': 2.2.0_shiki@0.12.1 + '@mdx-js/react': 2.3.0(react@17.0.2) + '@stefanprobst/rehype-shiki': 2.2.0(shiki@0.12.1) react: 17.0.2 remark-gfm: 3.0.1 unified: 10.1.2 @@ -4107,7 +4324,7 @@ packages: - supports-color dev: false - /@guild-docs/server/4.0.0_vunfziydkmle7wbsgwsinw3tpa: + /@guild-docs/server@4.0.0(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(next@12.3.4)(react-dom@17.0.2)(react@17.0.2)(shiki@0.12.1): resolution: {integrity: sha512-LlDr4U8LMwoE3LEmbMgUXlmFBUdHVKzGIOofKG1SR6VNwZEQ8/qAR5eEIdl3xA5VyOCs4PJ0lDJg5pzoECxq8w==} peerDependencies: next: '>=12.1.5' @@ -4116,16 +4333,16 @@ packages: react-dom: '*' shiki: '*' dependencies: - '@guild-docs/mdx-remote': 2.0.2_utcvqzmoogmguqse2qaqwut5au - '@guild-docs/types': 3.0.0_plm56vbnmjadqejeinvs2v2cgm - '@stefanprobst/remark-shiki': 2.1.0_shiki@0.12.1 + '@guild-docs/mdx-remote': 2.0.2(@chakra-ui/react@1.8.9)(@mdx-js/react@2.3.0)(@types/react@17.0.53)(next-i18next@13.2.2)(react@17.0.2)(shiki@0.12.1) + '@guild-docs/types': 3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2) + '@stefanprobst/remark-shiki': 2.1.0(shiki@0.12.1) github-slugger: 1.4.0 globby: 13.1.1 gray-matter: 4.0.3 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) rehype-slug: 5.0.1 remark-emoji: 3.0.2 shiki: 0.12.1 @@ -4138,49 +4355,49 @@ packages: - supports-color dev: false - /@guild-docs/types/2.0.0_plm56vbnmjadqejeinvs2v2cgm: + /@guild-docs/types@2.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): resolution: {integrity: sha512-BeObMB7WokzcFO5quSWOOouJL96zneEzE0VS6rkZmg/bG/ukX0S6ODy4/UhxsWphxPYqQ68VAdM57WqTkdlamg==} peerDependencies: '@chakra-ui/react': '*' '@types/react': '*' next-i18next: '*' dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@mdx-js/mdx': 2.1.5 '@types/react': 17.0.53 - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false - /@guild-docs/types/3.0.0_plm56vbnmjadqejeinvs2v2cgm: + /@guild-docs/types@3.0.0(@chakra-ui/react@1.8.9)(@types/react@17.0.53)(next-i18next@13.2.2): resolution: {integrity: sha512-Vd8lgw+p7boag31I2hqpiCgp3aKsLgPNs2WNWx3MZA2bWJ7+qKKDvPP3KiioMGK5nadEq9SsCbG72ogBZbwpag==} peerDependencies: '@chakra-ui/react': '*' '@types/react': '*' next-i18next: '*' dependencies: - '@chakra-ui/react': 1.8.9_pizuovw4rxklnfeqfejc6mp34q + '@chakra-ui/react': 1.8.9(@emotion/react@11.10.6)(@emotion/styled@11.10.6)(@types/react@17.0.53)(framer-motion@6.5.1)(react-dom@17.0.2)(react@17.0.2) '@mdx-js/mdx': 2.1.5 '@types/react': 17.0.53 - next-i18next: 13.2.2_2ynmrf3odwjl6m6qwej4nuthfy + next-i18next: 13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2) unified: 10.1.2 transitivePeerDependencies: - supports-color dev: false - /@hapi/hoek/9.3.0: + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} dev: true - /@hapi/topo/5.1.0: + /@hapi/topo@5.1.0: resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -4190,23 +4407,11 @@ packages: js-yaml: 3.14.1 resolve-from: 5.0.0 - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - /@jest/console/29.4.2: - resolution: {integrity: sha512-0I/rEJwMpV9iwi9cDEnT71a5nNGK9lj8Z4+1pRAU2x/thVXCDnaTGrvxyK+cAqZTFVFCiR+hfVrP4l2m+dCmQg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: false - - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4217,48 +4422,7 @@ packages: jest-util: 29.5.0 slash: 3.0.0 - /@jest/core/29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.7.1 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.15.5 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - - /@jest/core/29.5.0_ts-node@10.9.1: + /@jest/core@29.5.0(ts-node@10.9.1): resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4279,7 +4443,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.5.0 - jest-config: 29.5.0_757mb262zsxkcnuknwfdsckmku + jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -4298,9 +4462,8 @@ packages: transitivePeerDependencies: - supports-color - ts-node - dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4309,13 +4472,13 @@ packages: '@types/node': 18.15.5 jest-mock: 29.5.0 - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4324,7 +4487,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4335,7 +4498,7 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4346,7 +4509,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -4382,31 +4545,21 @@ packages: transitivePeerDependencies: - supports-color - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.21 - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.17 callsites: 3.1.0 - graceful-fs: 4.2.10 - - /@jest/test-result/29.4.0: - resolution: {integrity: sha512-EtRklzjpddZU/aBVxJqqejfzfOcnehmjNXufs6u6qwd05kkhXpAPhZdt8bLlQd7cA2nD+JqZQ5Dx9NX5Jh6mjA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.4.2 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: false + graceful-fs: 4.2.10 - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4415,7 +4568,7 @@ packages: '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4424,7 +4577,7 @@ packages: jest-haste-map: 29.5.0 slash: 3.0.0 - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4446,7 +4599,7 @@ packages: transitivePeerDependencies: - supports-color - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4457,14 +4610,14 @@ packages: '@types/yargs': 17.0.13 chalk: 4.1.2 - /@jridgewell/gen-mapping/0.1.1: + /@jridgewell/gen-mapping@0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -4472,31 +4625,30 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping/0.3.17: + /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - /@jridgewell/trace-mapping/0.3.9: + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@manypkg/find-root/1.1.0: + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.20.13 @@ -4505,10 +4657,10 @@ packages: fs-extra: 8.1.0 dev: true - /@manypkg/get-packages/1.1.3: + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.13 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -4516,7 +4668,7 @@ packages: read-yaml-file: 1.1.0 dev: true - /@mdx-js/mdx/2.1.1: + /@mdx-js/mdx@2.1.1: resolution: {integrity: sha512-SXC18cChut3F2zkVXwsb2no0fzTQ1z6swjK13XwFbF5QU/SFQM0orAItPypSdL3GvqYyzVJtz8UofzJhPEQtMw==} dependencies: '@types/estree-jsx': 0.0.1 @@ -4535,12 +4687,12 @@ packages: unist-util-position-from-estree: 1.1.1 unist-util-stringify-position: 3.0.2 unist-util-visit: 4.1.1 - vfile: 5.3.2 + vfile: 5.3.5 transitivePeerDependencies: - supports-color dev: false - /@mdx-js/mdx/2.1.5: + /@mdx-js/mdx@2.1.5: resolution: {integrity: sha512-zEG0lt+Bl/r5U6e0TOS7qDbsXICtemfAPquxWFsMbdzrvlWaqMGemLl+sjVpqlyaaiCiGVQBSGdCk0t1qXjkQg==} dependencies: '@types/estree-jsx': 1.0.0 @@ -4564,7 +4716,7 @@ packages: - supports-color dev: false - /@mdx-js/react/2.3.0_react@17.0.2: + /@mdx-js/react@2.3.0(react@17.0.2): resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: react: '>=16' @@ -4574,7 +4726,7 @@ packages: react: 17.0.2 dev: false - /@motionone/animation/10.14.0: + /@motionone/animation@10.14.0: resolution: {integrity: sha512-h+1sdyBP8vbxEBW5gPFDnj+m2DCqdlAuf2g6Iafb1lcMnqjsRXWlPw1AXgvUMXmreyhqmPbJqoNfIKdytampRQ==} dependencies: '@motionone/easing': 10.14.0 @@ -4583,7 +4735,7 @@ packages: tslib: 2.5.0 dev: false - /@motionone/dom/10.12.0: + /@motionone/dom@10.12.0: resolution: {integrity: sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==} dependencies: '@motionone/animation': 10.14.0 @@ -4594,14 +4746,14 @@ packages: tslib: 2.5.0 dev: false - /@motionone/easing/10.14.0: + /@motionone/easing@10.14.0: resolution: {integrity: sha512-2vUBdH9uWTlRbuErhcsMmt1jvMTTqvGmn9fHq8FleFDXBlHFs5jZzHJT9iw+4kR1h6a4SZQuCf72b9ji92qNYA==} dependencies: '@motionone/utils': 10.14.0 tslib: 2.5.0 dev: false - /@motionone/generators/10.14.0: + /@motionone/generators@10.14.0: resolution: {integrity: sha512-6kRHezoFfIjFN7pPpaxmkdZXD36tQNcyJe3nwVqwJ+ZfC0e3rFmszR8kp9DEVFs9QL/akWjuGPSLBI1tvz+Vjg==} dependencies: '@motionone/types': 10.14.0 @@ -4609,11 +4761,11 @@ packages: tslib: 2.5.0 dev: false - /@motionone/types/10.14.0: + /@motionone/types@10.14.0: resolution: {integrity: sha512-3bNWyYBHtVd27KncnJLhksMFQ5o2MSdk1cA/IZqsHtA9DnRM1SYgN01CTcJ8Iw8pCXF5Ocp34tyAjY7WRpOJJQ==} dev: false - /@motionone/utils/10.14.0: + /@motionone/utils@10.14.0: resolution: {integrity: sha512-sLWBLPzRqkxmOTRzSaD3LFQXCPHvDzyHJ1a3VP9PRzBxyVd2pv51/gMOsdAcxQ9n+MIeGJnxzXBYplUHKj4jkw==} dependencies: '@motionone/types': 10.14.0 @@ -4621,19 +4773,19 @@ packages: tslib: 2.5.0 dev: false - /@next/bundle-analyzer/12.3.4: + /@next/bundle-analyzer@12.3.4(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-eKjgRICzbLTmod0UnJcArFVs5uEAiuZwB6NCf84m+btW7jdylUVoOYf1wi5tA14xk5L9Lho7Prm6/XJ8gxYzfQ==} dependencies: - webpack-bundle-analyzer: 4.3.0 + webpack-bundle-analyzer: 4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@next/env/12.3.4: + /@next/env@12.3.4: resolution: {integrity: sha512-H/69Lc5Q02dq3o+dxxy5O/oNxFsZpdL6WREtOOtOM1B/weonIwDXkekr1KV5DPVPr12IHFPrMrcJQ6bgPMfn7A==} - /@next/swc-android-arm-eabi/12.3.4: + /@next/swc-android-arm-eabi@12.3.4: resolution: {integrity: sha512-cM42Cw6V4Bz/2+j/xIzO8nK/Q3Ly+VSlZJTa1vHzsocJRYz8KT6MrreXaci2++SIZCF1rVRCDgAg5PpqRibdIA==} engines: {node: '>= 10'} cpu: [arm] @@ -4641,7 +4793,7 @@ packages: requiresBuild: true optional: true - /@next/swc-android-arm64/12.3.4: + /@next/swc-android-arm64@12.3.4: resolution: {integrity: sha512-5jf0dTBjL+rabWjGj3eghpLUxCukRhBcEJgwLedewEA/LJk2HyqCvGIwj5rH+iwmq1llCWbOky2dO3pVljrapg==} engines: {node: '>= 10'} cpu: [arm64] @@ -4649,7 +4801,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-arm64/12.3.4: + /@next/swc-darwin-arm64@12.3.4: resolution: {integrity: sha512-DqsSTd3FRjQUR6ao0E1e2OlOcrF5br+uegcEGPVonKYJpcr0MJrtYmPxd4v5T6UCJZ+XzydF7eQo5wdGvSZAyA==} engines: {node: '>= 10'} cpu: [arm64] @@ -4657,7 +4809,7 @@ packages: requiresBuild: true optional: true - /@next/swc-darwin-x64/12.3.4: + /@next/swc-darwin-x64@12.3.4: resolution: {integrity: sha512-PPF7tbWD4k0dJ2EcUSnOsaOJ5rhT3rlEt/3LhZUGiYNL8KvoqczFrETlUx0cUYaXe11dRA3F80Hpt727QIwByQ==} engines: {node: '>= 10'} cpu: [x64] @@ -4665,7 +4817,7 @@ packages: requiresBuild: true optional: true - /@next/swc-freebsd-x64/12.3.4: + /@next/swc-freebsd-x64@12.3.4: resolution: {integrity: sha512-KM9JXRXi/U2PUM928z7l4tnfQ9u8bTco/jb939pdFUHqc28V43Ohd31MmZD1QzEK4aFlMRaIBQOWQZh4D/E5lQ==} engines: {node: '>= 10'} cpu: [x64] @@ -4673,7 +4825,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm-gnueabihf/12.3.4: + /@next/swc-linux-arm-gnueabihf@12.3.4: resolution: {integrity: sha512-3zqD3pO+z5CZyxtKDTnOJ2XgFFRUBciOox6EWkoZvJfc9zcidNAQxuwonUeNts6Xbm8Wtm5YGIRC0x+12YH7kw==} engines: {node: '>= 10'} cpu: [arm] @@ -4681,7 +4833,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-gnu/12.3.4: + /@next/swc-linux-arm64-gnu@12.3.4: resolution: {integrity: sha512-kiX0vgJGMZVv+oo1QuObaYulXNvdH/IINmvdZnVzMO/jic/B8EEIGlZ8Bgvw8LCjH3zNVPO3mGrdMvnEEPEhKA==} engines: {node: '>= 10'} cpu: [arm64] @@ -4689,7 +4841,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-arm64-musl/12.3.4: + /@next/swc-linux-arm64-musl@12.3.4: resolution: {integrity: sha512-EETZPa1juczrKLWk5okoW2hv7D7WvonU+Cf2CgsSoxgsYbUCZ1voOpL4JZTOb6IbKMDo6ja+SbY0vzXZBUMvkQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -4697,7 +4849,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-gnu/12.3.4: + /@next/swc-linux-x64-gnu@12.3.4: resolution: {integrity: sha512-4csPbRbfZbuWOk3ATyWcvVFdD9/Rsdq5YHKvRuEni68OCLkfy4f+4I9OBpyK1SKJ00Cih16NJbHE+k+ljPPpag==} engines: {node: '>= 10'} cpu: [x64] @@ -4705,7 +4857,7 @@ packages: requiresBuild: true optional: true - /@next/swc-linux-x64-musl/12.3.4: + /@next/swc-linux-x64-musl@12.3.4: resolution: {integrity: sha512-YeBmI+63Ro75SUiL/QXEVXQ19T++58aI/IINOyhpsRL1LKdyfK/35iilraZEFz9bLQrwy1LYAR5lK200A9Gjbg==} engines: {node: '>= 10'} cpu: [x64] @@ -4713,7 +4865,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-arm64-msvc/12.3.4: + /@next/swc-win32-arm64-msvc@12.3.4: resolution: {integrity: sha512-Sd0qFUJv8Tj0PukAYbCCDbmXcMkbIuhnTeHm9m4ZGjCf6kt7E/RMs55Pd3R5ePjOkN7dJEuxYBehawTR/aPDSQ==} engines: {node: '>= 10'} cpu: [arm64] @@ -4721,7 +4873,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc/12.3.4: + /@next/swc-win32-ia32-msvc@12.3.4: resolution: {integrity: sha512-rt/vv/vg/ZGGkrkKcuJ0LyliRdbskQU+91bje+PgoYmxTZf/tYs6IfbmgudBJk6gH3QnjHWbkphDdRQrseRefQ==} engines: {node: '>= 10'} cpu: [ia32] @@ -4729,7 +4881,7 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc/12.3.4: + /@next/swc-win32-x64-msvc@12.3.4: resolution: {integrity: sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==} engines: {node: '>= 10'} cpu: [x64] @@ -4737,41 +4889,41 @@ packages: requiresBuild: true optional: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pablosz/graphql-helix-graphiql/4.2.2_cqyb4buyc4habqgvcucexr22xm: + /@pablosz/graphql-helix-graphiql@4.2.2(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-KvSzKAM7amhSsr1D2ZeAynSXzkZfCWOrRPdawcCowKR2t7o8BkUQc91o0wcVgnqzf5YJLp1xYKhxUvzYsHxy1g==} dependencies: - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) transitivePeerDependencies: - '@types/node' - graphql dev: false - /@pablosz/graphql-helix/2.0.3_graphql@16.6.0: + /@pablosz/graphql-helix@2.0.3(graphql@16.6.0): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' dependencies: graphql: 16.6.0 - /@pablosz/graphql-helix/2.0.3_graphql@17.0.0-alpha.2: + /@pablosz/graphql-helix@2.0.3(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' @@ -4779,39 +4931,39 @@ packages: graphql: 17.0.0-alpha.2 dev: true - /@pnpm/types/8.8.0: - resolution: {integrity: sha512-IKUpbWRHDB9C4Yy4UeBpeYhU7eIsLj50jF5HNRUkbJnM0CWHPLxX9TGCI+ov8pgGeTP1t1g0GPDHD6en9D8LxQ==} - engines: {node: '>=14.6'} + /@pnpm/types@9.4.2: + resolution: {integrity: sha512-g1hcF8Nv4gd76POilz9gD4LITAPXOe5nX4ijgr8ixCbLQZfcpYiMfJ+C1RlMNRUDo8vhlNB4O3bUlxmT6EAQXA==} + engines: {node: '>=16.14'} dev: true - /@polka/url/1.0.0-next.21: + /@polka/url@1.0.0-next.21: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true - /@popperjs/core/2.11.6: + /@popperjs/core@2.11.6: resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@radix-ui/primitive/0.1.0: + /@radix-ui/primitive@0.1.0: resolution: {integrity: sha512-tqxZKybwN5Fa3VzZry4G6mXAAb9aAqKmPtnVbZpL0vsBwvOHTBwsjHVPXylocYLwEtBY9SCe665bYnNB515uoA==} dependencies: '@babel/runtime': 7.20.13 dev: false - /@radix-ui/react-collection/0.1.4_react@17.0.2: + /@radix-ui/react-collection@0.1.4(react@17.0.2): resolution: {integrity: sha512-3muGI15IdgaDFjOcO7xX8a35HQRBRF6LH9pS6UCeZeRmbslkVeHyJRQr2rzICBUoX7zgIA0kXyMDbpQnJGyJTA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-context': 0.1.1_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-slot': 0.1.2_react@17.0.2 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-context': 0.1.1(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-slot': 0.1.2(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-compose-refs/0.1.0_react@17.0.2: + /@radix-ui/react-compose-refs@0.1.0(react@17.0.2): resolution: {integrity: sha512-eyclbh+b77k+69Dk72q3694OHrn9B3QsoIRx7ywX341U9RK1ThgQjMFZoPtmZNQTksXHLNEiefR8hGVeFyInGg==} peerDependencies: react: ^16.8 || ^17.0 @@ -4820,7 +4972,7 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-context/0.1.1_react@17.0.2: + /@radix-ui/react-context@0.1.1(react@17.0.2): resolution: {integrity: sha512-PkyVX1JsLBioeu0jB9WvRpDBBLtLZohVDT3BB5CTSJqActma8S8030P57mWZb4baZifMvN7KKWPAA40UmWKkQg==} peerDependencies: react: ^16.8 || ^17.0 @@ -4829,32 +4981,32 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-dismissable-layer/0.1.5_react@17.0.2: + /@radix-ui/react-dismissable-layer@0.1.5(react@17.0.2): resolution: {integrity: sha512-J+fYWijkX4M4QKwf9dtu1oC0U6e6CEl8WhBp3Ad23yz2Hia0XCo6Pk/mp5CAFy4QBtQedTSkhW05AdtSOEoajQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-use-body-pointer-events': 0.1.1_react@17.0.2 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 - '@radix-ui/react-use-escape-keydown': 0.1.0_react@17.0.2 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-use-body-pointer-events': 0.1.1(react@17.0.2) + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) + '@radix-ui/react-use-escape-keydown': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-id/0.1.5_react@17.0.2: + /@radix-ui/react-id@0.1.5(react@17.0.2): resolution: {integrity: sha512-IPc4H/63bes0IZ1GJJozSEkSWcDyhNGtKFWUpJ+XtaLyQ1X3x7Mf6fWwWhDcpqlYEP+5WtAvfqcyEsyjP+ZhBQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-navigation-menu/0.1.2_sfoxds7t5ydpegc3knd667wn6m: + /@radix-ui/react-navigation-menu@0.1.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-b9+2ambunxMNw4pgOt9xqzVN/A5NPajpiKvR45zI/BS/uOWfV1A3N5Kn+OIbRMln9GyBnuoxXV0tUBLC2rAzpw==} peerDependencies: react: ^16.8 || ^17.0 @@ -4862,65 +5014,65 @@ packages: dependencies: '@babel/runtime': 7.20.13 '@radix-ui/primitive': 0.1.0 - '@radix-ui/react-collection': 0.1.4_react@17.0.2 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-context': 0.1.1_react@17.0.2 - '@radix-ui/react-dismissable-layer': 0.1.5_react@17.0.2 - '@radix-ui/react-id': 0.1.5_react@17.0.2 - '@radix-ui/react-presence': 0.1.2_react@17.0.2 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 - '@radix-ui/react-use-controllable-state': 0.1.0_react@17.0.2 - '@radix-ui/react-use-direction': 0.1.0_react@17.0.2 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 - '@radix-ui/react-use-previous': 0.1.1_react@17.0.2 - '@radix-ui/react-visually-hidden': 0.1.4_react@17.0.2 - react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - dev: false - - /@radix-ui/react-presence/0.1.2_react@17.0.2: + '@radix-ui/react-collection': 0.1.4(react@17.0.2) + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-context': 0.1.1(react@17.0.2) + '@radix-ui/react-dismissable-layer': 0.1.5(react@17.0.2) + '@radix-ui/react-id': 0.1.5(react@17.0.2) + '@radix-ui/react-presence': 0.1.2(react@17.0.2) + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) + '@radix-ui/react-use-controllable-state': 0.1.0(react@17.0.2) + '@radix-ui/react-use-direction': 0.1.0(react@17.0.2) + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) + '@radix-ui/react-use-previous': 0.1.1(react@17.0.2) + '@radix-ui/react-visually-hidden': 0.1.4(react@17.0.2) + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + dev: false + + /@radix-ui/react-presence@0.1.2(react@17.0.2): resolution: {integrity: sha512-3BRlFZraooIUfRlyN+b/Xs5hq1lanOOo/+3h6Pwu2GMFjkGKKa4Rd51fcqGqnVlbr3jYg+WLuGyAV4KlgqwrQw==} peerDependencies: react: '>=16.8' dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-primitive/0.1.4_react@17.0.2: + /@radix-ui/react-primitive@0.1.4(react@17.0.2): resolution: {integrity: sha512-6gSl2IidySupIMJFjYnDIkIWRyQdbu/AHK7rbICPani+LW4b0XdxBXc46og/iZvuwW8pjCS8I2SadIerv84xYA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-slot': 0.1.2_react@17.0.2 + '@radix-ui/react-slot': 0.1.2(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-slot/0.1.2_react@17.0.2: + /@radix-ui/react-slot@0.1.2(react@17.0.2): resolution: {integrity: sha512-ADkqfL+agEzEguU3yS26jfB50hRrwf7U4VTwAOZEmi/g+ITcBWe12yM46ueS/UCIMI9Py+gFUaAdxgxafFvY2Q==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-compose-refs': 0.1.0_react@17.0.2 + '@radix-ui/react-compose-refs': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-body-pointer-events/0.1.1_react@17.0.2: + /@radix-ui/react-use-body-pointer-events@0.1.1(react@17.0.2): resolution: {integrity: sha512-R8leV2AWmJokTmERM8cMXFHWSiv/fzOLhG/JLmRBhLTAzOj37EQizssq4oW0Z29VcZy2tODMi9Pk/htxwb+xpA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-use-layout-effect': 0.1.0_react@17.0.2 + '@radix-ui/react-use-layout-effect': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-callback-ref/0.1.0_react@17.0.2: + /@radix-ui/react-use-callback-ref@0.1.0(react@17.0.2): resolution: {integrity: sha512-Va041McOFFl+aV+sejvl0BS2aeHx86ND9X/rVFmEFQKTXCp6xgUK0NGUAGcgBlIjnJSbMYPGEk1xKSSlVcN2Aw==} peerDependencies: react: ^16.8 || ^17.0 @@ -4929,17 +5081,17 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-use-controllable-state/0.1.0_react@17.0.2: + /@radix-ui/react-use-controllable-state@0.1.0(react@17.0.2): resolution: {integrity: sha512-zv7CX/PgsRl46a52Tl45TwqwVJdmqnlQEQhaYMz/yBOD2sx2gCkCFSoF/z9mpnYWmS6DTLNTg5lIps3fV6EnXg==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-direction/0.1.0_react@17.0.2: + /@radix-ui/react-use-direction@0.1.0(react@17.0.2): resolution: {integrity: sha512-NajpY/An9TCPSfOVkgWIdXJV+VuWl67PxB6kOKYmtNAFHvObzIoh8o0n9sAuwSAyFCZVq211FEf9gvVDRhOyiA==} peerDependencies: react: ^16.8 || ^17.0 @@ -4948,17 +5100,17 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-use-escape-keydown/0.1.0_react@17.0.2: + /@radix-ui/react-use-escape-keydown@0.1.0(react@17.0.2): resolution: {integrity: sha512-tDLZbTGFmvXaazUXXv8kYbiCcbAE8yKgng9s95d8fCO+Eundv0Jngbn/hKPhDDs4jj9ChwRX5cDDnlaN+ugYYQ==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-use-callback-ref': 0.1.0_react@17.0.2 + '@radix-ui/react-use-callback-ref': 0.1.0(react@17.0.2) react: 17.0.2 dev: false - /@radix-ui/react-use-layout-effect/0.1.0_react@17.0.2: + /@radix-ui/react-use-layout-effect@0.1.0(react@17.0.2): resolution: {integrity: sha512-+wdeS51Y+E1q1Wmd+1xSSbesZkpVj4jsg0BojCbopWvgq5iBvixw5vgemscdh58ep98BwUbsFYnrywFhV9yrVg==} peerDependencies: react: ^16.8 || ^17.0 @@ -4967,7 +5119,7 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-use-previous/0.1.1_react@17.0.2: + /@radix-ui/react-use-previous@0.1.1(react@17.0.2): resolution: {integrity: sha512-O/ZgrDBr11dR8rhO59ED8s5zIXBRFi8MiS+CmFGfi7MJYdLbfqVOmQU90Ghf87aifEgWe6380LA69KBneaShAg==} peerDependencies: react: ^16.8 || ^17.0 @@ -4976,31 +5128,31 @@ packages: react: 17.0.2 dev: false - /@radix-ui/react-visually-hidden/0.1.4_react@17.0.2: + /@radix-ui/react-visually-hidden@0.1.4(react@17.0.2): resolution: {integrity: sha512-K/q6AEEzqeeEq/T0NPChvBqnwlp8Tl4NnQdrI/y8IOY7BRR+Ug0PEsVk6g48HJ7cA1//COugdxXXVVK/m0X1mA==} peerDependencies: react: ^16.8 || ^17.0 dependencies: '@babel/runtime': 7.20.13 - '@radix-ui/react-primitive': 0.1.4_react@17.0.2 + '@radix-ui/react-primitive': 0.1.4(react@17.0.2) react: 17.0.2 dev: false - /@reach/alert/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/alert@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg==} peerDependencies: react: ^16.8.0 || 17.x react-dom: ^16.8.0 || 17.x dependencies: - '@reach/utils': 0.13.2_sfoxds7t5ydpegc3knd667wn6m - '@reach/visually-hidden': 0.13.2_sfoxds7t5ydpegc3knd667wn6m + '@reach/utils': 0.13.2(react-dom@17.0.2)(react@17.0.2) + '@reach/visually-hidden': 0.13.2(react-dom@17.0.2)(react@17.0.2) prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 dev: false - /@reach/utils/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/utils@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-3ir6cN60zvUrwjOJu7C6jec/samqAeyAB12ZADK+qjnmQPdzSYldrFWwDVV5H0WkhbYXR3uh+eImu13hCetNPQ==} peerDependencies: react: ^16.8.0 || 17.x @@ -5008,12 +5160,12 @@ packages: dependencies: '@types/warning': 3.0.0 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 warning: 4.0.3 dev: false - /@reach/visually-hidden/0.13.2_sfoxds7t5ydpegc3knd667wn6m: + /@reach/visually-hidden@0.13.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-sPZwNS0/duOuG0mYwE5DmgEAzW9VhgU3aIt1+mrfT/xiT9Cdncqke+kRBQgU708q/Ttm9tWsoHni03nn/SuPTQ==} peerDependencies: react: ^16.8.0 || 17.x @@ -5021,11 +5173,11 @@ packages: dependencies: prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tslib: 2.5.0 dev: false - /@react-native-async-storage/async-storage/1.17.12: + /@react-native-async-storage/async-storage@1.17.12: resolution: {integrity: sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==} peerDependencies: react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 @@ -5036,11 +5188,11 @@ packages: merge-options: 3.0.4 dev: false - /@repeaterjs/repeater/3.0.4: + /@repeaterjs/repeater@3.0.4: resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} dev: true - /@rollup/plugin-babel/6.0.3: + /@rollup/plugin-babel@6.0.3: resolution: {integrity: sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5059,7 +5211,7 @@ packages: '@rollup/pluginutils': 5.0.2 dev: false - /@rollup/pluginutils/4.2.1: + /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} dependencies: @@ -5067,7 +5219,7 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils/5.0.2: + /@rollup/pluginutils@5.0.2: resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -5081,34 +5233,49 @@ packages: picomatch: 2.3.1 dev: false - /@sideway/address/4.1.4: + /@rollup/pluginutils@5.1.0(rollup@2.79.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: true + + /@sideway/address@4.1.4: resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} dependencies: '@hapi/hoek': 9.3.0 dev: true - /@sideway/formula/3.0.0: + /@sideway/formula@3.0.0: resolution: {integrity: sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==} dev: true - /@sideway/pinpoint/2.0.0: + /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sinclair/typebox/0.25.21: + /@sinclair/typebox@0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} - /@sinonjs/commons/2.0.0: + /@sinonjs/commons@2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 - /@sinonjs/fake-timers/10.0.2: + /@sinonjs/fake-timers@10.0.2: resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: '@sinonjs/commons': 2.0.0 - /@size-limit/esbuild/8.2.4_size-limit@8.2.4: + /@size-limit/esbuild@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-kPgNfpwUvBD98s5axlf1UciFg4Ki4AYSl/cOmSyyYBuzksHiwW7Myeu0w4mTxtV9nwBFbkrrNXqszE7b+OhFLA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} peerDependencies: @@ -5119,7 +5286,7 @@ packages: size-limit: 8.2.4 dev: true - /@size-limit/file/8.2.4_size-limit@8.2.4: + /@size-limit/file@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-xLuF97W7m7lxrRJvqXRlxO/4t7cpXtfxOnjml/t4aRVUCMXLdyvebRr9OM4jjoK8Fmiz8jomCbETUCI3jVhLzA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} peerDependencies: @@ -5129,17 +5296,17 @@ packages: size-limit: 8.2.4 dev: true - /@size-limit/preset-small-lib/8.2.4_size-limit@8.2.4: + /@size-limit/preset-small-lib@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-AL4384oBgMcDPlNblgWHreqFSSOui0J9NbgyHhegB1h8AgRyHbdVGC3yWLpEESYQXHYnKdbNrYeRE/TclsViog==} peerDependencies: size-limit: 8.2.4 dependencies: - '@size-limit/esbuild': 8.2.4_size-limit@8.2.4 - '@size-limit/file': 8.2.4_size-limit@8.2.4 + '@size-limit/esbuild': 8.2.4(size-limit@8.2.4) + '@size-limit/file': 8.2.4(size-limit@8.2.4) size-limit: 8.2.4 dev: true - /@stefanprobst/rehype-shiki/2.2.0_shiki@0.12.1: + /@stefanprobst/rehype-shiki@2.2.0(shiki@0.12.1): resolution: {integrity: sha512-X/m9hUMifZYJk77pc9dTl8Q5DLWdXegzmHhPZ5yraFpQXG9n/m2jKMLvIR7F6gI8l5plj6aNx/qcMCMnfBwBOA==} engines: {node: '>=14.17', yarn: 1.x} peerDependencies: @@ -5151,14 +5318,14 @@ packages: remark-parse: 10.0.1 remark-rehype: 10.1.0 shiki: 0.12.1 - shiki-renderer-hast: 1.1.5_shiki@0.12.1 + shiki-renderer-hast: 1.1.5(shiki@0.12.1) unified: 10.1.2 unist-util-visit: 4.1.1 transitivePeerDependencies: - supports-color dev: false - /@stefanprobst/remark-shiki/2.1.0_shiki@0.12.1: + /@stefanprobst/remark-shiki@2.1.0(shiki@0.12.1): resolution: {integrity: sha512-cIQBMke/gP2W8sqxW2QW0qWQFbPnE8WQU4k32lKwEAOm/hZRuXxULRDdhNgJzMRoZBtVedyuW0RsedKKD94CCQ==} engines: {node: '>=14.17', yarn: 1.x} peerDependencies: @@ -5171,12 +5338,12 @@ packages: unist-util-visit: 4.1.1 dev: false - /@swc/helpers/0.4.11: + /@swc/helpers@0.4.11: resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==} dependencies: tslib: 2.5.0 - /@testing-library/dom/8.19.0: + /@testing-library/dom@8.19.0: resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} engines: {node: '>=12'} dependencies: @@ -5190,12 +5357,12 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom/5.16.5: + /@testing-library/jest-dom@5.16.5: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.0.1 - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.13 '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.1.3 chalk: 3.0.0 @@ -5205,7 +5372,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react-hooks/8.0.1_x4rus6jnwzjq3zgm4bvjbdzauy: + /@testing-library/react-hooks@8.0.1(@types/react@17.0.53)(react-dom@17.0.2)(react-test-renderer@17.0.2)(react@17.0.2): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -5221,53 +5388,53 @@ packages: react-test-renderer: optional: true dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.13 '@types/react': 17.0.53 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-error-boundary: 3.1.4_react@17.0.2 - react-test-renderer: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-error-boundary: 3.1.4(react@17.0.2) + react-test-renderer: 17.0.2(react@17.0.2) dev: true - /@testing-library/react/12.1.5_sfoxds7t5ydpegc3knd667wn6m: + /@testing-library/react@12.1.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} engines: {node: '>=12'} peerDependencies: react: <18.0.0 react-dom: <18.0.0 dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.13 '@testing-library/dom': 8.19.0 '@types/react-dom': 17.0.18 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: true - /@theguild/components/1.12.0_zsjcj4gvi24ks76nprapl4hsmq: + /@theguild/components@1.12.0(@types/react@17.0.53)(react-dom@17.0.2)(react@17.0.2)(ts-node@10.9.1): resolution: {integrity: sha512-OaFIIbZSRDVDi3Og/XCbFxbvquvOmA084JpptCIIk/urBvOrOw44h9/f70ATHrT5W0XctrKbXj9xbDmKS92cxg==} peerDependencies: react: ^17.0.2 react-dom: ^17.0.2 dependencies: - '@algolia/autocomplete-js': 1.7.2_algoliasearch@4.14.2 - '@algolia/autocomplete-plugin-algolia-insights': 1.7.2_nl7ecob7oenl7dfhoewptlc4ye - '@algolia/autocomplete-plugin-query-suggestions': 1.7.2_algoliasearch@4.14.2 + '@algolia/autocomplete-js': 1.7.2(algoliasearch@4.14.2) + '@algolia/autocomplete-plugin-algolia-insights': 1.7.2(algoliasearch@4.14.2)(search-insights@2.2.1) + '@algolia/autocomplete-plugin-query-suggestions': 1.7.2(algoliasearch@4.14.2) '@algolia/autocomplete-theme-classic': 1.7.2 - '@emotion/react': 11.10.6_h7fc2el62uaa77gho3xhys6ola - '@emotion/styled': 11.10.6_7hisdke2c3hq4r3q5z4dcdhmzi - '@radix-ui/react-navigation-menu': 0.1.2_sfoxds7t5ydpegc3knd667wn6m + '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) + '@emotion/styled': 11.10.6(@emotion/react@11.10.6)(@types/react@17.0.53)(react@17.0.2) + '@radix-ui/react-navigation-menu': 0.1.2(react-dom@17.0.2)(react@17.0.2) algoliasearch: 4.14.2 - focus-trap-react: 9.0.2_sfoxds7t5ydpegc3knd667wn6m + focus-trap-react: 9.0.2(react-dom@17.0.2)(react@17.0.2) polished: 4.2.2 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-instantsearch-dom: 6.17.0_kr5x6cjikajrhwznglqptdxk4q - react-paginate: 7.1.5_react@17.0.2 - react-player: 2.11.0_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-instantsearch-dom: 6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2) + react-paginate: 7.1.5(react@17.0.2) + react-player: 2.11.0(react@17.0.2) search-insights: 2.2.1 tinykeys: 1.4.0 - twin.macro: 2.8.2 - use-debounce: 8.0.4_react@17.0.2 + twin.macro: 2.8.2(ts-node@10.9.1) + use-debounce: 8.0.4(react@17.0.2) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -5275,47 +5442,43 @@ packages: - ts-node dev: false - /@tokenizer/token/0.3.0: + /@tokenizer/token@0.3.0: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: true - /@tootallnate/once/2.0.0: + /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@tsconfig/node10/1.0.9: + /@tsconfig/node10@1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true - /@tsconfig/node12/1.0.11: + /@tsconfig/node12@1.0.11: resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true - /@tsconfig/node14/1.0.3: + /@tsconfig/node14@1.0.3: resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true - /@tsconfig/node16/1.0.3: + /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true - /@types/accepts/1.3.5: + /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: '@types/node': 18.15.5 - /@types/acorn/4.0.6: + /@types/acorn@4.0.6: resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/aria-query/4.2.2: + /@types/aria-query@4.2.2: resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} dev: true - /@types/babel__core/7.1.19: + /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: '@babel/parser': 7.20.1 @@ -5324,43 +5487,43 @@ packages: '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.20.0 - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.20.1 '@babel/types': 7.20.0 - /@types/babel__traverse/7.18.2: + /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: '@babel/types': 7.20.0 - /@types/body-parser/1.19.2: + /@types/body-parser@1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 '@types/node': 18.15.5 - /@types/busboy/1.5.0: + /@types/busboy@1.5.0: resolution: {integrity: sha512-ncOOhwmyFDW76c/Tuvv9MA9VGYUCn8blzyWmzYELcNGDb0WXWLSmFi7hJq25YdRBYJrmMBB5jZZwUjlJe9HCjQ==} dependencies: '@types/node': 18.15.5 dev: false - /@types/connect/3.4.35: + /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: '@types/node': 18.15.5 - /@types/content-disposition/0.5.5: + /@types/content-disposition@0.5.5: resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} - /@types/cookies/0.7.7: + /@types/cookies@0.7.7: resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} dependencies: '@types/connect': 3.4.35 @@ -5368,42 +5531,46 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.15.5 - /@types/cors/2.8.13: + /@types/cors@2.8.13: resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} dependencies: '@types/node': 18.15.5 dev: false - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: false - /@types/estree-jsx/0.0.1: + /@types/estree-jsx@0.0.1: resolution: {integrity: sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/estree-jsx/1.0.0: + /@types/estree-jsx@1.0.0: resolution: {integrity: sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==} dependencies: '@types/estree': 1.0.0 dev: false - /@types/estree/1.0.0: + /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: false - /@types/express-serve-static-core/4.17.31: + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} dependencies: '@types/node': 18.15.5 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 - /@types/express/4.17.14: + /@types/express@4.17.14: resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} dependencies: '@types/body-parser': 1.19.2 @@ -5411,16 +5578,16 @@ packages: '@types/qs': 6.9.7 '@types/serve-static': 1.15.0 - /@types/extract-files/8.1.1: + /@types/extract-files@8.1.1: resolution: {integrity: sha512-dMJJqBqyhsfJKuK7p7HyyNmki7qj1AlwhUKWx6KrU7i1K2T2SPsUsSUTWFmr/sEM1q8rfR8j5IyUmYrDbrhfjQ==} dev: false - /@types/graceful-fs/4.1.5: + /@types/graceful-fs@4.1.5: resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} dependencies: '@types/node': 18.15.5 - /@types/graphql-upload/16.0.0: + /@types/graphql-upload@16.0.0: resolution: {integrity: sha512-X2YD1w9cCYSRPFmYDUwfdNNcgjK3TP1uqZfmKvI9/jdGizkpkj0Q/gOzJkkPnpIhR8z0UK4lNtgeQmVW5PsyzA==} dependencies: '@types/express': 4.17.14 @@ -5428,59 +5595,59 @@ packages: fs-capacitor: 8.0.0 graphql: 16.6.0 - /@types/hast/2.3.4: + /@types/hast@2.3.4: resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/hoist-non-react-statics/3.3.1: + /@types/hoist-non-react-statics@3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: '@types/react': 17.0.53 hoist-non-react-statics: 3.3.2 dev: false - /@types/http-assert/1.5.3: + /@types/http-assert@1.5.3: resolution: {integrity: sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==} - /@types/http-errors/2.0.1: + /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - /@types/is-ci/3.0.0: + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.7.1 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 - /@types/jest/29.5.0: + /@types/jest@29.5.0: resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 - /@types/js-cookie/2.2.7: + /@types/js-cookie@2.2.7: resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} dev: false - /@types/js-yaml/4.0.5: + /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: false - /@types/jsdom/20.0.0: + /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} dependencies: '@types/node': 18.15.5 @@ -5488,15 +5655,15 @@ packages: parse5: 7.1.1 dev: true - /@types/keygrip/1.0.2: + /@types/keygrip@1.0.2: resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} - /@types/koa-compose/3.2.5: + /@types/koa-compose@3.2.5: resolution: {integrity: sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==} dependencies: '@types/koa': 2.13.5 - /@types/koa/2.13.5: + /@types/koa@2.13.5: resolution: {integrity: sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==} dependencies: '@types/accepts': 1.3.5 @@ -5508,213 +5675,208 @@ packages: '@types/koa-compose': 3.2.5 '@types/node': 18.15.5 - /@types/lodash-es/4.17.7: + /@types/lodash-es@4.17.7: resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==} dependencies: '@types/lodash': 4.14.191 dev: true - /@types/lodash.mergewith/4.6.6: + /@types/lodash.mergewith@4.6.6: resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} dependencies: '@types/lodash': 4.14.191 dev: false - /@types/lodash.sortby/4.7.7: + /@types/lodash.sortby@4.7.7: resolution: {integrity: sha512-J/4IS+jQopGBrrRetBXDCX0KnSeXJZ0rOTmGAxR9MWGV24YdHxX8IRi9LCGAU9GKWlBov9KRSfQpuup9PReqrw==} dependencies: '@types/lodash': 4.14.191 dev: true - /@types/lodash/4.14.191: + /@types/lodash@4.14.191: resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} - /@types/mdast/3.0.10: + /@types/mdast@3.0.10: resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: '@types/unist': 2.0.6 dev: false - /@types/mdx/2.0.3: + /@types/mdx@2.0.3: resolution: {integrity: sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ==} dev: false - /@types/mime/3.0.1: + /@types/mime@3.0.1: resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - /@types/minimatch/3.0.5: + /@types/minimatch@3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/mkdirp/1.0.2: + /@types/mkdirp@1.0.2: resolution: {integrity: sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ==} dependencies: '@types/node': 18.15.5 dev: true - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.15.5: + /@types/node@18.15.5: resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/object-path/0.11.1: + /@types/object-path@0.11.1: resolution: {integrity: sha512-219LSCO9HPcoXcRTC6DbCs0FRhZgBnEMzf16RRqkT40WbkKx3mOeQuz3e2XqbfhOz/AHfbru0kzB1n1RCAsIIg==} dev: false - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/prettier/2.7.2: + /@types/prettier@2.7.2: resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} - /@types/prop-types/15.7.5: + /@types/prop-types@15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /@types/qs/6.9.7: + /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - /@types/randomstring/1.1.8: + /@types/randomstring@1.1.8: resolution: {integrity: sha512-NPOJcW+TTjT9Qiog0UjSoG3Sj24c7EfzZO39BU9E61D7fQtwNmBNblyQhSsK9+5s9Fm0o31rvX+ZyZkpE/c7jA==} dev: true - /@types/range-parser/1.2.4: + /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom/17.0.18: + /@types/react-dom@17.0.18: resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} dependencies: '@types/react': 17.0.53 dev: true - /@types/react-dom/18.0.11: + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: '@types/react': 17.0.53 dev: true - /@types/react/17.0.53: + /@types/react@17.0.53: resolution: {integrity: sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 csstype: 3.1.1 - /@types/scheduler/0.16.2: + /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} - /@types/semver/6.2.3: + /@types/semver@6.2.3: resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /@types/serve-static/1.15.0: + /@types/serve-static@1.15.0: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 '@types/node': 18.15.5 - /@types/sha1/1.1.3: + /@types/sha1@1.1.3: resolution: {integrity: sha512-bXfx/6xrPu1l6pLItGRMPX00lhnJavpj2qiQeLHflXvL2Ix97aC8FTF2/pQoqukRzcCwKyN3csZvOLzamIoaSA==} dependencies: '@types/node': 18.15.5 dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - /@types/testing-library__jest-dom/5.14.5: + /@types/testing-library__jest-dom@5.14.5: resolution: {integrity: sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==} dependencies: '@types/jest': 29.5.0 dev: true - /@types/tough-cookie/4.0.2: + /@types/tough-cookie@4.0.2: resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} dev: true - /@types/unist/2.0.6: + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} dev: false - /@types/wait-on/5.3.1: + /@types/wait-on@5.3.1: resolution: {integrity: sha512-2FFOKCF/YydrMUaqg+fkk49qf0e5rDgwt6aQsMzFQzbS419h2gNOXyiwp/o2yYy27bi/C1z+HgfncryjGzlvgQ==} dependencies: '@types/node': 18.15.5 dev: true - /@types/warning/3.0.0: + /@types/warning@3.0.0: resolution: {integrity: sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==} dev: false - /@types/ws/8.5.3: - resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} - dependencies: - '@types/node': 18.15.5 - - /@types/ws/8.5.4: + /@types/ws@8.5.4: resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} dependencies: '@types/node': 18.15.5 - dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - /@types/yargs/17.0.13: + /@types/yargs@17.0.13: resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} dependencies: '@types/yargs-parser': 21.0.0 - /@vitejs/plugin-react-refresh/1.3.6: + /@vitejs/plugin-react-refresh@1.3.6: resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} engines: {node: '>=12.0.0'} deprecated: This package has been deprecated in favor of @vitejs/plugin-react dependencies: '@babel/core': 7.19.6 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.19.6 + '@babel/plugin-transform-react-jsx-self': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.19.6) '@rollup/pluginutils': 4.2.1 react-refresh: 0.10.0 transitivePeerDependencies: - supports-color dev: true - /@xobotyi/scrollbar-width/1.9.5: + /@xobotyi/scrollbar-width@1.9.5: resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} dev: false - /@zeit/schemas/2.29.0: + /@zeit/schemas@2.29.0: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true - /abab/2.0.6: + /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead dev: true - /abort-controller/3.0.0: + /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} dependencies: event-target-shim: 5.0.1 - /abstract-logging/2.0.1: + /abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - /accepts/1.3.8: + /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} dependencies: @@ -5722,14 +5884,14 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals/7.0.1: + /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: acorn: 8.8.1 acorn-walk: 8.2.0 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx@5.3.2(acorn@8.8.1): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -5737,7 +5899,7 @@ packages: acorn: 8.8.1 dev: false - /acorn-node/1.8.2: + /acorn-node@1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} dependencies: acorn: 7.4.1 @@ -5745,28 +5907,27 @@ packages: xtend: 4.0.2 dev: false - /acorn-walk/7.2.0: + /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} dev: false - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - dev: true - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} hasBin: true dev: false - /acorn/8.8.1: + /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} hasBin: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -5775,7 +5936,7 @@ packages: - supports-color dev: true - /aggregate-error/4.0.1: + /aggregate-error@4.0.1: resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==} engines: {node: '>=12'} dependencies: @@ -5783,15 +5944,17 @@ packages: indent-string: 5.0.0 dev: true - /ajv-formats/2.1.1: + /ajv-formats@2.1.1(ajv@8.11.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true dependencies: ajv: 8.11.0 - /ajv/8.11.0: + /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: fast-deep-equal: 3.1.3 @@ -5799,7 +5962,7 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /algoliasearch-helper/3.11.1_algoliasearch@4.14.2: + /algoliasearch-helper@3.11.1(algoliasearch@4.14.2): resolution: {integrity: sha512-mvsPN3eK4E0bZG0/WlWJjeqe/bUD2KOEVOl0GyL/TGXn6wcpZU8NOuztGHCUKXkyg5gq6YzUakVTmnmSSO5Yiw==} peerDependencies: algoliasearch: '>= 3.1 < 6' @@ -5808,7 +5971,7 @@ packages: algoliasearch: 4.14.2 dev: false - /algoliasearch/4.14.2: + /algoliasearch@4.14.2: resolution: {integrity: sha512-ngbEQonGEmf8dyEh5f+uOIihv4176dgbuOZspiuhmTTBRBuzWu3KCGHre6uHj5YyuC7pNvQGzB6ZNJyZi0z+Sg==} dependencies: '@algolia/cache-browser-local-storage': 4.14.2 @@ -5827,93 +5990,92 @@ packages: '@algolia/transporter': 4.14.2 dev: false - /altair-static-slim/5.0.9: + /altair-static-slim@5.0.9: resolution: {integrity: sha512-PlG7yCBfV+dvBWRJBFb/v9m8N7lZcBTFdYNV1WIQfHW7w/sU8yat35uxGoAQ9K7XkOHNpRF0wdyRqmGwtro0bg==} dev: false - /ansi-align/3.0.1: + /ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: string-width: 4.2.3 dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - /ansi-escapes/6.0.0: + /ansi-escapes@6.0.0: resolution: {integrity: sha512-IG23inYII3dWlU2EyiAiGj6Bwal5GzsgPMwjYGvc1HPE2dgbj4ZB5ToWBKSquKw74nB3TIuOwaI6/jSULzfgrw==} engines: {node: '>=14.16'} dependencies: type-fest: 3.2.0 dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-regex/6.0.1: + /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - /ansi-styles/6.2.1: + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: true - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /arch/2.2.0: + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archy/1.0.0: + /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /arg/5.0.2: + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-hidden/1.2.1_h7fc2el62uaa77gho3xhys6ola: + /aria-hidden@1.2.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==} engines: {node: '>=10'} peerDependencies: @@ -5928,36 +6090,36 @@ packages: tslib: 2.5.0 dev: false - /aria-query/5.1.3: + /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: deep-equal: 2.0.5 dev: true - /array-differ/3.0.0: + /array-differ@3.0.0: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} dev: true - /array-find-index/1.0.2: + /array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} dev: true - /array-flatten/1.1.1: + /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - /array-uniq/1.0.2: + /array-uniq@1.0.2: resolution: {integrity: sha512-GVYjmpL05al4dNlKJm53mKE4w9OOLiuVHWorsIA3YVz+Hu0hcn6PtE3Ydl0EqU7v+7ABC4mjjWsnLUxbpno+CA==} engines: {node: '>=0.10.0'} dev: false - /array.prototype.flat/1.3.0: + /array.prototype.flat@1.3.0: resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} dependencies: @@ -5967,47 +6129,47 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /arrgv/1.0.2: + /arrgv@1.0.2: resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} engines: {node: '>=8.0.0'} dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /arrify/2.0.1: + /arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} dev: true - /arrify/3.0.0: + /arrify@3.0.0: resolution: {integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==} engines: {node: '>=12'} dev: true - /asap/2.0.6: + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - /astring/1.8.3: + /astring@1.8.3: resolution: {integrity: sha512-sRpyiNrx2dEYIMmUXprS8nlpRg2Drs8m9ElX9vVEXaCB4XEAJhKfs7IcX0IwShjuOAjLR6wzIrgoptz1n19i1A==} hasBin: true dev: false - /asynckit/0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /atomic-sleep/1.0.0: + /atomic-sleep@1.0.0: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} - /auto-bind/4.0.0: + /auto-bind@4.0.0: resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} - /autoprefixer/10.4.13_postcss@8.4.21: + /autoprefixer@10.4.13(postcss@8.4.21): resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -6023,7 +6185,7 @@ packages: postcss-value-parser: 4.2.0 dev: false - /ava/5.2.0: + /ava@5.2.0: resolution: {integrity: sha512-W8yxFXJr/P68JP55eMpQIa6AiXhCX3VeuajM8nolyWNExcMDD6rnIWKTjw0B/+GkFHBIaN6Jd0LtcMThcoqVfg==} engines: {node: '>=14.19 <15 || >=16.15 <17 || >=18'} hasBin: true @@ -6082,12 +6244,12 @@ packages: - supports-color dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /avvio/8.2.0: + /avvio@8.2.0: resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} dependencies: archy: 1.0.0 @@ -6096,7 +6258,7 @@ packages: transitivePeerDependencies: - supports-color - /axios/0.27.2: + /axios@0.27.2: resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} dependencies: follow-redirects: 1.15.2 @@ -6105,7 +6267,7 @@ packages: - debug dev: true - /babel-jest/29.5.0_@babel+core@7.19.6: + /babel-jest@29.5.0(@babel/core@7.19.6): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6118,14 +6280,14 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.1.19 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.19.6 + babel-preset-jest: 29.5.0(@babel/core@7.19.6) chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 transitivePeerDependencies: - supports-color - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -6137,7 +6299,7 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -6146,7 +6308,7 @@ packages: '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 - /babel-plugin-macros/2.8.0: + /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: '@babel/runtime': 7.20.13 @@ -6154,7 +6316,7 @@ packages: resolve: 1.22.1 dev: false - /babel-plugin-macros/3.1.0: + /babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: @@ -6163,10 +6325,10 @@ packages: resolve: 1.22.1 dev: false - /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.19.6: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.19.6): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 @@ -6175,20 +6337,20 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.6 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.6 - - /babel-preset-fbjs/3.4.0_@babel+core@7.19.6: + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.19.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.19.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.19.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.19.6) + + /babel-preset-fbjs@3.4.0(@babel/core@7.19.6): resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 @@ -6197,37 +6359,37 @@ packages: optional: true dependencies: '@babel/core': 7.19.6 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-proposal-object-rest-spread': 7.19.4_@babel+core@7.19.6 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.6 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.6 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-block-scoping': 7.20.0_@babel+core@7.19.6 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-destructuring': 7.20.0_@babel+core@7.19.6 - '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.6 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.6 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.19.6 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-parameters': 7.20.1_@babel+core@7.19.6 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.6 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.6 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-proposal-object-rest-spread': 7.19.4(@babel/core@7.19.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.19.6) + '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.19.6) + '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-block-scoping': 7.20.0(@babel/core@7.19.6) + '@babel/plugin-transform-classes': 7.19.0(@babel/core@7.19.6) + '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.19.6) + '@babel/plugin-transform-destructuring': 7.20.0(@babel/core@7.19.6) + '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.19.6) + '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.19.6) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.19.6) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.19.6) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.19.6) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-parameters': 7.20.1(@babel/core@7.19.6) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.19.6) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.19.6) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.19.6) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color - /babel-preset-jest/29.5.0_@babel+core@7.19.6: + /babel-preset-jest@29.5.0(@babel/core@7.19.6): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -6238,70 +6400,73 @@ packages: dependencies: '@babel/core': 7.19.6 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) - /backo2/1.0.2: + /backo2@1.0.2: resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} - /bail/2.0.2: + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /big-integer/1.6.51: + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: true - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /blueimp-md5/2.19.0: + /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true - /bob-esbuild-cli/4.0.0: - resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} + /bob-esbuild-cli@5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0): + resolution: {integrity: sha512-32Iyv8SXr2n7aVPcJjfPT3OEBzLnf+xROWJwM1iK6W0c2oebn3crBKNeFEtEKYAAszHtZ+2+u88COpXTAPaQjw==} engines: {node: '>=14.13.1'} hasBin: true peerDependencies: - bob-esbuild: ^4.0.0 + bob-esbuild: ^5.0.0-alpha-227aebc.0 peerDependenciesMeta: bob-esbuild: optional: true dependencies: - commander: 9.4.1 + bob-esbuild: 5.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5) + commander: 11.1.0 dev: true - /bob-esbuild-cli/4.0.0_bob-esbuild@4.0.3: - resolution: {integrity: sha512-wJ0td3/TdcfjGmKr94pcxi2qsrXQpXuUzX5xEe0FYoOVNqrtSoeqUD67pUXrfgGmA9jDkQoq1t9b0+7FpQtHxw==} - engines: {node: '>=14.13.1'} - hasBin: true + /bob-esbuild-plugin@5.0.0-alpha-227aebc.0(esbuild@0.17.12)(rollup@2.79.1): + resolution: {integrity: sha512-ez9c3o7Y0CD6rJmx8LSsUGdE/pSvktZGWnyj7hRD8z4ZhDdvMvnCJ3ULv1V5D6BkSoHBHAg3gvuKQ868+/cZaw==} peerDependencies: - bob-esbuild: ^4.0.0 + esbuild: '>=0.14.39' + rollup: '*' peerDependenciesMeta: - bob-esbuild: + esbuild: + optional: true + rollup: optional: true dependencies: - bob-esbuild: 4.0.3_zofgjzmca2gwtey4x4go3tg4j4 - commander: 9.4.1 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) + esbuild: 0.17.12 + rollup: 2.79.1 dev: true - /bob-esbuild-plugin/4.0.0_ywuimuzxrww3qfvp225qpyckgu: - resolution: {integrity: sha512-Ymk0kEPc0JhL3eZQVnWpjT4/HMX8Hw7aD5CzqSvNAXeUgaR1+8m5O1RtkP/D42ZwNv+FPgD1wKM4pdoQ4ScmAQ==} + /bob-esbuild-plugin@5.0.0-alpha-d826df0.0(esbuild@0.17.12)(rollup@2.79.1): + resolution: {integrity: sha512-ByIveo0lvUmB8sqC4aDqgnNiwg2IyVgtdjLRzBZe51whobfcgxOwYsE5vcY6XUZWClCHfHhQhsrALKixqPNJwg==} peerDependencies: esbuild: '>=0.14.39' rollup: '*' @@ -6311,13 +6476,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 4.2.1 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 dev: true - /bob-esbuild/4.0.3_zofgjzmca2gwtey4x4go3tg4j4: - resolution: {integrity: sha512-9AGuh6V5Whsditj5n2oJjWAvHwgadgD2HD0qZ4rEBwY9tpj8YbfYeiaXQQV9qJxwT9oUYOsQE53wPNYBFDIfJA==} + /bob-esbuild@5.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5): + resolution: {integrity: sha512-VWCdAs85bAf377nBfd+3VBvlxH/dmH63M2Fxf0FTp6Pe4JthD3SZmGUiftFJPplc3njUXao4ojtc3hpd9FelKA==} peerDependencies: esbuild: '>=0.14.39' typescript: '*' @@ -6327,15 +6492,15 @@ packages: typescript: optional: true dependencies: - '@pnpm/types': 8.8.0 - bob-esbuild-plugin: 4.0.0_ywuimuzxrww3qfvp225qpyckgu + '@pnpm/types': 9.4.2 + bob-esbuild-plugin: 5.0.0-alpha-227aebc.0(esbuild@0.17.12)(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 typescript: 4.9.5 dev: true - /bob-ts/4.1.1_egtog7kfy74nw7rr3bmqx36oni: - resolution: {integrity: sha512-lXvGGP46GSU10LMHB27Kq2PZl+DaK1L5geHxxzLw/QklEWnvfzLPJsH9YGvV9F4AdIGJp85FTC1xIfanwd3NbQ==} + /bob-ts@5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@4.9.5): + resolution: {integrity: sha512-CTFOVp1Hzo7CQoVYuuGjeMU8kdm2VuUZ2uhOeb5zKigHaAziRfaArB2bbRrLI4joRENs6QPQdEJ6mg5ZtUbcVw==} engines: {node: '>=14.13.1'} hasBin: true peerDependencies: @@ -6349,14 +6514,14 @@ packages: optional: true dependencies: '@types/node': 18.15.5 - bob-esbuild-plugin: 4.0.0_ywuimuzxrww3qfvp225qpyckgu + bob-esbuild-plugin: 5.0.0-alpha-d826df0.0(esbuild@0.17.12)(rollup@2.79.1) esbuild: 0.17.12 rollup: 2.79.1 typescript: 4.9.5 dev: true - /bob-tsm/1.1.2_zofgjzmca2gwtey4x4go3tg4j4: - resolution: {integrity: sha512-5H6wIDpQTop5rt/5JRvtssmpiTkIqi1EBkpSy19GfReOed6QoeD+iJIRjNgyiI7ZsX1ogETxgN7KiW5Wx6pUEQ==} + /bob-tsm@2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@4.9.5): + resolution: {integrity: sha512-GiT+6+dvhFdsfb0reGtzoXFFJRMCpgIsaxyKXC+gEP3yh6UC+Yu1gpwbC3jhXGDH5j9TcpCPTZ1OnvmRLVR0Yw==} engines: {node: '>=14.13.1'} hasBin: true peerDependencies: @@ -6369,10 +6534,10 @@ packages: esbuild: 0.17.12 typescript: 4.9.5 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /body-parser/1.20.1: + /body-parser@1.20.1: resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: @@ -6392,7 +6557,7 @@ packages: - supports-color dev: true - /boxen/7.0.0: + /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} dependencies: @@ -6406,38 +6571,38 @@ packages: wrap-ansi: 8.0.1 dev: true - /bplist-parser/0.2.0: + /bplist-parser@0.2.0: resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.51 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /breakword/1.0.5: + /breakword@1.0.5: resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -6445,65 +6610,64 @@ packages: caniuse-lite: 1.0.30001429 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer/6.0.3: + /buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /bufferutil/4.0.7: + /bufferutil@4.0.7: resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.5.0 - dev: true - /bundle-name/3.0.0: + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 dev: true - /busboy/1.6.0: + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} dependencies: streamsearch: 1.1.0 dev: false - /bytes-iec/3.1.1: + /bytes-iec@3.1.1: resolution: {integrity: sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==} engines: {node: '>= 0.8'} dev: true - /bytes/3.0.0: + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} dev: true - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - /c8/7.13.0: + /c8@7.13.0: resolution: {integrity: sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==} engines: {node: '>=10.12.0'} hasBin: true @@ -6522,34 +6686,34 @@ packages: yargs-parser: 20.2.9 dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - /callsites/4.0.0: + /callsites@4.0.0: resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} engines: {node: '>=12.20'} dev: true - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 tslib: 2.5.0 - /camelcase-css/2.0.1: + /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: false - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -6558,7 +6722,7 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase-keys/8.0.2: + /camelcase-keys@8.0.2: resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} engines: {node: '>=14.16'} dependencies: @@ -6568,48 +6732,48 @@ packages: type-fest: 2.19.0 dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /camelcase/7.0.0: + /camelcase@7.0.0: resolution: {integrity: sha512-JToIvOmz6nhGsUhAYScbo2d6Py5wojjNfoxoc2mEVLUdJ70gJK2gnd+ABY1Tc3sVMyK7QDPtN0T/XdlCQWITyQ==} engines: {node: '>=14.16'} dev: true - /caniuse-lite/1.0.30001429: + /caniuse-lite@1.0.30001429: resolution: {integrity: sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==} - /capital-case/1.0.4: + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 - /cbor/8.1.0: + /cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} dependencies: nofilter: 3.1.0 dev: true - /ccount/2.0.1: + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false - /chalk-template/0.4.0: + /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} engines: {node: '>=12'} dependencies: chalk: 4.1.2 dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -6617,7 +6781,7 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/3.0.0: + /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} dependencies: @@ -6625,23 +6789,23 @@ packages: supports-color: 7.2.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk/5.0.1: + /chalk@5.0.1: resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /chalk/5.2.0: + /chalk@5.2.0: resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - /change-case-all/1.0.15: + /change-case-all@1.0.15: resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} dependencies: change-case: 4.1.2 @@ -6655,7 +6819,7 @@ packages: upper-case: 2.0.2 upper-case-first: 2.0.2 - /change-case/4.1.2: + /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} dependencies: camel-case: 4.1.2 @@ -6671,45 +6835,45 @@ packages: snake-case: 3.0.4 tslib: 2.5.0 - /changesets-github-release/0.1.0: + /changesets-github-release@0.1.0: resolution: {integrity: sha512-ai++eLjlEjW4flLKExS8Li2a5qocO+N3YTR13aZCAwt4bgj6MYXgPfdoukLktaQXs3QUmaHz5dG2ISot/hZD5g==} hasBin: true dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - /char-regex/2.0.1: + /char-regex@2.0.1: resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} engines: {node: '>=12.20'} dev: false - /character-entities-html4/2.1.0: + /character-entities-html4@2.1.0: resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} dev: false - /character-entities-legacy/3.0.0: + /character-entities-legacy@3.0.0: resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} dev: false - /character-entities/2.0.2: + /character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: false - /character-reference-invalid/2.0.1: + /character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /charenc/0.0.2: + /charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -6721,49 +6885,49 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /chunkd/2.0.1: + /chunkd@2.0.1: resolution: {integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==} dev: true - /ci-info/3.7.1: + /ci-info@3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} - /ci-parallel-vars/1.0.1: + /ci-parallel-vars@1.0.1: resolution: {integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==} dev: true - /cjs-module-lexer/1.2.2: + /cjs-module-lexer@1.2.2: resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - /classnames/2.3.2: + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false - /clean-set/1.1.2: + /clean-set@1.1.2: resolution: {integrity: sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==} dev: false - /clean-stack/4.2.0: + /clean-stack@4.2.0: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} dependencies: escape-string-regexp: 5.0.0 dev: true - /clean-yaml-object/0.1.0: + /clean-yaml-object@0.1.0: resolution: {integrity: sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==} engines: {node: '>=0.10.0'} dev: true - /cli-boxes/3.0.0: + /cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} dev: true - /cli-truncate/3.1.0: + /cli-truncate@3.1.0: resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6771,7 +6935,7 @@ packages: string-width: 5.1.2 dev: true - /clipboardy/3.0.0: + /clipboardy@3.0.0: resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -6780,14 +6944,14 @@ packages: is-wsl: 2.2.0 dev: true - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -6795,7 +6959,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -6803,57 +6967,57 @@ packages: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - /code-excerpt/4.0.0: + /code-excerpt@4.0.0: resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: convert-to-spaces: 2.0.1 dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /color-string/1.9.1: + /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: false - /color/3.2.1: + /color@3.2.1: resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} dependencies: color-convert: 1.9.3 color-string: 1.9.1 dev: false - /color/4.2.3: + /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} dependencies: @@ -6861,67 +7025,67 @@ packages: color-string: 1.9.1 dev: false - /combined-stream/1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 dev: true - /comma-separated-tokens/2.0.2: + /comma-separated-tokens@2.0.2: resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==} dev: false - /commander/10.0.0: + /commander@10.0.0: resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} engines: {node: '>=14'} dev: true - /commander/2.20.3: + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander/5.1.0: + /commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} dev: true - /commander/6.2.1: + /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: true - /commander/7.2.0: + /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} dev: false - /commander/8.3.0: + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: false - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} - dev: true - - /common-path-prefix/3.0.0: + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true - /common-tags/1.8.2: + /common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} - /compressible/2.0.18: + /compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /compression/1.7.4: + /compression@1.7.4: resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -6936,14 +7100,14 @@ packages: - supports-color dev: true - /compute-scroll-into-view/1.0.14: + /compute-scroll-into-view@1.0.14: resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} dev: false - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concordance/5.0.4: + /concordance@5.0.4: resolution: {integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==} engines: {node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14'} dependencies: @@ -6957,7 +7121,7 @@ packages: well-known-symbols: 2.0.0 dev: true - /concurrently/7.6.0: + /concurrently@7.6.0: resolution: {integrity: sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==} engines: {node: ^12.20.0 || ^14.13.0 || >=16.0.0} hasBin: true @@ -6965,7 +7129,7 @@ packages: chalk: 4.1.2 date-fns: 2.29.3 lodash: 4.17.21 - rxjs: 7.5.7 + rxjs: 7.8.0 shell-quote: 1.7.4 spawn-command: 0.0.2-1 supports-color: 8.1.1 @@ -6973,66 +7137,66 @@ packages: yargs: 17.6.2 dev: true - /constant-case/3.0.4: + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case: 2.0.2 - /content-disposition/0.5.2: + /content-disposition@0.5.2: resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} engines: {node: '>= 0.6'} dev: true - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: true - /content-type/1.0.4: + /content-type@1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /convert-to-spaces/2.0.1: + /convert-to-spaces@2.0.1: resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /cookie-signature/1.0.6: + /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie/0.5.0: + /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} - /copy-to-clipboard/3.3.1: + /copy-to-clipboard@3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} dependencies: toggle-selection: 1.0.6 dev: false - /copy-to-clipboard/3.3.2: + /copy-to-clipboard@3.3.2: resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} dependencies: toggle-selection: 1.0.6 dev: false - /core-js/3.26.0: + /core-js@3.26.0: resolution: {integrity: sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==} requiresBuild: true dev: false - /cors/2.8.5: + /cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} dependencies: @@ -7040,7 +7204,7 @@ packages: vary: 1.1.2 dev: false - /cosmiconfig/6.0.0: + /cosmiconfig@6.0.0: resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} engines: {node: '>=8'} dependencies: @@ -7051,7 +7215,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/7.1.0: + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: @@ -7062,7 +7226,7 @@ packages: yaml: 1.10.2 dev: false - /cosmiconfig/8.1.3: + /cosmiconfig@8.1.3: resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==} engines: {node: '>=14'} dependencies: @@ -7072,25 +7236,24 @@ packages: path-type: 4.0.0 dev: true - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - /cross-env/7.0.3: + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true dependencies: cross-spawn: 7.0.3 - /cross-fetch/3.1.5: + /cross-fetch@3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: node-fetch: 2.6.7 transitivePeerDependencies: - encoding - /cross-spawn-async/2.2.5: + /cross-spawn-async@2.2.5: resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} deprecated: cross-spawn no longer requires a build toolchain, use it instead dependencies: @@ -7098,7 +7261,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/5.1.0: + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -7106,7 +7269,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -7114,7 +7277,7 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /cross-undici-fetch/0.4.14: + /cross-undici-fetch@0.4.14: resolution: {integrity: sha512-CCep44A/baoO8kYJBIR1cRO/tRAk29xzb/tH3O85OtgwZGkL5I0tJZ47ccZdrnAJxrl5tlaYhAOx09fJXMcUqQ==} dependencies: abort-controller: 3.0.0 @@ -7128,35 +7291,35 @@ packages: - encoding dev: false - /crypt/0.0.2: + /crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} dev: true - /crypto-random-string/4.0.0: + /crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} dependencies: type-fest: 1.4.0 dev: true - /css-box-model/1.2.1: + /css-box-model@1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: tiny-invariant: 1.3.1 dev: false - /css-color-names/0.0.4: + /css-color-names@0.0.4: resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} dev: false - /css-in-js-utils/2.0.1: + /css-in-js-utils@2.0.1: resolution: {integrity: sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==} dependencies: hyphenate-style-name: 1.0.4 isobject: 3.0.1 dev: false - /css-tree/1.1.3: + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} dependencies: @@ -7164,55 +7327,55 @@ packages: source-map: 0.6.1 dev: false - /css-unit-converter/1.1.2: + /css-unit-converter@1.1.2: resolution: {integrity: sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==} dev: false - /css.escape/1.5.1: + /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} dev: true - /cssesc/3.0.0: + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true dev: false - /cssom/0.3.8: + /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} dev: true - /cssom/0.5.0: + /cssom@0.5.0: resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} dev: true - /cssstyle/2.3.0: + /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 dev: true - /csstype/3.0.9: + /csstype@3.0.9: resolution: {integrity: sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==} dev: false - /csstype/3.1.1: + /csstype@3.1.1: resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - /csv-generate/3.4.3: + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse/4.16.3: + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify/5.6.5: + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv/5.5.3: + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -7222,34 +7385,34 @@ packages: stream-transform: 2.1.3 dev: true - /currently-unhandled/0.4.1: + /currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} dependencies: array-find-index: 1.0.2 dev: true - /d3-array/1.2.4: + /d3-array@1.2.4: resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} dev: false - /d3-array/3.2.0: + /d3-array@3.2.0: resolution: {integrity: sha512-3yXFQo0oG3QCxbF06rMPFyGRMGJNS7NvsV1+2joOjbBE+9xvWQ8+GcMJAjRCzw06zQ3/arXeJgbPYcjUCuC+3g==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 dev: false - /d3-axis/1.0.12: + /d3-axis@1.0.12: resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==} dev: false - /d3-axis/3.0.0: + /d3-axis@3.0.0: resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} engines: {node: '>=12'} dev: false - /d3-brush/1.1.6: + /d3-brush@1.1.6: resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==} dependencies: d3-dispatch: 1.0.6 @@ -7259,7 +7422,7 @@ packages: d3-transition: 1.3.2 dev: false - /d3-brush/3.0.0: + /d3-brush@3.0.0: resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} engines: {node: '>=12'} dependencies: @@ -7267,69 +7430,69 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3-chord/1.0.6: + /d3-chord@1.0.6: resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==} dependencies: d3-array: 1.2.4 d3-path: 1.0.9 dev: false - /d3-chord/3.0.1: + /d3-chord@3.0.1: resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-collection/1.0.7: + /d3-collection@1.0.7: resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} dev: false - /d3-color/3.1.0: + /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} dev: false - /d3-contour/1.3.2: + /d3-contour@1.3.2: resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==} dependencies: d3-array: 1.2.4 dev: false - /d3-contour/4.0.0: + /d3-contour@4.0.0: resolution: {integrity: sha512-7aQo0QHUTu/Ko3cP9YK9yUTxtoDEiDGwnBHyLxG5M4vqlBkO/uixMRele3nfsfj6UXOcuReVpVXzAboGraYIJw==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-delaunay/6.0.2: + /d3-delaunay@6.0.2: resolution: {integrity: sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==} engines: {node: '>=12'} dependencies: delaunator: 5.0.0 dev: false - /d3-dispatch/1.0.6: + /d3-dispatch@1.0.6: resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} dev: false - /d3-dispatch/3.0.1: + /d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} dev: false - /d3-drag/1.2.5: + /d3-drag@1.2.5: resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==} dependencies: d3-dispatch: 1.0.6 d3-selection: 1.4.2 dev: false - /d3-drag/3.0.0: + /d3-drag@3.0.0: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} dependencies: @@ -7337,7 +7500,7 @@ packages: d3-selection: 3.0.0 dev: false - /d3-dsv/1.2.0: + /d3-dsv@1.2.0: resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} hasBin: true dependencies: @@ -7346,7 +7509,7 @@ packages: rw: 1.3.3 dev: false - /d3-dsv/3.0.1: + /d3-dsv@3.0.1: resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} engines: {node: '>=12'} hasBin: true @@ -7356,29 +7519,29 @@ packages: rw: 1.3.3 dev: false - /d3-ease/1.0.7: + /d3-ease@1.0.7: resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} dev: false - /d3-ease/3.0.1: + /d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} dev: false - /d3-fetch/1.2.0: + /d3-fetch@1.2.0: resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==} dependencies: d3-dsv: 1.2.0 dev: false - /d3-fetch/3.0.1: + /d3-fetch@3.0.1: resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} engines: {node: '>=12'} dependencies: d3-dsv: 3.0.1 dev: false - /d3-force/1.2.1: + /d3-force@1.2.1: resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} dependencies: d3-collection: 1.0.7 @@ -7387,7 +7550,7 @@ packages: d3-timer: 1.0.10 dev: false - /d3-force/3.0.0: + /d3-force@3.0.0: resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} engines: {node: '>=12'} dependencies: @@ -7396,94 +7559,94 @@ packages: d3-timer: 3.0.1 dev: false - /d3-format/1.4.5: + /d3-format@1.4.5: resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} dev: false - /d3-format/3.1.0: + /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} dev: false - /d3-geo/1.12.1: + /d3-geo@1.12.1: resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} dependencies: d3-array: 1.2.4 dev: false - /d3-geo/3.0.1: + /d3-geo@3.0.1: resolution: {integrity: sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-hierarchy/1.1.9: + /d3-hierarchy@1.1.9: resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} dev: false - /d3-hierarchy/3.1.2: + /d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} dev: false - /d3-interpolate/1.4.0: + /d3-interpolate@1.4.0: resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} dependencies: d3-color: 3.1.0 dev: false - /d3-interpolate/3.0.1: + /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 dev: false - /d3-path/1.0.9: + /d3-path@1.0.9: resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} dev: false - /d3-path/3.0.1: + /d3-path@3.0.1: resolution: {integrity: sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==} engines: {node: '>=12'} dev: false - /d3-polygon/1.0.6: + /d3-polygon@1.0.6: resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==} dev: false - /d3-polygon/3.0.1: + /d3-polygon@3.0.1: resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} engines: {node: '>=12'} dev: false - /d3-quadtree/1.0.7: + /d3-quadtree@1.0.7: resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} dev: false - /d3-quadtree/3.0.1: + /d3-quadtree@3.0.1: resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} engines: {node: '>=12'} dev: false - /d3-random/1.1.2: + /d3-random@1.1.2: resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==} dev: false - /d3-random/3.0.1: + /d3-random@3.0.1: resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} engines: {node: '>=12'} dev: false - /d3-scale-chromatic/1.5.0: + /d3-scale-chromatic@1.5.0: resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==} dependencies: d3-color: 3.1.0 d3-interpolate: 1.4.0 dev: false - /d3-scale-chromatic/3.0.0: + /d3-scale-chromatic@3.0.0: resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==} engines: {node: '>=12'} dependencies: @@ -7491,7 +7654,7 @@ packages: d3-interpolate: 3.0.1 dev: false - /d3-scale/2.2.2: + /d3-scale@2.2.2: resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} dependencies: d3-array: 1.2.4 @@ -7502,7 +7665,7 @@ packages: d3-time-format: 2.3.0 dev: false - /d3-scale/4.0.2: + /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} engines: {node: '>=12'} dependencies: @@ -7513,62 +7676,62 @@ packages: d3-time-format: 4.1.0 dev: false - /d3-selection/1.4.2: + /d3-selection@1.4.2: resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==} dev: false - /d3-selection/3.0.0: + /d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} dev: false - /d3-shape/1.3.7: + /d3-shape@1.3.7: resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} dependencies: d3-path: 1.0.9 dev: false - /d3-shape/3.1.0: + /d3-shape@3.1.0: resolution: {integrity: sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==} engines: {node: '>=12'} dependencies: d3-path: 3.0.1 dev: false - /d3-time-format/2.3.0: + /d3-time-format@2.3.0: resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} dependencies: d3-time: 1.1.0 dev: false - /d3-time-format/4.1.0: + /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.0.0 dev: false - /d3-time/1.1.0: + /d3-time@1.1.0: resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} dev: false - /d3-time/3.0.0: + /d3-time@3.0.0: resolution: {integrity: sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==} engines: {node: '>=12'} dependencies: d3-array: 3.2.0 dev: false - /d3-timer/1.0.10: + /d3-timer@1.0.10: resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} dev: false - /d3-timer/3.0.1: + /d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} dev: false - /d3-transition/1.3.2: + /d3-transition@1.3.2: resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==} dependencies: d3-color: 3.1.0 @@ -7579,7 +7742,7 @@ packages: d3-timer: 1.0.10 dev: false - /d3-transition/3.0.1_d3-selection@3.0.0: + /d3-transition@3.0.1(d3-selection@3.0.0): resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} engines: {node: '>=12'} peerDependencies: @@ -7593,11 +7756,11 @@ packages: d3-timer: 3.0.1 dev: false - /d3-voronoi/1.1.4: + /d3-voronoi@1.1.4: resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==} dev: false - /d3-zoom/1.8.3: + /d3-zoom@1.8.3: resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==} dependencies: d3-dispatch: 1.0.6 @@ -7607,7 +7770,7 @@ packages: d3-transition: 1.3.2 dev: false - /d3-zoom/3.0.0: + /d3-zoom@3.0.0: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} dependencies: @@ -7615,10 +7778,10 @@ packages: d3-drag: 3.0.0 d3-interpolate: 3.0.1 d3-selection: 3.0.0 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) dev: false - /d3/5.16.0: + /d3@5.16.0: resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==} dependencies: d3-array: 1.2.4 @@ -7654,7 +7817,7 @@ packages: d3-zoom: 1.8.3 dev: false - /d3/7.6.1: + /d3@7.6.1: resolution: {integrity: sha512-txMTdIHFbcpLx+8a0IFhZsbp+PfBBPt8yfbmukZTQFroKuFqIwqswF0qE5JXWefylaAVpSXFoKm3yP+jpNLFLw==} engines: {node: '>=12'} dependencies: @@ -7686,11 +7849,11 @@ packages: d3-time: 3.0.0 d3-time-format: 4.1.0 d3-timer: 3.0.1 - d3-transition: 3.0.1_d3-selection@3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 dev: false - /dagre-d3/0.6.4: + /dagre-d3@0.6.4: resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==} dependencies: d3: 5.16.0 @@ -7699,19 +7862,19 @@ packages: lodash: 4.17.21 dev: false - /dagre/0.8.5: + /dagre@0.8.5: resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} dependencies: graphlib: 2.1.8 lodash: 4.17.21 dev: false - /data-uri-to-buffer/4.0.0: + /data-uri-to-buffer@4.0.0: resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} engines: {node: '>= 12'} dev: true - /data-urls/3.0.2: + /data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} dependencies: @@ -7720,21 +7883,21 @@ packages: whatwg-url: 11.0.0 dev: true - /dataloader/2.1.0: + /dataloader@2.1.0: resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} - /date-fns/2.29.3: + /date-fns@2.29.3: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} - /date-time/3.1.0: + /date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} dependencies: time-zone: 1.0.0 dev: true - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -7745,7 +7908,7 @@ packages: ms: 2.0.0 dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -7756,7 +7919,7 @@ packages: dependencies: ms: 2.1.2 - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -7764,29 +7927,29 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - /decamelize/6.0.0: + /decamelize@6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /decimal.js/10.4.2: + /decimal.js@10.4.2: resolution: {integrity: sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==} dev: true - /decode-named-character-reference/1.0.2: + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: character-entities: 2.0.2 dev: false - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - /deep-equal/2.0.5: + /deep-equal@2.0.5: resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} dependencies: call-bind: 1.0.2 @@ -7806,20 +7969,20 @@ packages: which-typed-array: 1.1.8 dev: true - /deep-extend/0.6.0: + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} dev: true - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} - /default-browser-id/3.0.0: + /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} engines: {node: '>=12'} dependencies: @@ -7827,7 +7990,7 @@ packages: untildify: 4.0.0 dev: true - /default-browser/3.1.0: + /default-browser@3.1.0: resolution: {integrity: sha512-SOHecvSoairSAWxEHP/0qcsld/KtI3DargfEuELQDyHIYmS2EMgdGhHOTC1GxaYr+NLUV6kDroeiSBfnNHnn8w==} engines: {node: '>=12'} dependencies: @@ -7837,22 +8000,22 @@ packages: xdg-default-browser: 2.1.0 dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - /define-lazy-prop/3.0.0: + /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} dev: true - /define-properties/1.1.4: + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: @@ -7860,11 +8023,11 @@ packages: object-keys: 1.1.1 dev: true - /defined/1.0.1: + /defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: false - /del/7.0.0: + /del@7.0.0: resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} engines: {node: '>=14.16'} dependencies: @@ -7878,49 +8041,49 @@ packages: slash: 4.0.0 dev: true - /delaunator/5.0.0: + /delaunator@5.0.0: resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==} dependencies: robust-predicates: 3.0.1 dev: false - /delayed-stream/1.0.0: + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - /dependency-graph/0.11.0: + /dependency-graph@0.11.0: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} - /dequal/2.0.3: + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} dev: false - /destroy/1.2.0: + /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - /detect-node-es/1.1.0: + /detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /detective/5.2.1: + /detective@5.2.1: resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} engines: {node: '>=0.8.0'} hasBin: true @@ -7930,135 +8093,135 @@ packages: minimist: 1.2.7 dev: false - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: false - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - dev: true - /diff/5.1.0: + /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} dev: false - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - /dlv/1.1.3: + /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: false - /dom-accessibility-api/0.5.14: + /dom-accessibility-api@0.5.14: resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} dev: true - /domexception/4.0.0: + /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead dependencies: webidl-conversions: 7.0.0 dev: true - /dompurify/2.4.0: + /dompurify@2.4.0: resolution: {integrity: sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA==} dev: false - /dot-case/3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.5.0 - /dotenv/16.0.3: + /dotenv@16.0.3: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} dev: false - /dset/3.1.2: + /dset@3.1.2: resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==} engines: {node: '>=4'} dev: false - /duplexer/0.1.2: + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /eastasianwidth/0.2.0: + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium/1.4.284: + /electron-to-chromium@1.4.284: resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} - /emittery/1.0.1: + /emittery@1.0.1: resolution: {integrity: sha512-2ID6FdrMD9KDLldGesP6317G78K7km/kMcwItRtVFva7I/cSEOIaLpewaUb+YLXVwdAp3Ctfxh/V5zIl1sj7dQ==} engines: {node: '>=14.16'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - /emoji-regex/9.2.2: + /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /emoticon/4.0.1: + /emoticon@4.0.1: resolution: {integrity: sha512-dqx7eA9YaqyvYtUhJwT4rC1HIp82j5ybS1/vQ42ur+jBe17dJMwZE4+gvL1XadSFfxaPFFGt3Xsw+Y8akThDlw==} dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/4.4.0: + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - /error-stack-parser/2.1.4: + /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: stackframe: 1.3.4 dev: false - /es-abstract/1.20.4: + /es-abstract@1.20.4: resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} engines: {node: '>= 0.4'} dependencies: @@ -8088,7 +8251,7 @@ packages: unbox-primitive: 1.0.2 dev: true - /es-get-iterator/1.1.2: + /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} dependencies: call-bind: 1.0.2 @@ -8101,13 +8264,13 @@ packages: isarray: 2.0.5 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -8116,7 +8279,7 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild/0.17.12: + /esbuild@0.17.12: resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} engines: {node: '>=12'} hasBin: true @@ -8145,32 +8308,32 @@ packages: '@esbuild/win32-ia32': 0.17.12 '@esbuild/win32-x64': 0.17.12 - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: false - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - /escodegen/2.0.0: + /escodegen@2.0.0: resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} engines: {node: '>=6.0'} hasBin: true @@ -8183,23 +8346,23 @@ packages: source-map: 0.6.1 dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true - /estree-util-attach-comments/2.1.0: + /estree-util-attach-comments@2.1.0: resolution: {integrity: sha512-rJz6I4L0GaXYtHpoMScgDIwM0/Vwbu5shbMeER596rB2D1EWF6+Gj0e0UKzJPZrpoOc87+Q2kgVFHfjAymIqmw==} dependencies: '@types/estree': 1.0.0 dev: false - /estree-util-build-jsx/2.2.0: + /estree-util-build-jsx@2.2.0: resolution: {integrity: sha512-apsfRxF9uLrqosApvHVtYZjISPvTJ+lBiIydpC+9wE6cF6ssbhnjyQLqaIjgzGxvC2Hbmec1M7g91PoBayYoQQ==} dependencies: '@types/estree-jsx': 1.0.0 @@ -8207,11 +8370,11 @@ packages: estree-walker: 3.0.1 dev: false - /estree-util-is-identifier-name/2.0.1: + /estree-util-is-identifier-name@2.0.1: resolution: {integrity: sha512-rxZj1GkQhY4x1j/CSnybK9cGuMFQYFPLq0iNyopqf14aOVLFtMv7Esika+ObJWPWiOHuMOAHz3YkWoLYYRnzWQ==} dev: false - /estree-util-to-js/1.1.0: + /estree-util-to-js@1.1.0: resolution: {integrity: sha512-490lbfCcpLk+ofK6HCgqDfYs4KAfq6QVvDw3+Bm1YoKRgiOjKiKYGAVQE1uwh7zVxBgWhqp4FDtp5SqunpUk1A==} dependencies: '@types/estree-jsx': 1.0.0 @@ -8219,31 +8382,31 @@ packages: source-map: 0.7.4 dev: false - /estree-util-visit/1.2.0: + /estree-util-visit@1.2.0: resolution: {integrity: sha512-wdsoqhWueuJKsh5hqLw3j8lwFqNStm92VcwtAOAny8g/KS/l5Y8RISjR4k5W6skCj3Nirag/WUCMS0Nfy3sgsg==} dependencies: '@types/estree-jsx': 1.0.0 '@types/unist': 2.0.6 dev: false - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - /estree-walker/3.0.1: + /estree-walker@3.0.1: resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} dev: false - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - /event-stream/3.3.4: + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: duplexer: 0.1.2 @@ -8255,18 +8418,18 @@ packages: through: 2.3.8 dev: true - /event-target-shim/5.0.1: + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - /eventemitter3/4.0.7: + /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - /events/3.3.0: + /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - /execa/0.2.2: + /execa@0.2.2: resolution: {integrity: sha512-zmBGzLd3nhA/NB9P7VLoceAO6vyYPftvl809Vjwe5U2fYI9tYWbeKqP3wZlAw9WS+znnkogf/bhSU+Gcn2NbkQ==} engines: {node: '>=0.12'} dependencies: @@ -8277,7 +8440,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/4.1.0: + /execa@4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} dependencies: @@ -8292,7 +8455,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -8306,11 +8469,11 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -8320,7 +8483,7 @@ packages: jest-message-util: 29.5.0 jest-util: 29.5.0 - /express/4.18.2: + /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} dependencies: @@ -8359,22 +8522,22 @@ packages: - supports-color dev: true - /extend-shallow/2.0.1: + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} dependencies: is-extendable: 0.1.1 dev: false - /extend/3.0.2: + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false - /extendable-error/0.1.7: + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -8383,24 +8546,24 @@ packages: tmp: 0.0.33 dev: true - /extract-files/13.0.0: + /extract-files@13.0.0: resolution: {integrity: sha512-FXD+2Tsr8Iqtm3QZy1Zmwscca7Jx3mMC5Crr+sEP1I303Jy1CYMuYCm7hRTplFNg3XdUavErkxnTzpaqdSoi6g==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} dependencies: is-plain-obj: 4.1.0 dev: false - /fast-decode-uri-component/1.0.1: + /fast-decode-uri-component@1.0.1: resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-diff/1.2.0: + /fast-diff@1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -8410,53 +8573,53 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - /fast-json-stringify/5.4.0: + /fast-json-stringify@5.4.0: resolution: {integrity: sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==} dependencies: '@fastify/deepmerge': 1.1.0 ajv: 8.11.0 - ajv-formats: 2.1.1 + ajv-formats: 2.1.1(ajv@8.11.0) fast-deep-equal: 3.1.3 fast-uri: 2.1.0 rfdc: 1.3.0 - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-querystring/1.0.0: + /fast-querystring@1.0.0: resolution: {integrity: sha512-3LQi62IhQoDlmt4ULCYmh17vRO2EtS7hTSsG4WwoKWgV7GLMKBOecEh+aiavASnLx8I2y89OD33AGLo0ccRhzA==} dependencies: fast-decode-uri-component: 1.0.1 - /fast-redact/3.1.2: + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} - /fast-shallow-equal/1.0.0: + /fast-shallow-equal@1.0.0: resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} dev: false - /fast-uri/2.1.0: + /fast-uri@2.1.0: resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==} - /fast-url-parser/1.1.3: + /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: punycode: 1.4.1 dev: true - /fastest-stable-stringify/2.0.2: + /fastest-stable-stringify@2.0.2: resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} dev: false - /fastify-plugin/4.3.0: + /fastify-plugin@4.3.0: resolution: {integrity: sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==} - /fastify/4.11.0: + /fastify@4.11.0: resolution: {integrity: sha512-JteZ8pjEqd+6n+azQnQfSJV8MUMxAmxbvC2Dx/Mybj039Lf/u3kda9Kq84uy/huCpqCzZoyHIZS5JFGF3wLztw==} dependencies: '@fastify/ajv-compiler': 3.4.0 @@ -8477,20 +8640,20 @@ packages: transitivePeerDependencies: - supports-color - /fastq/1.13.0: + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 - /fbjs-css-vars/1.0.2: + /fbjs-css-vars@1.0.2: resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - /fbjs/3.0.4: + /fbjs@3.0.4: resolution: {integrity: sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==} dependencies: cross-fetch: 3.1.5 @@ -8503,7 +8666,7 @@ packages: transitivePeerDependencies: - encoding - /fetch-blob/3.2.0: + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} dependencies: @@ -8511,7 +8674,7 @@ packages: web-streams-polyfill: 3.2.1 dev: true - /figures/5.0.0: + /figures@5.0.0: resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} dependencies: @@ -8519,7 +8682,7 @@ packages: is-unicode-supported: 1.3.0 dev: true - /file-type/18.2.1: + /file-type@18.2.1: resolution: {integrity: sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==} engines: {node: '>=14.16'} dependencies: @@ -8528,13 +8691,13 @@ packages: token-types: 5.0.1 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /finalhandler/1.2.0: + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} dependencies: @@ -8549,7 +8712,7 @@ packages: - supports-color dev: true - /find-my-way/7.3.1: + /find-my-way@7.3.1: resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} engines: {node: '>=14'} dependencies: @@ -8557,18 +8720,18 @@ packages: fast-querystring: 1.0.0 safe-regex2: 2.0.0 - /find-root/1.1.0: + /find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -8576,7 +8739,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/6.3.0: + /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8584,21 +8747,21 @@ packages: path-exists: 5.0.0 dev: true - /find-yarn-workspace-root2/1.2.16: + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /focus-lock/0.9.2: + /focus-lock@0.9.2: resolution: {integrity: sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ==} engines: {node: '>=10'} dependencies: tslib: 2.5.0 dev: false - /focus-trap-react/9.0.2_sfoxds7t5ydpegc3knd667wn6m: + /focus-trap-react@9.0.2(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-ZwhO5by6KG5r3dy48Lk00A1/0zNYw1Z3RZTN6O6kgAPsWFcwTFszOcQ1dLSfM8pIxpS/ttc7wTttJowjVT3jpg==} peerDependencies: prop-types: ^15.8.1 @@ -8610,17 +8773,17 @@ packages: dependencies: focus-trap: 6.9.4 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) tabbable: 5.3.3 dev: false - /focus-trap/6.9.4: + /focus-trap@6.9.4: resolution: {integrity: sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw==} dependencies: tabbable: 5.3.3 dev: false - /follow-redirects/1.15.2: + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} peerDependencies: @@ -8630,13 +8793,13 @@ packages: optional: true dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /foreground-child/2.0.0: + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} dependencies: @@ -8644,11 +8807,11 @@ packages: signal-exit: 3.0.7 dev: true - /form-data-encoder/1.7.2: + /form-data-encoder@1.7.2: resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} dev: false - /form-data/4.0.0: + /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} dependencies: @@ -8657,7 +8820,7 @@ packages: mime-types: 2.1.35 dev: true - /formdata-node/4.4.1: + /formdata-node@4.4.1: resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} engines: {node: '>= 12.20'} dependencies: @@ -8665,22 +8828,22 @@ packages: web-streams-polyfill: 4.0.0-beta.3 dev: false - /formdata-polyfill/4.0.10: + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 dev: true - /forwarded/0.2.0: + /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} - /fraction.js/4.2.0: + /fraction.js@4.2.0: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: false - /framer-motion/6.5.1_sfoxds7t5ydpegc3knd667wn6m: + /framer-motion@6.5.1(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0' @@ -8691,39 +8854,39 @@ packages: hey-listen: 1.0.8 popmotion: 11.0.3 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) style-value-types: 5.0.0 - tslib: 2.4.1 + tslib: 2.5.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false - /framesync/5.3.0: + /framesync@5.3.0: resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} dependencies: tslib: 2.5.0 dev: false - /framesync/6.0.1: + /framesync@6.0.1: resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} dependencies: tslib: 2.5.0 dev: false - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - /from/0.1.7: + /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: true - /fs-capacitor/8.0.0: + /fs-capacitor@8.0.0: resolution: {integrity: sha512-+Lk6iSKajdGw+7XYxUkwIzreJ2G1JFlYOdnKJv5PzwFLVsoJYBpCuS7WPIUSNT1IbQaEWT1nhYU63Ud03DyzLA==} engines: {node: ^14.17.0 || >=16.0.0} - /fs-extra/10.1.0: + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: @@ -8732,7 +8895,7 @@ packages: universalify: 2.0.0 dev: false - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8741,7 +8904,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -8750,20 +8913,28 @@ packages: universalify: 0.1.2 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -8773,19 +8944,19 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -8793,32 +8964,32 @@ packages: has-symbols: 1.0.3 dev: true - /get-nonce/1.0.1: + /get-nonce@1.0.1: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} dev: false - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - /get-stdin/9.0.0: + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} dev: true - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -8826,24 +8997,24 @@ packages: get-intrinsic: 1.1.3 dev: true - /github-slugger/1.4.0: + /github-slugger@1.4.0: resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: false - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -8853,7 +9024,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob/9.2.1: + /glob@9.2.1: resolution: {integrity: sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: @@ -8863,11 +9034,11 @@ packages: path-scurry: 1.6.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -8878,7 +9049,7 @@ packages: merge2: 1.4.1 slash: 3.0.0 - /globby/13.1.1: + /globby@13.1.1: resolution: {integrity: sha512-XMzoDZbGZ37tufiv7g0N4F/zp3zkwdFtVbV3EHsVl1KQr4RPLfNoT068/97RPshz2J5xYNEjLKKBKaGHifBd3Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8889,7 +9060,7 @@ packages: slash: 4.0.0 dev: false - /globby/13.1.3: + /globby@13.1.3: resolution: {integrity: sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -8900,20 +9071,20 @@ packages: slash: 4.0.0 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /graphlib/2.1.8: + /graphlib@2.1.8: resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} dependencies: lodash: 4.17.21 dev: false - /graphql-ez/0.16.0_cqyb4buyc4habqgvcucexr22xm: + /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@16.6.0): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -8924,14 +9095,14 @@ packages: dependencies: '@envelop/core': 3.0.4 '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0_cqyb4buyc4habqgvcucexr22xm - '@pablosz/graphql-helix': 2.0.3_graphql@16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@pablosz/graphql-helix': 2.0.3(graphql@16.6.0) graphql: 16.6.0 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' - /graphql-ez/0.16.0_ddkhnomv6qakhz4wmciki3kakm: + /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -8942,15 +9113,15 @@ packages: dependencies: '@envelop/core': 3.0.4 '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0_ddkhnomv6qakhz4wmciki3kakm - '@pablosz/graphql-helix': 2.0.3_graphql@17.0.0-alpha.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@17.0.0-alpha.2) + '@pablosz/graphql-helix': 2.0.3(graphql@17.0.0-alpha.2) graphql: 17.0.0-alpha.2 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' dev: true - /graphql-tag/2.12.6_graphql@16.6.0: + /graphql-tag@2.12.6(graphql@16.6.0): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: @@ -8959,7 +9130,7 @@ packages: graphql: 16.6.0 tslib: 2.5.0 - /graphql-upload/16.0.2_graphql@16.6.0: + /graphql-upload@16.0.2(graphql@16.6.0): resolution: {integrity: sha512-enwIkZqUELdNH9lrjHlTNfj7gLitSa0EAX4TNXZtg2frnmQzPhpjH0l+6K7ft274fhoRCIcz8SKiNRJDf/cG4Q==} engines: {node: ^14.17.0 || ^16.0.0 || >= 18.0.0} peerDependencies: @@ -8982,7 +9153,7 @@ packages: object-path: 0.11.8 dev: false - /graphql-ws/5.11.2_graphql@16.6.0: + /graphql-ws@5.11.2(graphql@16.6.0): resolution: {integrity: sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==} engines: {node: '>=10'} peerDependencies: @@ -8990,16 +9161,16 @@ packages: dependencies: graphql: 16.6.0 - /graphql/16.6.0: + /graphql@16.6.0: resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - /graphql/17.0.0-alpha.2: + /graphql@17.0.0-alpha.2: resolution: {integrity: sha512-aRAd/BQ5hSO0+l7x+sHBfJVUp2JUOjPTE/iwJ3BhtYNH/MC7n4gjlZbKvnBVFZZAczyMS3vezS4teEZivoqIzw==} engines: {node: ^14.19.0 || ^16.10.0 || >=18.0.0} dev: true - /gray-matter/4.0.3: + /gray-matter@4.0.3: resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} engines: {node: '>=6.0'} dependencies: @@ -9009,71 +9180,71 @@ packages: strip-bom-string: 1.0.0 dev: false - /gzip-size/6.0.0: + /gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} dependencies: duplexer: 0.1.2 dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /hast-util-has-property/2.0.0: + /hast-util-has-property@2.0.0: resolution: {integrity: sha512-4Qf++8o5v14us4Muv3HRj+Er6wTNGA/N9uCaZMty4JWvyFKLdhULrv4KE1b65AthsSO9TXSZnjuxS8ecIyhb0w==} dev: false - /hast-util-heading-rank/2.1.0: + /hast-util-heading-rank@2.1.0: resolution: {integrity: sha512-w+Rw20Q/iWp2Bcnr6uTrYU6/ftZLbHKhvc8nM26VIWpDqDMlku2iXUVTeOlsdoih/UKQhY7PHQ+vZ0Aqq8bxtQ==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-parse-selector/3.1.0: + /hast-util-parse-selector@3.1.0: resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-to-estree/2.1.0: + /hast-util-to-estree@2.1.0: resolution: {integrity: sha512-Vwch1etMRmm89xGgz+voWXvVHba2iiMdGMKmaMfYt35rbVtFDq8JNwwAIvi8zHMkO6Gvqo9oTMwJTmzVRfXh4g==} dependencies: '@types/estree': 1.0.0 @@ -9095,17 +9266,17 @@ packages: - supports-color dev: false - /hast-util-to-string/2.0.0: + /hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: '@types/hast': 2.3.4 dev: false - /hast-util-whitespace/2.0.0: + /hast-util-whitespace@2.0.0: resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==} dev: false - /hastscript/7.1.0: + /hastscript@7.1.0: resolution: {integrity: sha512-uBjaTTLN0MkCZxY/R2fWUOcu7FRtUVzKRO5P/RAfgsu3yFiMB1JWCO4AjeVkgHxAira1f2UecHK5WfS9QurlWA==} dependencies: '@types/hast': 2.3.4 @@ -9115,78 +9286,78 @@ packages: space-separated-tokens: 2.0.1 dev: false - /header-case/2.0.4: + /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 tslib: 2.5.0 - /hex-color-regex/1.1.0: + /hex-color-regex@1.1.0: resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} dev: false - /hey-listen/1.0.8: + /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false - /hoist-non-react-statics/3.3.2: + /hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} dependencies: react-is: 16.13.1 dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /hosted-git-info/5.2.1: + /hosted-git-info@5.2.1: resolution: {integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: lru-cache: 7.18.1 dev: true - /hsl-regex/1.0.0: + /hsl-regex@1.0.0: resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} dev: false - /hsla-regex/1.0.0: + /hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} dev: false - /htm/3.1.1: + /htm@3.1.1: resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} dev: false - /html-encoding-sniffer/3.0.0: + /html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} dependencies: whatwg-encoding: 2.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - /html-parse-stringify/3.0.1: + /html-parse-stringify@3.0.1: resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} dependencies: void-elements: 3.1.0 dev: false - /html-tags/3.2.0: + /html-tags@3.2.0: resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} engines: {node: '>=8'} dev: false - /http-errors/2.0.0: + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} dependencies: @@ -9196,7 +9367,7 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-proxy-agent/5.0.0: + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} dependencies: @@ -9207,7 +9378,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -9217,87 +9388,87 @@ packages: - supports-color dev: true - /human-id/1.0.2: + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals/1.1.1: + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - /husky/8.0.3: + /husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} hasBin: true dev: true - /hyphenate-style-name/1.0.4: + /hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} dev: false - /i18next-fs-backend/2.1.1: + /i18next-fs-backend@2.1.1: resolution: {integrity: sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==} dev: false - /i18next/22.4.13: + /i18next@22.4.13: resolution: {integrity: sha512-GX7flMHRRqQA0I1yGLmaZ4Hwt1JfLqagk8QPDPZsqekbKtXsuIngSVWM/s3SLgNkrEXjA+0sMGNuOEkkmyqmWg==} dependencies: '@babel/runtime': 7.20.13 dev: false - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-by-default/2.1.0: + /ignore-by-default@2.1.0: resolution: {integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==} engines: {node: '>=10 <11 || >=12 <13 || >=14'} dev: true - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} - /immediate/3.0.6: + /immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} dev: false - /immer/9.0.12: + /immer@9.0.12: resolution: {integrity: sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA==} dev: false - /immutable/3.7.6: + /immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-from/4.0.0: + /import-from@4.0.0: resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} engines: {node: '>=12.2'} - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -9305,44 +9476,44 @@ packages: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /indent-string/5.0.0: + /indent-string@5.0.0: resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /inline-style-parser/0.1.1: + /inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false - /inline-style-prefixer/6.0.1: + /inline-style-prefixer@6.0.1: resolution: {integrity: sha512-AsqazZ8KcRzJ9YPN1wMH2aNM7lkWQ8tSPrW5uDk1ziYwiAPWSZnUsC7lfZq+BDqLqz0B4Pho5wscWcJzVvRzDQ==} dependencies: css-in-js-utils: 2.0.1 dev: false - /internal-slot/1.0.3: + /internal-slot@1.0.3: resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} engines: {node: '>= 0.4'} dependencies: @@ -9351,44 +9522,44 @@ packages: side-channel: 1.0.4 dev: true - /internmap/2.0.3: + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: false - /invariant/2.2.4: + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - /ipaddr.js/1.9.1: + /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - /irregular-plurals/3.3.0: + /irregular-plurals@3.3.0: resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} engines: {node: '>=8'} dev: true - /is-absolute/1.0.0: + /is-absolute@1.0.0: resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} dependencies: is-relative: 1.0.0 is-windows: 1.0.2 - /is-alphabetical/2.0.1: + /is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} dev: false - /is-alphanumerical/2.0.1: + /is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} dependencies: is-alphabetical: 2.0.1 is-decimal: 2.0.1 dev: false - /is-arguments/1.1.1: + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: @@ -9396,26 +9567,26 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - /is-arrayish/0.3.2: + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -9423,24 +9594,24 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer/2.0.5: + /is-buffer@2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} dev: false - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.7.1 dev: true - /is-color-stop/1.1.0: + /is-color-stop@1.1.0: resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} dependencies: css-color-names: 0.0.4 @@ -9451,70 +9622,70 @@ packages: rgba-regex: 1.0.0 dev: false - /is-core-module/2.11.0: + /is-core-module@2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-decimal/2.0.1: + /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true - /is-docker/3.0.0: + /is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true dev: true - /is-error/2.2.2: + /is-error@2.2.2: resolution: {integrity: sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==} dev: true - /is-extendable/0.1.1: + /is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} dev: false - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-fullwidth-code-point/4.0.0: + /is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - /is-hexadecimal/2.0.1: + /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false - /is-inside-container/1.0.0: + /is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -9522,81 +9693,81 @@ packages: is-docker: 3.0.0 dev: true - /is-lower-case/2.0.2: + /is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} dependencies: tslib: 2.5.0 - /is-map/2.0.2: + /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd/3.0.0: + /is-path-cwd@3.0.0: resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-path-inside/4.0.0: + /is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} engines: {node: '>=12'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: false - /is-plain-obj/4.1.0: + /is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} dev: false - /is-plain-object/5.0.0: + /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} engines: {node: '>=0.10.0'} dev: true - /is-port-reachable/4.0.0: + /is-port-reachable@4.0.0: resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-potential-custom-element-name/1.0.1: + /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true - /is-promise/4.0.0: + /is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} dev: true - /is-reference/3.0.0: + /is-reference@3.0.0: resolution: {integrity: sha512-Eo1W3wUoHWoCoVM4GVl/a+K0IgiqE5aIo4kJABFyMum1ZORlPkC+UC357sSQUL5w5QCE5kCC9upl75b7+7CY/Q==} dependencies: '@types/estree': 1.0.0 dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -9604,53 +9775,53 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-relative/1.0.0: + /is-relative@1.0.0: resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} engines: {node: '>=0.10.0'} dependencies: is-unc-path: 1.0.0 - /is-set/2.0.2: + /is-set@2.0.2: resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-typed-array/1.1.9: + /is-typed-array@1.1.9: resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} engines: {node: '>= 0.4'} dependencies: @@ -9661,88 +9832,88 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-unc-path/1.0.0: + /is-unc-path@1.0.0: resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} dependencies: unc-path-regex: 0.1.2 - /is-unicode-supported/1.3.0: + /is-unicode-supported@1.3.0: resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} dev: true - /is-upper-case/2.0.2: + /is-upper-case@2.0.2: resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} dependencies: tslib: 2.5.0 - /is-weakmap/2.0.1: + /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-weakset/2.0.2: + /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 dev: true - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isobject/3.0.1: + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} dev: false - /isomorphic-unfetch/4.0.2: + /isomorphic-unfetch@4.0.2: resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} dependencies: node-fetch: 3.3.0 unfetch: 5.0.0 dev: true - /isomorphic-ws/4.0.1_ws@8.11.0: + /isomorphic-ws@4.0.1(ws@8.13.0): resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} peerDependencies: ws: '*' dependencies: - ws: 8.11.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /isomorphic-ws/5.0.0_ws@8.13.0: + /isomorphic-ws@5.0.0(ws@8.13.0): resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' dependencies: - ws: 8.13.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) dev: false - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -9754,7 +9925,7 @@ packages: transitivePeerDependencies: - supports-color - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -9762,7 +9933,7 @@ packages: make-dir: 3.1.0 supports-color: 7.2.0 - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -9772,24 +9943,24 @@ packages: transitivePeerDependencies: - supports-color - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - /iterall/1.3.0: + /iterall@1.3.0: resolution: {integrity: sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==} - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9816,7 +9987,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli/29.5.0_757mb262zsxkcnuknwfdsckmku: + /jest-cli@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9826,14 +9997,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.5.0_757mb262zsxkcnuknwfdsckmku + jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -9842,76 +10013,8 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - - /jest-cli/29.5.0_@types+node@18.15.5: - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.15.5 - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - - /jest-config/29.5.0_757mb262zsxkcnuknwfdsckmku: - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.19.6 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - babel-jest: 29.5.0_@babel+core@7.19.6 - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1_345kigqis4fipgyy5xb3ndshmq - transitivePeerDependencies: - - supports-color - dev: true - /jest-config/29.5.0_@types+node@18.15.5: + /jest-config@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9927,7 +10030,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.15.5 - babel-jest: 29.5.0_@babel+core@7.19.6 + babel-jest: 29.5.0(@babel/core@7.19.6) chalk: 4.1.2 ci-info: 3.7.1 deepmerge: 4.2.2 @@ -9946,10 +10049,11 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) transitivePeerDependencies: - supports-color - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9958,13 +10062,13 @@ packages: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -9974,7 +10078,7 @@ packages: jest-util: 29.5.0 pretty-format: 29.5.0 - /jest-environment-jsdom/29.5.0: + /jest-environment-jsdom@29.5.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9990,14 +10094,14 @@ packages: '@types/node': 18.15.5 jest-mock: 29.5.0 jest-util: 29.5.0 - jsdom: 20.0.2 + jsdom: 20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10008,11 +10112,11 @@ packages: jest-mock: 29.5.0 jest-util: 29.5.0 - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10028,16 +10132,16 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10046,7 +10150,7 @@ packages: jest-get-type: 29.4.3 pretty-format: 29.5.0 - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10060,7 +10164,7 @@ packages: slash: 3.0.0 stack-utils: 2.0.6 - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10068,7 +10172,7 @@ packages: '@types/node': 18.15.5 jest-util: 29.5.0 - /jest-pnp-resolver/1.2.2_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} engines: {node: '>=6'} peerDependencies: @@ -10079,16 +10183,11 @@ packages: dependencies: jest-resolve: 29.5.0 - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: false - - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10097,21 +10196,21 @@ packages: transitivePeerDependencies: - supports-color - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.1 resolve.exports: 2.0.0 slash: 3.0.0 - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10139,7 +10238,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10168,14 +10267,14 @@ packages: transitivePeerDependencies: - supports-color - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.19.6 '@babel/generator': 7.20.1 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.6 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.19.6 + '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.19.6) + '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.19.6) '@babel/traverse': 7.20.1 '@babel/types': 7.20.0 '@jest/expect-utils': 29.5.0 @@ -10183,7 +10282,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.18.2 '@types/prettier': 2.7.2 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.19.6 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.19.6) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.10 @@ -10198,18 +10297,7 @@ packages: transitivePeerDependencies: - supports-color - /jest-util/29.4.0: - resolution: {integrity: sha512-lCCwlze7UEV8TpR9ArS8w0cTbcMry5tlBkg7QSc5og5kNyV59dnY2aKHu5fY2k5aDJMQpCUGpvL2w6ZU44lveA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - chalk: 4.1.2 - ci-info: 3.7.1 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10220,7 +10308,7 @@ packages: graceful-fs: 4.2.10 picomatch: 2.3.1 - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10231,7 +10319,7 @@ packages: leven: 3.1.0 pretty-format: 29.5.0 - /jest-watch-typeahead/2.2.2_jest@29.5.0: + /jest-watch-typeahead@2.2.2(jest@29.5.0): resolution: {integrity: sha512-+QgOFW4o5Xlgd6jGS5X37i08tuuXNW8X0CV9WNFi+3n8ExCIP+E1melYhvYLjv5fE6D0yyzk74vsSO8I6GqtvQ==} engines: {node: ^14.17.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10239,29 +10327,15 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0_@types+node@18.15.5 - jest-regex-util: 29.2.0 - jest-watcher: 29.4.0 + jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-regex-util: 29.4.3 + jest-watcher: 29.5.0 slash: 5.0.0 string-length: 5.0.1 strip-ansi: 7.0.1 dev: false - /jest-watcher/29.4.0: - resolution: {integrity: sha512-PnnfLygNKelWOJwpAYlcsQjB+OxRRdckD0qiGmYng4Hkz1ZwK3jvCaJJYiywz2msQn4rBNLdriasJtv7YpWHpA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.4.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: false - - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10274,7 +10348,7 @@ packages: jest-util: 29.5.0 string-length: 4.0.2 - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -10283,27 +10357,7 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jest/29.5.0_757mb262zsxkcnuknwfdsckmku: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0_ts-node@10.9.1 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0_757mb262zsxkcnuknwfdsckmku - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest/29.5.0_@types+node@18.15.5: + /jest@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -10313,16 +10367,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.5.0 + '@jest/core': 29.5.0(ts-node@10.9.1) '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.15.5 + jest-cli: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - supports-color - ts-node - /joi/17.7.0: + /joi@17.7.0: resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} dependencies: '@hapi/hoek': 9.3.0 @@ -10332,32 +10386,32 @@ packages: '@sideway/pinpoint': 2.0.0 dev: true - /js-cookie/2.2.1: + /js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: false - /js-string-escape/1.0.1: + /js-string-escape@1.0.1: resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} engines: {node: '>= 0.8'} dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: argparse: 1.0.10 esprima: 4.0.1 - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - /jsdom/20.0.2: + /jsdom@20.0.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-AHWa+QO/cgRg4N+DsmHg1Y7xnz+8KU3EflM0LVDTdmrYOc1WWTSkOjtpUveQH+1Bqd5rtcVnb/DuxV/UjDO4rA==} engines: {node: '>=14'} peerDependencies: @@ -10390,7 +10444,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.13.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10398,33 +10452,33 @@ packages: - utf-8-validate dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-traverse/1.0.0: + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: false - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 @@ -10432,27 +10486,27 @@ packages: graceful-fs: 4.2.10 dev: false - /khroma/2.0.0: + /khroma@2.0.0: resolution: {integrity: sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==} dev: false - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} engines: {node: '>= 0.8.0'} dependencies: @@ -10460,36 +10514,36 @@ packages: type-check: 0.3.2 dev: true - /lie/3.1.1: + /lie@3.1.1: resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} dependencies: immediate: 3.0.6 dev: false - /light-my-request/5.6.1: + /light-my-request@5.6.1: resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} dependencies: cookie: 0.5.0 process-warning: 2.0.0 set-cookie-parser: 2.5.1 - /lilconfig/2.0.6: + /lilconfig@2.0.6: resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} engines: {node: '>=10'} - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - /load-json-file/7.0.1: + /load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /load-script/1.0.0: + /load-script@1.0.0: resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} dev: false - /load-yaml-file/0.2.0: + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -10499,172 +10553,172 @@ packages: strip-bom: 3.0.0 dev: true - /localforage/1.10.0: + /localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} dependencies: lie: 3.1.1 dev: false - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /locate-path/7.1.1: + /locate-path@7.1.1: resolution: {integrity: sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-locate: 6.0.0 dev: true - /lodash-es/4.17.21: + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true - /lodash.flatmap/4.5.0: + /lodash.flatmap@4.5.0: resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} dev: false - /lodash.get/4.4.2: + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: false - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: false - /lodash.mergewith/4.6.2: + /lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: false - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash.topath/4.5.2: + /lodash.topath@4.5.2: resolution: {integrity: sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==} dev: false - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /longest-streak/3.0.1: + /longest-streak@3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /lower-case-first/2.0.2: + /lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} dependencies: tslib: 2.5.0 - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.5.0 - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /lru-cache/7.18.1: + /lru-cache@7.18.1: resolution: {integrity: sha512-8/HcIENyQnfUTCDizRu9rrDyG6XG/21M4X7/YEGZeD76ZJilFPAUVb/2zysFf7VVO1LEjCDFyHp8pMMvozIrvg==} engines: {node: '>=12'} dev: true - /lz-string/1.4.4: + /lz-string@1.4.4: resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} hasBin: true dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 - /map-age-cleaner/0.1.3: + /map-age-cleaner@0.1.3: resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} engines: {node: '>=6'} dependencies: p-defer: 1.0.0 dev: true - /map-cache/0.2.2: + /map-cache@0.2.2: resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /map-stream/0.1.0: + /map-stream@0.1.0: resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} dev: true - /markdown-extensions/1.1.1: + /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} dev: false - /markdown-table/3.0.2: + /markdown-table@3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: false - /matcher/5.0.0: + /matcher@5.0.0: resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: escape-string-regexp: 5.0.0 dev: true - /md5-hex/3.0.1: + /md5-hex@3.0.1: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} dependencies: blueimp-md5: 2.19.0 dev: true - /mdast-util-definitions/5.1.1: + /mdast-util-definitions@5.1.1: resolution: {integrity: sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==} dependencies: '@types/mdast': 3.0.10 @@ -10672,7 +10726,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /mdast-util-find-and-replace/2.2.1: + /mdast-util-find-and-replace@2.2.1: resolution: {integrity: sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==} dependencies: escape-string-regexp: 5.0.0 @@ -10680,7 +10734,7 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /mdast-util-from-markdown/1.2.0: + /mdast-util-from-markdown@1.2.0: resolution: {integrity: sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==} dependencies: '@types/mdast': 3.0.10 @@ -10699,7 +10753,7 @@ packages: - supports-color dev: false - /mdast-util-gfm-autolink-literal/1.0.2: + /mdast-util-gfm-autolink-literal@1.0.2: resolution: {integrity: sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==} dependencies: '@types/mdast': 3.0.10 @@ -10708,7 +10762,7 @@ packages: micromark-util-character: 1.1.0 dev: false - /mdast-util-gfm-footnote/1.0.1: + /mdast-util-gfm-footnote@1.0.1: resolution: {integrity: sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==} dependencies: '@types/mdast': 3.0.10 @@ -10716,14 +10770,14 @@ packages: micromark-util-normalize-identifier: 1.0.0 dev: false - /mdast-util-gfm-strikethrough/1.0.1: + /mdast-util-gfm-strikethrough@1.0.1: resolution: {integrity: sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 dev: false - /mdast-util-gfm-table/1.0.6: + /mdast-util-gfm-table@1.0.6: resolution: {integrity: sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==} dependencies: '@types/mdast': 3.0.10 @@ -10734,14 +10788,14 @@ packages: - supports-color dev: false - /mdast-util-gfm-task-list-item/1.0.1: + /mdast-util-gfm-task-list-item@1.0.1: resolution: {integrity: sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==} dependencies: '@types/mdast': 3.0.10 mdast-util-to-markdown: 1.3.0 dev: false - /mdast-util-gfm/2.0.1: + /mdast-util-gfm@2.0.1: resolution: {integrity: sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==} dependencies: mdast-util-from-markdown: 1.2.0 @@ -10755,7 +10809,7 @@ packages: - supports-color dev: false - /mdast-util-mdx-expression/1.3.1: + /mdast-util-mdx-expression@1.3.1: resolution: {integrity: sha512-TTb6cKyTA1RD+1su1iStZ5PAv3rFfOUKcoU5EstUpv/IZo63uDX03R8+jXjMEhcobXnNOiG6/ccekvVl4eV1zQ==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10767,7 +10821,7 @@ packages: - supports-color dev: false - /mdast-util-mdx-jsx/2.1.0: + /mdast-util-mdx-jsx@2.1.0: resolution: {integrity: sha512-KzgzfWMhdteDkrY4mQtyvTU5bc/W4ppxhe9SzelO6QUUiwLAM+Et2Dnjjprik74a336kHdo0zKm7Tp+n6FFeRg==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10782,7 +10836,7 @@ packages: vfile-message: 3.1.2 dev: false - /mdast-util-mdx/2.0.0: + /mdast-util-mdx@2.0.0: resolution: {integrity: sha512-M09lW0CcBT1VrJUaF/PYxemxxHa7SLDHdSn94Q9FhxjCQfuW7nMAWKWimTmA3OyDMSTH981NN1csW1X+HPSluw==} dependencies: mdast-util-mdx-expression: 1.3.1 @@ -10792,7 +10846,7 @@ packages: - supports-color dev: false - /mdast-util-mdxjs-esm/1.3.0: + /mdast-util-mdxjs-esm@1.3.0: resolution: {integrity: sha512-7N5ihsOkAEGjFotIX9p/YPdl4TqUoMxL4ajNz7PbT89BqsdWJuBC9rvgt6wpbwTZqWWR0jKWqQbwsOWDBUZv4g==} dependencies: '@types/estree-jsx': 1.0.0 @@ -10804,7 +10858,7 @@ packages: - supports-color dev: false - /mdast-util-to-hast/12.2.4: + /mdast-util-to-hast@12.2.4: resolution: {integrity: sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==} dependencies: '@types/hast': 2.3.4 @@ -10818,7 +10872,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /mdast-util-to-markdown/1.3.0: + /mdast-util-to-markdown@1.3.0: resolution: {integrity: sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==} dependencies: '@types/mdast': 3.0.10 @@ -10830,18 +10884,18 @@ packages: zwitch: 2.0.2 dev: false - /mdast-util-to-string/3.1.0: + /mdast-util-to-string@3.1.0: resolution: {integrity: sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==} dev: false - /mdn-data/2.0.14: + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: false - /mdx-mermaid/1.3.2_mermaid@9.1.7+react@17.0.2: + /mdx-mermaid@1.3.2(mermaid@9.1.7)(react@17.0.2): resolution: {integrity: sha512-8kw0tg3isKKBFzFwoe2DhIaEgKYtVeJXQtxZCCrdTPO0CTpXHnTHT0atDqsp7YkXi5iUCp/zAZPZu1cmr68T3w==} peerDependencies: - mermaid: '>=8.11.0' + mermaid: '>=9.1.2' react: ^16.8.4 || ^17.0.0 || ^18.0.0 unist-util-visit: ^2.0.0 peerDependenciesMeta: @@ -10852,12 +10906,12 @@ packages: react: 17.0.2 dev: false - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true - /mem/9.0.2: + /mem@9.0.2: resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} engines: {node: '>=12.20'} dependencies: @@ -10865,11 +10919,11 @@ packages: mimic-fn: 4.0.0 dev: true - /memoize-one/5.2.1: + /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /meow/11.0.0: + /meow@11.0.0: resolution: {integrity: sha512-Cl0yeeIrko6d94KpUo1M+0X1sB14ikoaqlIGuTH1fW4I+E3+YljL54/hb/BWmVfrV9tTV9zU04+xjw08Fh2WkA==} engines: {node: '>=14.16'} dependencies: @@ -10887,7 +10941,7 @@ packages: yargs-parser: 21.1.1 dev: true - /meow/6.1.1: + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -10904,25 +10958,25 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-descriptors/1.0.1: + /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - /merge-options/3.0.4: + /merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} engines: {node: '>=10'} dependencies: is-plain-obj: 2.1.0 dev: false - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid/9.1.7: + /mermaid@9.1.7: resolution: {integrity: sha512-MRVHXy5FLjnUQUG7YS3UN9jEN6FXCJbFCXVGJQjVIbiR6Vhw0j/6pLIjqsiah9xoHmQU6DEaKOvB3S1g/1nBPA==} dependencies: '@braintree/sanitize-url': 6.0.1 @@ -10936,12 +10990,12 @@ packages: stylis: 4.1.3 dev: false - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - /micromark-core-commonmark/1.0.6: + /micromark-core-commonmark@1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} dependencies: decode-named-character-reference: 1.0.2 @@ -10962,7 +11016,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-autolink-literal/1.0.3: + /micromark-extension-gfm-autolink-literal@1.0.3: resolution: {integrity: sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==} dependencies: micromark-util-character: 1.1.0 @@ -10972,7 +11026,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-footnote/1.0.4: + /micromark-extension-gfm-footnote@1.0.4: resolution: {integrity: sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==} dependencies: micromark-core-commonmark: 1.0.6 @@ -10985,7 +11039,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-strikethrough/1.0.4: + /micromark-extension-gfm-strikethrough@1.0.4: resolution: {integrity: sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==} dependencies: micromark-util-chunked: 1.0.0 @@ -10996,7 +11050,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-table/1.0.5: + /micromark-extension-gfm-table@1.0.5: resolution: {integrity: sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==} dependencies: micromark-factory-space: 1.0.0 @@ -11006,13 +11060,13 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm-tagfilter/1.0.1: + /micromark-extension-gfm-tagfilter@1.0.1: resolution: {integrity: sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-extension-gfm-task-list-item/1.0.3: + /micromark-extension-gfm-task-list-item@1.0.3: resolution: {integrity: sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==} dependencies: micromark-factory-space: 1.0.0 @@ -11022,7 +11076,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-gfm/2.0.1: + /micromark-extension-gfm@2.0.1: resolution: {integrity: sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==} dependencies: micromark-extension-gfm-autolink-literal: 1.0.3 @@ -11035,7 +11089,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-extension-mdx-expression/1.0.3: + /micromark-extension-mdx-expression@1.0.3: resolution: {integrity: sha512-TjYtjEMszWze51NJCZmhv7MEBcgYRgb3tJeMAJ+HQCAaZHHRBaDCccqQzGizR/H4ODefP44wRTgOn2vE5I6nZA==} dependencies: micromark-factory-mdx-expression: 1.0.6 @@ -11047,7 +11101,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-extension-mdx-jsx/1.0.3: + /micromark-extension-mdx-jsx@1.0.3: resolution: {integrity: sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==} dependencies: '@types/acorn': 4.0.6 @@ -11061,13 +11115,13 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-extension-mdx-md/1.0.0: + /micromark-extension-mdx-md@1.0.0: resolution: {integrity: sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-extension-mdxjs-esm/1.0.3: + /micromark-extension-mdxjs-esm@1.0.3: resolution: {integrity: sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==} dependencies: micromark-core-commonmark: 1.0.6 @@ -11080,11 +11134,11 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-extension-mdxjs/1.0.0: + /micromark-extension-mdxjs@1.0.0: resolution: {integrity: sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==} dependencies: acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 + acorn-jsx: 5.3.2(acorn@8.8.1) micromark-extension-mdx-expression: 1.0.3 micromark-extension-mdx-jsx: 1.0.3 micromark-extension-mdx-md: 1.0.0 @@ -11093,7 +11147,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-factory-destination/1.0.0: + /micromark-factory-destination@1.0.0: resolution: {integrity: sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==} dependencies: micromark-util-character: 1.1.0 @@ -11101,7 +11155,7 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-factory-label/1.0.2: + /micromark-factory-label@1.0.2: resolution: {integrity: sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==} dependencies: micromark-util-character: 1.1.0 @@ -11110,7 +11164,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-mdx-expression/1.0.6: + /micromark-factory-mdx-expression@1.0.6: resolution: {integrity: sha512-WRQIc78FV7KrCfjsEf/sETopbYjElh3xAmNpLkd1ODPqxEngP42eVRGbiPEQWpRV27LzqW+XVTvQAMIIRLPnNA==} dependencies: micromark-factory-space: 1.0.0 @@ -11123,14 +11177,14 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-factory-space/1.0.0: + /micromark-factory-space@1.0.0: resolution: {integrity: sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==} dependencies: micromark-util-character: 1.1.0 micromark-util-types: 1.0.2 dev: false - /micromark-factory-title/1.0.2: + /micromark-factory-title@1.0.2: resolution: {integrity: sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==} dependencies: micromark-factory-space: 1.0.0 @@ -11140,7 +11194,7 @@ packages: uvu: 0.5.6 dev: false - /micromark-factory-whitespace/1.0.0: + /micromark-factory-whitespace@1.0.0: resolution: {integrity: sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==} dependencies: micromark-factory-space: 1.0.0 @@ -11149,20 +11203,20 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-util-character/1.1.0: + /micromark-util-character@1.1.0: resolution: {integrity: sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==} dependencies: micromark-util-symbol: 1.0.1 micromark-util-types: 1.0.2 dev: false - /micromark-util-chunked/1.0.0: + /micromark-util-chunked@1.0.0: resolution: {integrity: sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-classify-character/1.0.0: + /micromark-util-classify-character@1.0.0: resolution: {integrity: sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==} dependencies: micromark-util-character: 1.1.0 @@ -11170,20 +11224,20 @@ packages: micromark-util-types: 1.0.2 dev: false - /micromark-util-combine-extensions/1.0.0: + /micromark-util-combine-extensions@1.0.0: resolution: {integrity: sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==} dependencies: micromark-util-chunked: 1.0.0 micromark-util-types: 1.0.2 dev: false - /micromark-util-decode-numeric-character-reference/1.0.0: + /micromark-util-decode-numeric-character-reference@1.0.0: resolution: {integrity: sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-decode-string/1.0.2: + /micromark-util-decode-string@1.0.2: resolution: {integrity: sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==} dependencies: decode-named-character-reference: 1.0.2 @@ -11192,11 +11246,11 @@ packages: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-encode/1.0.1: + /micromark-util-encode@1.0.1: resolution: {integrity: sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==} dev: false - /micromark-util-events-to-acorn/1.2.0: + /micromark-util-events-to-acorn@1.2.0: resolution: {integrity: sha512-WWp3bf7xT9MppNuw3yPjpnOxa8cj5ACivEzXJKu0WwnjBYfzaBvIAT9KfeyI0Qkll+bfQtfftSwdgTH6QhTOKw==} dependencies: '@types/acorn': 4.0.6 @@ -11208,23 +11262,23 @@ packages: vfile-message: 3.1.2 dev: false - /micromark-util-html-tag-name/1.1.0: + /micromark-util-html-tag-name@1.1.0: resolution: {integrity: sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==} dev: false - /micromark-util-normalize-identifier/1.0.0: + /micromark-util-normalize-identifier@1.0.0: resolution: {integrity: sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==} dependencies: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-resolve-all/1.0.0: + /micromark-util-resolve-all@1.0.0: resolution: {integrity: sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==} dependencies: micromark-util-types: 1.0.2 dev: false - /micromark-util-sanitize-uri/1.1.0: + /micromark-util-sanitize-uri@1.1.0: resolution: {integrity: sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==} dependencies: micromark-util-character: 1.1.0 @@ -11232,7 +11286,7 @@ packages: micromark-util-symbol: 1.0.1 dev: false - /micromark-util-subtokenize/1.0.2: + /micromark-util-subtokenize@1.0.2: resolution: {integrity: sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==} dependencies: micromark-util-chunked: 1.0.0 @@ -11241,15 +11295,15 @@ packages: uvu: 0.5.6 dev: false - /micromark-util-symbol/1.0.1: + /micromark-util-symbol@1.0.1: resolution: {integrity: sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==} dev: false - /micromark-util-types/1.0.2: + /micromark-util-types@1.0.2: resolution: {integrity: sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==} dev: false - /micromark/3.1.0: + /micromark@3.1.0: resolution: {integrity: sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==} dependencies: '@types/debug': 4.1.7 @@ -11273,68 +11327,68 @@ packages: - supports-color dev: false - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db/1.33.0: + /mime-db@1.33.0: resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} engines: {node: '>= 0.6'} dev: true - /mime-db/1.52.0: + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - /mime-types/2.1.18: + /mime-types@2.1.18: resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.33.0 dev: true - /mime-types/2.1.35: + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - /mime/1.6.0: + /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/7.4.2: + /minimatch@7.4.2: resolution: {integrity: sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -11343,71 +11397,71 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.7: + /minimist@1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - /minipass/4.2.4: + /minipass@4.2.4: resolution: {integrity: sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==} engines: {node: '>=8'} dev: true - /mixme/0.5.4: + /mixme@0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: false - /mkdirp/2.1.5: + /mkdirp@2.1.5: resolution: {integrity: sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==} engines: {node: '>=10'} hasBin: true dev: true - /mnemonist/0.39.5: + /mnemonist@0.39.5: resolution: {integrity: sha512-FPUtkhtJ0efmEFGpU14x7jGbTB+s18LrzRL2KgoWz9YvcY3cPomz8tih01GbHwnGk/OmkOKfqd/RAQoc8Lm7DQ==} dependencies: obliterator: 2.0.4 - /modern-normalize/1.1.0: + /modern-normalize@1.1.0: resolution: {integrity: sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==} engines: {node: '>=6'} dev: false - /moment-mini/2.24.0: + /moment-mini@2.24.0: resolution: {integrity: sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==} dev: false - /mri/1.2.0: + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - /mrmime/1.0.1: + /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} dev: true - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /ms/3.0.0-canary.1: + /ms@3.0.0-canary.1: resolution: {integrity: sha512-kh8ARjh8rMN7Du2igDRO9QJnqCb2xYTJxyQYK7vJJS4TvLLmsbyhiKpSW+t+y26gyOyMd0riphX0GeWKU3ky5g==} engines: {node: '>=12.13'} dev: false - /multimatch/4.0.0: + /multimatch@4.0.0: resolution: {integrity: sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==} engines: {node: '>=8'} dependencies: @@ -11418,7 +11472,7 @@ packages: minimatch: 3.1.2 dev: true - /nano-css/5.3.5_sfoxds7t5ydpegc3knd667wn6m: + /nano-css@5.3.5(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} peerDependencies: react: '*' @@ -11429,33 +11483,33 @@ packages: fastest-stable-stringify: 2.0.2 inline-style-prefixer: 6.0.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) rtl-css-js: 1.16.0 sourcemap-codec: 1.4.8 stacktrace-js: 2.0.2 stylis: 4.1.3 dev: false - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /nanospinner/1.1.0: + /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} dependencies: picocolors: 1.0.0 dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /next-i18next/13.2.2_2ynmrf3odwjl6m6qwej4nuthfy: + /next-i18next@13.2.2(i18next@22.4.13)(next@12.3.4)(react-i18next@12.2.0)(react@17.0.2): resolution: {integrity: sha512-t0WU6K+HJoq2nVQ0n6OiiEZja9GyMqtDSU74FmOafgk4ljns+iZ18bsNJiI8rOUXfFfkW96ea1N7D5kbMyT+PA==} engines: {node: '>=14'} peerDependencies: @@ -11470,12 +11524,12 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 22.4.13 i18next-fs-backend: 2.1.1 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-i18next: 12.2.0_ffdbohwx3htqpx4tpuhghjrmkq + react-i18next: 12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2) dev: false - /next-remote-watch/2.0.0_next@12.3.4: + /next-remote-watch@2.0.0(next@12.3.4): resolution: {integrity: sha512-FyKDFMwbjKCPdu8ypZ8WTkDBzuxnH6rgfR89vgQwsND4ErrfXnDFZcZJAmSpwND6QA7G9f0DRzYMSdspY6t8Uw==} engines: {node: '>= 10'} hasBin: true @@ -11486,24 +11540,24 @@ packages: chokidar: 3.5.3 commander: 5.1.0 express: 4.18.2 - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) transitivePeerDependencies: - supports-color dev: true - /next-seo/5.15.0_dwjfwrt6uv2f53xn6wotzcxyoa: + /next-seo@5.15.0(next@12.3.4)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-LGbcY91yDKGMb7YI+28n3g+RuChUkt6pXNpa8FkfKkEmNiJkeRDEXTnnjVtwT9FmMhG6NH8qwHTelGrlYm9rgg==} peerDependencies: next: ^8.1.1-canary.54 || >=9.0.0 react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - next: 12.3.4_sfoxds7t5ydpegc3knd667wn6m + next: 12.3.4(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /next/12.3.4_sfoxds7t5ydpegc3knd667wn6m: + /next@12.3.4(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-VcyMJUtLZBGzLKo3oMxrEF0stxh8HwuW976pAzlHhI3t8qJ4SROjCrSh1T24bhrbjw55wfZXAbXPGwPt5FLRfQ==} engines: {node: '>=12.22.0'} hasBin: true @@ -11526,9 +11580,9 @@ packages: caniuse-lite: 1.0.30001429 postcss: 8.4.14 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - styled-jsx: 5.0.7_react@17.0.2 - use-sync-external-store: 1.2.0_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) + styled-jsx: 5.0.7(react@17.0.2) + use-sync-external-store: 1.2.0(react@17.0.2) optionalDependencies: '@next/swc-android-arm-eabi': 12.3.4 '@next/swc-android-arm64': 12.3.4 @@ -11547,27 +11601,27 @@ packages: - '@babel/core' - babel-plugin-macros - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.5.0 - /node-cleanup/2.1.2: + /node-cleanup@2.1.2: resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} dev: true - /node-domexception/1.0.0: + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - /node-emoji/1.11.0: + /node-emoji@1.11.0: resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} dependencies: lodash: 4.17.21 dev: false - /node-fetch/2.6.7: + /node-fetch@2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -11578,7 +11632,7 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-fetch/3.3.0: + /node-fetch@3.3.0: resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -11587,29 +11641,28 @@ packages: formdata-polyfill: 4.0.10 dev: true - /node-gyp-build/4.5.0: + /node-gyp-build@4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true - dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - /node-json-db/2.1.5: + /node-json-db@2.1.5: resolution: {integrity: sha512-LnzD9SPOVjtiMOgUB8oJfbj3927/2S/tWMjMen8QybZ3MBcgIFi9fKGpk6H3A4rMjnpuHX2J19JEvzqwB2p+/g==} dependencies: rwlock: 5.0.0 dev: false - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - /nofilter/3.1.0: + /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -11618,7 +11671,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/3.0.3: + /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} dependencies: @@ -11628,7 +11681,7 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-package-data/4.0.1: + /normalize-package-data@4.0.1: resolution: {integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -11638,60 +11691,60 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/2.1.1: + /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-range/0.1.2: + /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: false - /npm-run-path/1.0.0: + /npm-run-path@1.0.0: resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==} engines: {node: '>=0.10.0'} dependencies: path-key: 1.0.0 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 - /nprogress/0.2.0: + /nprogress@0.2.0: resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} dev: false - /nullthrows/1.1.1: + /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - /nwsapi/2.2.2: + /nwsapi@2.2.2: resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-hash/2.2.0: + /object-hash@2.2.0: resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} engines: {node: '>= 6'} dev: false - /object-inspect/1.12.2: + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: true - /object-is/1.1.5: + /object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: @@ -11699,17 +11752,17 @@ packages: define-properties: 1.1.4 dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object-path/0.11.8: + /object-path@0.11.8: resolution: {integrity: sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==} engines: {node: '>= 10.12.0'} dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -11719,36 +11772,36 @@ packages: object-keys: 1.1.1 dev: true - /obliterator/2.0.4: + /obliterator@2.0.4: resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - /on-exit-leak-free/2.1.0: + /on-exit-leak-free@2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} - /on-finished/2.4.1: + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 - /open-cli/7.2.0: + /open-cli@7.2.0: resolution: {integrity: sha512-1ANJc8oJ92FiaNZ0o2Hw4WBvDJoXs1P74aFMtpAvlbkIPV4uPcQvDz7V6kMOrsZkmB4tglrHVMlLQaafuUuxXg==} engines: {node: '>=14.16'} hasBin: true @@ -11760,7 +11813,7 @@ packages: tempy: 3.0.0 dev: true - /open/8.4.2: + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: @@ -11768,7 +11821,7 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 - /open/9.0.0: + /open@9.0.0: resolution: {integrity: sha512-yerrN5WPzgwuE3T6rxAkT1UuMLDzs4Szpug7hy9s4gru3iOTnaU0yKc1AYOVYrBzvykce5gUdr9RPNB4R+Zc/A==} engines: {node: '>=14.16'} dependencies: @@ -11778,12 +11831,12 @@ packages: is-wsl: 2.2.0 dev: true - /opener/1.5.2: + /opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -11795,107 +11848,107 @@ packages: word-wrap: 1.2.3 dev: true - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: + /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-defer/1.0.0: + /p-defer@1.0.0: resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} engines: {node: '>=4'} dev: true - /p-event/5.0.1: + /p-event@5.0.1: resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-timeout: 5.1.0 dev: true - /p-filter/2.1.0: + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - /p-limit/4.0.0: + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-locate/6.0.0: + /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: p-limit: 4.0.0 dev: true - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: true - /p-map/5.5.0: + /p-map@5.5.0: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} dependencies: aggregate-error: 4.0.1 dev: true - /p-timeout/5.1.0: + /p-timeout@5.1.0: resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==} engines: {node: '>=12'} dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - /param-case/3.0.4: + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 - /parse-entities/4.0.0: + /parse-entities@4.0.0: resolution: {integrity: sha512-5nk9Fn03x3rEhGaX1FU6IDwG/k+GxLXlFAkgrbM1asuAFl3BhdQWvASaIsmwWypRNcZKHPYnIuOSfIWEyEQnPQ==} dependencies: '@types/unist': 2.0.6 @@ -11908,7 +11961,7 @@ packages: is-hexadecimal: 2.0.1 dev: false - /parse-filepath/1.0.2: + /parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} dependencies: @@ -11916,7 +11969,7 @@ packages: map-cache: 0.2.2 path-root: 0.1.1 - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -11925,78 +11978,78 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse-ms/3.0.0: + /parse-ms@3.0.0: resolution: {integrity: sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==} engines: {node: '>=12'} dev: true - /parse-numeric-range/1.3.0: + /parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} dev: false - /parse5/7.1.1: + /parse5@7.1.1: resolution: {integrity: sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==} dependencies: entities: 4.4.0 dev: true - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.5.0 - /path-case/3.0.4: + /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - /path-exists/5.0.0: + /path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-is-inside/1.0.2: + /path-is-inside@1.0.2: resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} dev: true - /path-key/1.0.0: + /path-key@1.0.0: resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==} engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-root-regex/0.1.2: + /path-root-regex@0.1.2: resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} engines: {node: '>=0.10.0'} - /path-root/0.1.1: + /path-root@0.1.1: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} dependencies: path-root-regex: 0.1.2 - /path-scurry/1.6.1: + /path-scurry@1.6.1: resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==} engines: {node: '>=14'} dependencies: @@ -12004,58 +12057,58 @@ packages: minipass: 4.2.4 dev: true - /path-to-regexp/0.1.7: + /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - /path-to-regexp/2.2.1: + /path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /pause-stream/0.0.11: + /pause-stream@0.0.11: resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} dependencies: through: 2.3.8 dev: true - /peek-readable/5.0.0: + /peek-readable@5.0.0: resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} engines: {node: '>=14.16'} dev: true - /periscopic/3.0.4: + /periscopic@3.0.4: resolution: {integrity: sha512-SFx68DxCv0Iyo6APZuw/AKewkkThGwssmU0QWtTlvov3VAtPX+QJ4CadwSaz8nrT5jPIuxdvJWB4PnD2KNDxQg==} dependencies: estree-walker: 3.0.1 is-reference: 3.0.0 dev: false - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pino-abstract-transport/1.0.0: + /pino-abstract-transport@1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.2.0 split2: 4.1.0 - /pino-std-serializers/6.0.0: + /pino-std-serializers@6.0.0: resolution: {integrity: sha512-mMMOwSKrmyl+Y12Ri2xhH1lbzQxwwpuru9VjyJpgFIH4asSj88F2csdMwN6+M5g1Ll4rmsYghHLQJw81tgZ7LQ==} - /pino/8.7.0: + /pino@8.7.0: resolution: {integrity: sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==} hasBin: true dependencies: @@ -12071,11 +12124,11 @@ packages: sonic-boom: 3.2.0 thread-stream: 2.2.0 - /pirates/4.0.5: + /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} - /pkg-conf/4.0.0: + /pkg-conf@4.0.0: resolution: {integrity: sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12083,27 +12136,27 @@ packages: load-json-file: 7.0.1 dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 - /plur/5.1.0: + /plur@5.1.0: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: irregular-plurals: 3.3.0 dev: true - /polished/4.2.2: + /polished@4.2.2: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} dependencies: '@babel/runtime': 7.20.13 dev: false - /popmotion/11.0.3: + /popmotion@11.0.3: resolution: {integrity: sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==} dependencies: framesync: 6.0.1 @@ -12112,7 +12165,7 @@ packages: tslib: 2.5.0 dev: false - /postcss-js/3.0.3: + /postcss-js@3.0.3: resolution: {integrity: sha512-gWnoWQXKFw65Hk/mi2+WTQTHdPD5UJdDXZmX073EY/B3BWnYjO4F4t0VneTCnCGQ5E5GsCdMkzPaTXwl3r5dJw==} engines: {node: '>=10.0'} dependencies: @@ -12120,7 +12173,7 @@ packages: postcss: 8.4.21 dev: false - /postcss-load-config/3.1.4_postcss@8.4.21: + /postcss-load-config@3.1.4(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -12134,10 +12187,11 @@ packages: dependencies: lilconfig: 2.0.6 postcss: 8.4.21 + ts-node: 10.9.1(@types/node@18.15.5)(typescript@4.9.5) yaml: 1.10.2 dev: false - /postcss-nested/5.0.6_postcss@8.4.21: + /postcss-nested@5.0.6(postcss@8.4.21): resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} peerDependencies: @@ -12147,7 +12201,7 @@ packages: postcss-selector-parser: 6.0.10 dev: false - /postcss-selector-parser/6.0.10: + /postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} dependencies: @@ -12155,15 +12209,15 @@ packages: util-deprecate: 1.0.2 dev: false - /postcss-value-parser/3.3.1: + /postcss-value-parser@3.3.1: resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} dev: false - /postcss-value-parser/4.2.0: + /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: false - /postcss/8.4.14: + /postcss@8.4.14: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -12171,7 +12225,7 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -12179,11 +12233,11 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact/10.11.2: + /preact@10.11.2: resolution: {integrity: sha512-skAwGDFmgxhq1DCBHke/9e12ewkhc7WYwjuhHB8HHS8zkdtITXLRmUMTeol2ldxvLwYtwbFeifZ9uDDWuyL4Iw==} dev: false - /preferred-pm/3.0.3: + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -12193,23 +12247,17 @@ packages: which-pm: 2.0.0 dev: true - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} dev: true - /prettier/2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - - /prettier/2.8.6: + /prettier@2.8.6: resolution: {integrity: sha512-mtuzdiBbHwPEgl7NxWlqOkithPyp4VN93V7VeHVWBF+ad3I5avc0RVDT4oImXQy9H/AqxA2NSQH8pSxHW6FYbQ==} engines: {node: '>=10.13.0'} hasBin: true - /pretty-format/27.5.1: + /pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -12218,7 +12266,7 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -12226,19 +12274,19 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /pretty-hrtime/1.0.3: + /pretty-hrtime@1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} dev: false - /pretty-ms/8.0.0: + /pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} engines: {node: '>=14.16'} dependencies: parse-ms: 3.0.0 dev: true - /pretty-quick/3.1.3_prettier@2.8.6: + /pretty-quick@3.1.3(prettier@2.8.6): resolution: {integrity: sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==} engines: {node: '>=10.13'} hasBin: true @@ -12254,26 +12302,26 @@ packages: prettier: 2.8.6 dev: true - /process-warning/2.0.0: + /process-warning@2.0.0: resolution: {integrity: sha512-+MmoAXoUX+VTHAlwns0h+kFUWFs/3FZy+ZuchkgjyOu3oioLAo2LB5aCfKPh2+P9O18i3m43tUEv3YqttSy0Ww==} - /process/0.11.10: + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - /promise/7.3.1: + /promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} dependencies: asap: 2.0.6 - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -12281,18 +12329,18 @@ packages: react-is: 16.13.1 dev: false - /property-information/6.1.1: + /property-information@6.1.1: resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==} dev: false - /proxy-addr/2.0.7: + /proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - /ps-tree/1.2.0: + /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} hasBin: true @@ -12300,33 +12348,33 @@ packages: event-stream: 3.3.4 dev: true - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /psl/1.9.0: + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 dev: true - /punycode/1.4.1: + /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - /pure-rand/6.0.0: + /pure-rand@6.0.0: resolution: {integrity: sha512-rLSBxJjP+4DQOgcJAx6RZHT2he2pkhQdSnofG5VWyVl6GRq/K02ISOuOLcsMOrtKDIJb8JN2zm3FFzWNbezdPw==} - /purgecss/4.1.3: + /purgecss@4.1.3: resolution: {integrity: sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==} hasBin: true dependencies: @@ -12336,43 +12384,43 @@ packages: postcss-selector-parser: 6.0.10 dev: false - /qs/6.11.0: + /qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: side-channel: 1.0.4 dev: true - /querystringify/2.2.0: + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quick-format-unescaped/4.0.4: + /quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: false - /quick-lru/6.1.1: + /quick-lru@6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} dev: true - /randombytes/2.0.3: + /randombytes@2.0.3: resolution: {integrity: sha512-lDVjxQQFoCG1jcrP06LNo2lbWp4QTShEXnhActFBwYuHprllQV6VUpwreApsYqCgD+N1mHoqJ/BI/4eV4R2GYg==} dev: false - /randomstring/1.2.3: + /randomstring@1.2.3: resolution: {integrity: sha512-3dEFySepTzp2CvH6W/ASYGguPPveBuz5MpZ7MuoUkoVehmyNl9+F9c9GFVrz2QPbM9NXTIHGcmJDY/3j4677kQ==} hasBin: true dependencies: @@ -12380,17 +12428,17 @@ packages: randombytes: 2.0.3 dev: false - /range-parser/1.2.0: + /range-parser@1.2.0: resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} engines: {node: '>= 0.6'} dev: true - /range-parser/1.2.1: + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - /raw-body/2.5.1: + /raw-body@2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} engines: {node: '>= 0.8'} dependencies: @@ -12400,7 +12448,7 @@ packages: unpipe: 1.0.0 dev: true - /rc/1.2.8: + /rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true dependencies: @@ -12410,7 +12458,7 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-children-utilities/2.7.0_react@17.0.2: + /react-children-utilities@2.7.0(react@17.0.2): resolution: {integrity: sha512-8vvGyL8+MTB/WZnTZKll3ph8rKhYQ3s0TOeojFcSi9yF8hMHwYmCS3y5RZyPxTg4/gGW6ev299ehV9DrNU8dow==} peerDependencies: react: 17.x.x || 16.x.x || 15.x.x @@ -12418,7 +12466,7 @@ packages: react: 17.0.2 dev: false - /react-clientside-effect/1.2.6_react@17.0.2: + /react-clientside-effect@1.2.6(react@17.0.2): resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -12427,7 +12475,7 @@ packages: react: 17.0.2 dev: false - /react-dom/17.0.2_react@17.0.2: + /react-dom@17.0.2(react@17.0.2): resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: react: 17.0.2 @@ -12437,20 +12485,30 @@ packages: react: 17.0.2 scheduler: 0.20.2 - /react-error-boundary/3.1.4_react@17.0.2: + /react-error-boundary@3.1.4(react@17.0.2): resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.20.13 + react: 17.0.2 + dev: true + + /react-error-boundary@4.0.12(react@17.0.2): + resolution: {integrity: sha512-kJdxdEYlb7CPC1A0SeUY38cHpjuu6UkvzKiAmqmOFL21VRfMhOcWxTCBgLVCO0VEMh9JhFNcVaXlV4/BTpiwOA==} + peerDependencies: + react: '>=16.13.1' + dependencies: + '@babel/runtime': 7.20.13 react: 17.0.2 + dev: false - /react-fast-compare/3.2.0: + /react-fast-compare@3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false - /react-focus-lock/2.5.2_h7fc2el62uaa77gho3xhys6ola: + /react-focus-lock@2.5.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -12459,14 +12517,14 @@ packages: focus-lock: 0.9.2 prop-types: 15.8.1 react: 17.0.2 - react-clientside-effect: 1.2.6_react@17.0.2 - use-callback-ref: 1.3.0_h7fc2el62uaa77gho3xhys6ola - use-sidecar: 1.1.2_h7fc2el62uaa77gho3xhys6ola + react-clientside-effect: 1.2.6(react@17.0.2) + use-callback-ref: 1.3.0(@types/react@17.0.53)(react@17.0.2) + use-sidecar: 1.1.2(@types/react@17.0.53)(react@17.0.2) transitivePeerDependencies: - '@types/react' dev: false - /react-i18next/12.2.0_ffdbohwx3htqpx4tpuhghjrmkq: + /react-i18next@12.2.0(i18next@22.4.13)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-5XeVgSygaGfyFmDd2WcXvINRw2WEC1XviW1LXY/xLOEMzsCFRwKqfnHN+hUjla8ZipbVJR27GCMSuTr0BhBBBQ==} peerDependencies: i18next: '>= 19.0.0' @@ -12483,10 +12541,10 @@ packages: html-parse-stringify: 3.0.1 i18next: 22.4.13 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /react-icons/4.8.0_react@17.0.2: + /react-icons@4.8.0(react@17.0.2): resolution: {integrity: sha512-N6+kOLcihDiAnj5Czu637waJqSnwlMNROzVZMhfX68V/9bu9qHaMIJC4UdozWoOk57gahFCNHwVvWzm0MTzRjg==} peerDependencies: react: '*' @@ -12494,7 +12552,7 @@ packages: react: 17.0.2 dev: false - /react-instantsearch-core/6.38.0_pybjzmhtnpk62btmxi5dirminu: + /react-instantsearch-core@6.38.0(algoliasearch@4.14.2)(react@17.0.2): resolution: {integrity: sha512-Y5denvptL+qDOHY3LxipULNun8f3t2WeO9UdiWJd9FER1vn1VBrDdSyZ5b+idxqVWhSeVbncbf98zr7EW/kFvA==} peerDependencies: algoliasearch: '>= 3.1 < 5' @@ -12502,31 +12560,32 @@ packages: dependencies: '@babel/runtime': 7.20.13 algoliasearch: 4.14.2 - algoliasearch-helper: 3.11.1_algoliasearch@4.14.2 + algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) prop-types: 15.8.1 react: 17.0.2 react-fast-compare: 3.2.0 dev: false - /react-instantsearch-dom/6.17.0_kr5x6cjikajrhwznglqptdxk4q: + /react-instantsearch-dom@6.17.0(algoliasearch@4.14.2)(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-KwQJ0HqD9YBvO1VBS+GZC2binTfrGFRClXxDwmd014I9lyqr05m1U2NR81zD0xoBkoZwELP5RWvfpuvbEL0Gdg==} + deprecated: package has moved to react-instantsearch peerDependencies: react: '>= 16.3.0 < 18' react-dom: '>= 16.3.0 < 18' dependencies: '@babel/runtime': 7.20.13 - algoliasearch-helper: 3.11.1_algoliasearch@4.14.2 + algoliasearch-helper: 3.11.1(algoliasearch@4.14.2) classnames: 2.3.2 prop-types: 15.8.1 react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) react-fast-compare: 3.2.0 - react-instantsearch-core: 6.38.0_pybjzmhtnpk62btmxi5dirminu + react-instantsearch-core: 6.38.0(algoliasearch@4.14.2)(react@17.0.2) transitivePeerDependencies: - algoliasearch dev: false - /react-intersection-observer/8.33.1_react@17.0.2: + /react-intersection-observer@8.33.1(react@17.0.2): resolution: {integrity: sha512-3v+qaJvp3D1MlGHyM+KISVg/CMhPiOlO6FgPHcluqHkx4YFCLuyXNlQ/LE6UkbODXlQcLOppfX6UMxCEkUhDLw==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0 @@ -12534,7 +12593,7 @@ packages: react: 17.0.2 dev: false - /react-intersection-observer/9.4.3_react@17.0.2: + /react-intersection-observer@9.4.3(react@17.0.2): resolution: {integrity: sha512-WNRqMQvKpupr6MzecAQI0Pj0+JQong307knLP4g/nBex7kYfIaZsPpXaIhKHR+oV8z+goUbH9e10j6lGRnTzlQ==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -12542,18 +12601,18 @@ packages: react: 17.0.2 dev: false - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: false - /react-is/17.0.2: + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-paginate/7.1.5_react@17.0.2: + /react-paginate@7.1.5(react@17.0.2): resolution: {integrity: sha512-CpyWSwsIIsFhWAQvmXDWuEl+yzfzisgvsUoZTj2IR1mFvm9oPTmeNBFc1wg8/i6ASmETeOmOnc78/U/MXyjd0w==} peerDependencies: react: ^16 || ^17 @@ -12562,7 +12621,7 @@ packages: react: 17.0.2 dev: false - /react-player/2.11.0_react@17.0.2: + /react-player@2.11.0(react@17.0.2): resolution: {integrity: sha512-fIrwpuXOBXdEg1FiyV9isKevZOaaIsAAtZy5fcjkQK9Nhmk1I2NXzY/hkPos8V0zb/ZX416LFy8gv7l/1k3a5w==} peerDependencies: react: '>=16.6.0' @@ -12575,12 +12634,12 @@ packages: react-fast-compare: 3.2.0 dev: false - /react-refresh/0.10.0: + /react-refresh@0.10.0: resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar/2.3.4_h7fc2el62uaa77gho3xhys6ola: + /react-remove-scroll-bar@2.3.4(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -12592,11 +12651,11 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - react-style-singleton: 2.2.1_h7fc2el62uaa77gho3xhys6ola + react-style-singleton: 2.2.1(@types/react@17.0.53)(react@17.0.2) tslib: 2.5.0 dev: false - /react-remove-scroll/2.4.1_h7fc2el62uaa77gho3xhys6ola: + /react-remove-scroll@2.4.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-K7XZySEzOHMTq7dDwcHsZA6Y7/1uX5RsWhRXVYv8rdh+y9Qz2nMwl9RX/Mwnj/j7JstCGmxyfyC0zbVGXYh3mA==} engines: {node: '>=8.5.0'} peerDependencies: @@ -12608,24 +12667,24 @@ packages: dependencies: '@types/react': 17.0.53 react: 17.0.2 - react-remove-scroll-bar: 2.3.4_h7fc2el62uaa77gho3xhys6ola - react-style-singleton: 2.2.1_h7fc2el62uaa77gho3xhys6ola + react-remove-scroll-bar: 2.3.4(@types/react@17.0.53)(react@17.0.2) + react-style-singleton: 2.2.1(@types/react@17.0.53)(react@17.0.2) tslib: 1.14.1 - use-callback-ref: 1.3.0_h7fc2el62uaa77gho3xhys6ola - use-sidecar: 1.1.2_h7fc2el62uaa77gho3xhys6ola + use-callback-ref: 1.3.0(@types/react@17.0.53)(react@17.0.2) + use-sidecar: 1.1.2(@types/react@17.0.53)(react@17.0.2) dev: false - /react-shallow-renderer/16.15.0_react@17.0.2: + /react-shallow-renderer@16.15.0(react@17.0.2): resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 react: 17.0.2 - react-is: 17.0.2 + react-is: 18.2.0 dev: true - /react-ssr-prepass/1.5.0_react@17.0.2: + /react-ssr-prepass@1.5.0(react@17.0.2): resolution: {integrity: sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12633,7 +12692,7 @@ packages: react: 17.0.2 dev: false - /react-sticky-box/1.0.2_react@17.0.2: + /react-sticky-box@1.0.2(react@17.0.2): resolution: {integrity: sha512-Kyvtppdtv1KqJyNU4DtrSMI0unyQRgtraZvVQ0GAazVbYiTsIVpyhpr+5R0Aavzu4uJNSe1awj2rk/qI7i6Zfw==} peerDependencies: react: '>=16.8.0' @@ -12642,7 +12701,7 @@ packages: resize-observer-polyfill: 1.5.1 dev: false - /react-style-singleton/2.2.1_h7fc2el62uaa77gho3xhys6ola: + /react-style-singleton@2.2.1(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -12659,7 +12718,7 @@ packages: tslib: 2.5.0 dev: false - /react-test-renderer/17.0.2_react@17.0.2: + /react-test-renderer@17.0.2(react@17.0.2): resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} peerDependencies: react: 17.0.2 @@ -12667,21 +12726,21 @@ packages: object-assign: 4.1.1 react: 17.0.2 react-is: 17.0.2 - react-shallow-renderer: 16.15.0_react@17.0.2 + react-shallow-renderer: 16.15.0(react@17.0.2) scheduler: 0.20.2 dev: true - /react-universal-interface/0.6.2_react@17.0.2+tslib@2.4.1: + /react-universal-interface@0.6.2(react@17.0.2)(tslib@2.5.0): resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: react: '*' tslib: '*' dependencies: react: 17.0.2 - tslib: 2.4.1 + tslib: 2.5.0 dev: false - /react-use/17.4.0_sfoxds7t5ydpegc3knd667wn6m: + /react-use@17.4.0(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-TgbNTCA33Wl7xzIJegn1HndB4qTS9u03QUwyNycUnXaweZkE4Kq2SB+Yoxx8qbshkZGYBDvUXbXWRUmQDcZZ/Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -12693,26 +12752,26 @@ packages: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.3.5_sfoxds7t5ydpegc3knd667wn6m + nano-css: 5.3.5(react-dom@17.0.2)(react@17.0.2) react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 - react-universal-interface: 0.6.2_react@17.0.2+tslib@2.4.1 + react-dom: 17.0.2(react@17.0.2) + react-universal-interface: 0.6.2(react@17.0.2)(tslib@2.5.0) resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 set-harmonic-interval: 1.0.1 throttle-debounce: 3.0.1 ts-easing: 0.2.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: false - /react/17.0.2: + /react@17.0.2: resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -12721,7 +12780,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg-up/9.1.0: + /read-pkg-up@9.1.0: resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12730,7 +12789,7 @@ packages: type-fest: 2.19.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -12740,7 +12799,7 @@ packages: type-fest: 0.6.0 dev: true - /read-pkg/7.1.0: + /read-pkg@7.1.0: resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} engines: {node: '>=12.20'} dependencies: @@ -12750,7 +12809,7 @@ packages: type-fest: 2.19.0 dev: true - /read-yaml-file/1.1.0: + /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -12760,7 +12819,7 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream/3.6.0: + /readable-stream@3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} dependencies: @@ -12769,7 +12828,7 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/4.2.0: + /readable-stream@4.2.0: resolution: {integrity: sha512-gJrBHsaI3lgBoGMW/jHZsQ/o/TIWiu5ENCJG1BB7fuCKzpFM8GaS2UoBVt9NO+oI+3FcrBNbUkl3ilDe09aY4A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -12778,24 +12837,24 @@ packages: events: 3.3.0 process: 0.11.10 - /readable-web-to-node-stream/3.0.2: + /readable-web-to-node-stream@3.0.2: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} dependencies: readable-stream: 3.6.0 dev: true - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - /real-require/0.2.0: + /real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -12803,7 +12862,7 @@ packages: strip-indent: 3.0.0 dev: true - /redent/4.0.0: + /redent@4.0.0: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} dependencies: @@ -12811,17 +12870,17 @@ packages: strip-indent: 4.0.0 dev: true - /reduce-css-calc/2.1.8: + /reduce-css-calc@2.1.8: resolution: {integrity: sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==} dependencies: css-unit-converter: 1.1.2 postcss-value-parser: 3.3.1 dev: false - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -12830,21 +12889,21 @@ packages: functions-have-names: 1.2.3 dev: true - /registry-auth-token/3.3.2: + /registry-auth-token@3.3.2: resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} dependencies: rc: 1.2.8 safe-buffer: 5.2.1 dev: true - /registry-url/3.1.0: + /registry-url@3.1.0: resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} engines: {node: '>=0.10.0'} dependencies: rc: 1.2.8 dev: true - /rehype-slug/5.0.1: + /rehype-slug@5.0.1: resolution: {integrity: sha512-X5v3wV/meuOX9NFcGhJvUpEjIvQl2gDvjg3z40RVprYFt7q3th4qMmYLULiu3gXvbNX1ppx+oaa6JyY1W67pTA==} dependencies: '@types/hast': 2.3.4 @@ -12856,7 +12915,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /relay-runtime/12.0.0: + /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: '@babel/runtime': 7.20.13 @@ -12865,7 +12924,7 @@ packages: transitivePeerDependencies: - encoding - /remark-emoji/3.0.2: + /remark-emoji@3.0.2: resolution: {integrity: sha512-hEgxEv2sBtvhT3tNG/tQeeFY3EbslftaOoG14dDZndLo25fWJ6Fbg4ukFbIotOWWrfXyASjXjyHT+6n366k3mg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -12874,7 +12933,7 @@ packages: unist-util-visit: 4.1.1 dev: false - /remark-gfm/3.0.1: + /remark-gfm@3.0.1: resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} dependencies: '@types/mdast': 3.0.10 @@ -12885,7 +12944,7 @@ packages: - supports-color dev: false - /remark-mdx/2.1.5: + /remark-mdx@2.1.5: resolution: {integrity: sha512-A8vw5s+BgOa968Irt8BO7DfWJTE0Fe7Ge3hX8zzDB1DnwMZTNdK6qF2IcFao+/7nzk1vSysKcFp+3ku4vhMpaQ==} dependencies: mdast-util-mdx: 2.0.0 @@ -12894,7 +12953,7 @@ packages: - supports-color dev: false - /remark-parse/10.0.1: + /remark-parse@10.0.1: resolution: {integrity: sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==} dependencies: '@types/mdast': 3.0.10 @@ -12904,7 +12963,7 @@ packages: - supports-color dev: false - /remark-rehype/10.1.0: + /remark-rehype@10.1.0: resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} dependencies: '@types/hast': 2.3.4 @@ -12913,52 +12972,52 @@ packages: unified: 10.1.2 dev: false - /remove-markdown/0.3.0: + /remove-markdown@0.3.0: resolution: {integrity: sha512-5392eIuy1mhjM74739VunOlsOYKjsH82rQcTBlJ1bkICVC3dQ3ksQzTHh4jGHQFnM+1xzLzcFOMH+BofqXhroQ==} dev: false - /remove-trailing-separator/1.1.0: + /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} dev: false - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - /requires-port/1.0.0: + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resize-observer-polyfill/1.5.1: + /resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - /resolve.exports/2.0.0: + /resolve.exports@2.0.0: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: @@ -12966,32 +13025,32 @@ packages: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /ret/0.2.2: + /ret@0.2.2: resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} engines: {node: '>=4'} - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc/1.3.0: + /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - /rgb-regex/1.0.1: + /rgb-regex@1.0.1: resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} dev: false - /rgba-regex/1.0.0: + /rgba-regex@1.0.0: resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} dev: false - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 - /rimraf/4.4.0: + /rimraf@4.4.0: resolution: {integrity: sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==} engines: {node: '>=14'} hasBin: true @@ -12999,19 +13058,19 @@ packages: glob: 9.2.1 dev: true - /robust-predicates/3.0.1: + /robust-predicates@3.0.1: resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==} dev: false - /rollup/2.79.1: + /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /rollup/3.19.1: + /rollup@3.19.1: resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true @@ -13019,60 +13078,54 @@ packages: fsevents: 2.3.2 dev: true - /rtl-css-js/1.16.0: + /rtl-css-js@1.16.0: resolution: {integrity: sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==} dependencies: '@babel/runtime': 7.20.13 dev: false - /run-applescript/5.0.0: + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rw/1.3.3: + /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /rwlock/5.0.0: + /rwlock@5.0.0: resolution: {integrity: sha512-XgzRqLMfCcm9QfZuPav9cV3Xin5TRcIlp4X/SH3CvB+x5D2AakdlEepfJKDd8ByncvfpcxNWdRZVUl38PS6ZJg==} dev: false - /rxjs/7.5.7: - resolution: {integrity: sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==} - dependencies: - tslib: 2.5.0 - dev: true - - /rxjs/7.8.0: + /rxjs@7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.5.0 dev: true - /sade/1.8.1: + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} dependencies: mri: 1.2.0 dev: false - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -13080,42 +13133,42 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex2/2.0.0: + /safe-regex2@2.0.0: resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} dependencies: ret: 0.2.2 - /safe-stable-stringify/2.4.1: + /safe-stable-stringify@2.4.1: resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} engines: {node: '>=10'} - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /saxes/6.0.0: + /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 dev: true - /scheduler/0.20.2: + /scheduler@0.20.2: resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - /screenfull/5.2.0: + /screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} dev: false - /search-insights/2.2.1: + /search-insights@2.2.1: resolution: {integrity: sha512-JDfVGZbKqTtiKVZjAVbkNw9C9f0ib80yx6Ea17M3z4RvPmuD0GYWXuFwA9++dpbreBEMH4TC3lQ29Zq7O4b5oA==} engines: {node: '>=8.16.0'} dev: false - /section-matter/1.0.0: + /section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} dependencies: @@ -13123,26 +13176,26 @@ packages: kind-of: 6.0.3 dev: false - /secure-json-parse/2.5.0: + /secure-json-parse@2.5.0: resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - /send/0.18.0: + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} dependencies: @@ -13163,28 +13216,28 @@ packages: - supports-color dev: true - /sentence-case/3.0.4: + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 tslib: 2.5.0 upper-case-first: 2.0.2 - /serialize-error/11.0.0: + /serialize-error@11.0.0: resolution: {integrity: sha512-YKrURWDqcT3VGX/s/pCwaWtpfJEEaEw5Y4gAnQDku92b/HjVj4r4UhA5QrMVMFotymK2wIWs5xthny5SMFu7Vw==} engines: {node: '>=14.16'} dependencies: type-fest: 2.19.0 dev: false - /serialize-error/7.0.1: + /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} dependencies: type-fest: 0.13.1 dev: true - /serve-handler/6.1.5: + /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: bytes: 3.0.0 @@ -13197,7 +13250,7 @@ packages: range-parser: 1.2.0 dev: true - /serve-static/1.15.0: + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} dependencies: @@ -13209,7 +13262,7 @@ packages: - supports-color dev: true - /serve/14.2.0: + /serve@14.2.0: resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} engines: {node: '>= 14'} hasBin: true @@ -13229,57 +13282,57 @@ packages: - supports-color dev: true - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - /set-cookie-parser/2.5.1: + /set-cookie-parser@2.5.1: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} - /set-harmonic-interval/1.0.1: + /set-harmonic-interval@1.0.1: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} engines: {node: '>=6.9'} dev: false - /setimmediate/1.0.5: + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - /sha1/1.1.1: + /sha1@1.1.1: resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} dependencies: charenc: 0.0.2 crypt: 0.0.2 dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.4: + /shell-quote@1.7.4: resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} dev: true - /shiki-renderer-hast/1.1.5_shiki@0.12.1: + /shiki-renderer-hast@1.1.5(shiki@0.12.1): resolution: {integrity: sha512-XOHX0/mIRJZnqPNGoyyJ9bUrqUwj/tLUJQ5SuU/UkQLTiSJjiHaCP17HRB7/VSQoor4+WJF3QkT8BXbipyJN0Q==} peerDependencies: shiki: ^0.9 || ^0.10.0 @@ -13288,7 +13341,7 @@ packages: shiki: 0.12.1 dev: false - /shiki/0.12.1: + /shiki@0.12.1: resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==} dependencies: jsonc-parser: 3.2.0 @@ -13296,7 +13349,7 @@ packages: vscode-textmate: 8.0.0 dev: false - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -13304,19 +13357,19 @@ packages: object-inspect: 1.12.2 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signedsource/1.0.0: + /signedsource@1.0.0: resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} - /simple-swizzle/0.2.2: + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 dev: false - /sirv/1.0.19: + /sirv@1.0.19: resolution: {integrity: sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==} engines: {node: '>= 10'} dependencies: @@ -13325,10 +13378,10 @@ packages: totalist: 1.1.0 dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - /size-limit/8.2.4: + /size-limit@8.2.4: resolution: {integrity: sha512-Un16nSreD1v2CYwSorattiJcHuAWqXvg4TsGgzpjnoByqQwsSfCIEQHuaD14HNStzredR8cdsO9oGH91ibypTA==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true @@ -13341,20 +13394,20 @@ packages: picocolors: 1.0.0 dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /slash/4.0.0: + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} - /slash/5.0.0: + /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} dev: false - /slice-ansi/5.0.0: + /slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} dependencies: @@ -13362,7 +13415,7 @@ packages: is-fullwidth-code-point: 4.0.0 dev: true - /smartwrap/2.0.2: + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -13375,129 +13428,130 @@ packages: yargs: 15.4.1 dev: true - /snake-case/3.0.4: + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.5.0 - /sonic-boom/3.2.0: + /sonic-boom@3.2.0: resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} dependencies: atomic-sleep: 1.0.0 - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map/0.5.6: + /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - /source-map/0.7.4: + /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} dev: false - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead dev: false - /space-separated-tokens/2.0.1: + /space-separated-tokens@2.0.1: resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==} dev: false - /spawn-command/0.0.2-1: + /spawn-command@0.0.2-1: resolution: {integrity: sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==} dev: true - /spawndamnit/2.0.0: + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: true - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: true - /split/0.3.3: + /split2@4.1.0: + resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + engines: {node: '>= 10.x'} + + /split@0.3.3: resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} dependencies: through: 2.3.8 dev: true - /split2/4.1.0: - resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} - engines: {node: '>= 10.x'} - - /sponge-case/1.0.1: + /sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} dependencies: tslib: 2.5.0 - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - /stack-generator/2.0.10: + /stack-generator@2.0.10: resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} dependencies: stackframe: 1.3.4 dev: false - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 - /stackframe/1.3.4: + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} dev: false - /stacktrace-gps/3.1.2: + /stacktrace-gps@3.1.2: resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} dependencies: source-map: 0.5.6 stackframe: 1.3.4 dev: false - /stacktrace-js/2.0.2: + /stacktrace-js@2.0.2: resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} dependencies: error-stack-parser: 2.1.4 @@ -13505,40 +13559,40 @@ packages: stacktrace-gps: 3.1.2 dev: false - /statuses/2.0.1: + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - /stream-combiner/0.0.4: + /stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} dependencies: duplexer: 0.1.2 dev: true - /stream-transform/2.1.3: + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.4 dev: true - /streamsearch/1.1.0: + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false - /string-argv/0.3.1: + /string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - /string-length/5.0.1: + /string-length@5.0.1: resolution: {integrity: sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==} engines: {node: '>=12.20'} dependencies: @@ -13546,11 +13600,12 @@ packages: strip-ansi: 7.0.1 dev: false - /string-similarity/4.0.4: + /string-similarity@4.0.4: resolution: {integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dev: false - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -13558,7 +13613,7 @@ packages: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width/5.1.2: + /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} dependencies: @@ -13567,7 +13622,7 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.trimend/1.0.5: + /string.prototype.trimend@1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: call-bind: 1.0.2 @@ -13575,7 +13630,7 @@ packages: es-abstract: 1.20.4 dev: true - /string.prototype.trimstart/1.0.5: + /string.prototype.trimstart@1.0.5: resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} dependencies: call-bind: 1.0.2 @@ -13583,78 +13638,78 @@ packages: es-abstract: 1.20.4 dev: true - /string_decoder/1.3.0: + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 dev: true - /stringify-entities/4.0.3: + /stringify-entities@4.0.3: resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} dependencies: character-entities-html4: 2.1.0 character-entities-legacy: 3.0.0 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - /strip-ansi/7.0.1: + /strip-ansi@7.0.1: resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - /strip-bom-string/1.0.0: + /strip-bom-string@1.0.0: resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} engines: {node: '>=0.10.0'} dev: false - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-indent/4.0.0: + /strip-indent@4.0.0: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/2.0.1: + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - /strtok3/7.0.0: + /strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} dependencies: @@ -13662,20 +13717,20 @@ packages: peek-readable: 5.0.0 dev: true - /style-to-object/0.3.0: + /style-to-object@0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: inline-style-parser: 0.1.1 dev: false - /style-value-types/5.0.0: + /style-value-types@5.0.0: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: hey-listen: 1.0.8 tslib: 2.5.0 dev: false - /styled-jsx/5.0.7_react@17.0.2: + /styled-jsx@5.0.7(react@17.0.2): resolution: {integrity: sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -13690,11 +13745,11 @@ packages: dependencies: react: 17.0.2 - /stylis/4.1.3: + /stylis@4.1.3: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /subscriptions-transport-ws-envelop/2.0.2_graphql@16.6.0+ws@8.11.0: + /subscriptions-transport-ws-envelop@2.0.2(graphql@16.6.0)(ws@8.13.0): resolution: {integrity: sha512-HMwQgdiMBgWC48LplRtDsgrdQKnsns7VvLZTN1eIFNT01XJd6yuuudrl85TbO5QnTAiw6g2Sh5bjTFYKjFIGwQ==} peerDependencies: graphql: '*' @@ -13703,12 +13758,12 @@ packages: backo2: 1.0.2 eventemitter3: 4.0.7 graphql: 16.6.0 - isomorphic-ws: 4.0.1_ws@8.11.0 + isomorphic-ws: 4.0.1(ws@8.13.0) iterall: 1.3.0 symbol-observable: 4.0.0 - ws: 8.11.0 + ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) - /supertap/3.0.1: + /supertap@3.0.1: resolution: {integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -13718,46 +13773,46 @@ packages: strip-ansi: 7.0.1 dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swap-case/2.0.2: + /swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} dependencies: tslib: 2.5.0 - /symbol-observable/4.0.0: + /symbol-observable@4.0.0: resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} engines: {node: '>=0.10'} - /symbol-tree/3.2.4: + /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /tabbable/5.3.3: + /tabbable@5.3.3: resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==} dev: false - /tailwindcss/2.2.19_gbtt6ss3tbiz4yjtvdr6fbrj44: + /tailwindcss@2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1): resolution: {integrity: sha512-6Ui7JSVtXadtTUo2NtkBBacobzWiQYVjYW0ZnKaP9S1ZCKQ0w7KVNz+YSDI/j7O7KCMHbOkz94ZMQhbT9pOqjw==} engines: {node: '>=12.13.0'} hasBin: true @@ -13766,7 +13821,7 @@ packages: postcss: ^8.0.9 dependencies: arg: 5.0.2 - autoprefixer: 10.4.13_postcss@8.4.21 + autoprefixer: 10.4.13(postcss@8.4.21) bytes: 3.1.2 chalk: 4.1.2 chokidar: 3.5.3 @@ -13789,8 +13844,8 @@ packages: object-hash: 2.2.0 postcss: 8.4.21 postcss-js: 3.0.3 - postcss-load-config: 3.1.4_postcss@8.4.21 - postcss-nested: 5.0.6_postcss@8.4.21 + postcss-load-config: 3.1.4(postcss@8.4.21)(ts-node@10.9.1) + postcss-nested: 5.0.6(postcss@8.4.21) postcss-selector-parser: 6.0.10 postcss-value-parser: 4.2.0 pretty-hrtime: 1.0.3 @@ -13803,17 +13858,17 @@ packages: - ts-node dev: false - /temp-dir/2.0.0: + /temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} dev: true - /temp-dir/3.0.0: + /temp-dir@3.0.0: resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} dev: true - /tempy/3.0.0: + /tempy@3.0.0: resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} dependencies: @@ -13823,12 +13878,12 @@ packages: unique-string: 3.0.0 dev: true - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -13836,97 +13891,97 @@ packages: glob: 7.2.3 minimatch: 3.1.2 - /thread-stream/2.2.0: + /thread-stream@2.2.0: resolution: {integrity: sha512-rUkv4/fnb4rqy/gGy7VuqK6wE1+1DOCOWy4RMeaV69ZHMP11tQKZvZSip1yTgrKCMZzEMcCL/bKfHvSfDHx+iQ==} dependencies: real-require: 0.2.0 - /throttle-debounce/3.0.1: + /throttle-debounce@3.0.1: resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} engines: {node: '>=10'} dev: false - /through/2.3.8: + /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /time-zone/1.0.0: + /time-zone@1.0.0: resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==} engines: {node: '>=4'} dev: true - /timsort/0.3.0: + /timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} dev: false - /tiny-invariant/1.3.1: + /tiny-invariant@1.3.1: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false - /tiny-lru/10.0.1: + /tiny-lru@10.0.1: resolution: {integrity: sha512-Vst+6kEsWvb17Zpz14sRJV/f8bUWKhqm6Dc+v08iShmIJ/WxqWytHzCTd6m88pS33rE2zpX34TRmOpAJPloNCA==} engines: {node: '>=6'} - /tiny-lru/8.0.2: + /tiny-lru@8.0.2: resolution: {integrity: sha512-ApGvZ6vVvTNdsmt676grvCkUCGwzG9IqXma5Z07xJgiC5L7akUMof5U8G2JTI9Rz/ovtVhJBlY6mNhEvtjzOIg==} engines: {node: '>=6'} dev: false - /tinykeys/1.4.0: + /tinykeys@1.4.0: resolution: {integrity: sha512-ysnVd2E4nWbNXIbHaUidcKGLTmNimqP0hdpsD0Ph5hPJ84ntCF6PHj+Jg3im9nZt9/hNsBg/E6m1psHc2KaPnQ==} dev: false - /title-case/3.0.3: + /title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: tslib: 2.5.0 - /titleize/1.0.1: + /titleize@1.0.1: resolution: {integrity: sha512-rUwGDruKq1gX+FFHbTl5qjI7teVO7eOe+C8IcQ7QT+1BK3eEUXJqbZcBOeaRP4FwSC/C1A5jDoIVta0nIQ9yew==} engines: {node: '>=0.10.0'} dev: true - /tmp-promise/3.0.3: + /tmp-promise@3.0.3: resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} dependencies: tmp: 0.2.1 dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toggle-selection/1.0.6: + /toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} - /token-types/5.0.1: + /token-types@5.0.1: resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} engines: {node: '>=14.16'} dependencies: @@ -13934,12 +13989,12 @@ packages: ieee754: 1.2.1 dev: true - /totalist/1.1.0: + /totalist@1.1.0: resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} engines: {node: '>=6'} dev: true - /tough-cookie/4.1.2: + /tough-cookie@4.1.2: resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} engines: {node: '>=6'} dependencies: @@ -13949,44 +14004,44 @@ packages: url-parse: 1.5.10 dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tr46/3.0.0: + /tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: punycode: 2.1.1 dev: true - /tree-kill/1.2.2: + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true dev: true - /trim-lines/3.0.1: + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /trim-newlines/4.0.2: + /trim-newlines@4.0.2: resolution: {integrity: sha512-GJtWyq9InR/2HRiLZgpIKv+ufIKrVrvjQWEj7PxAXNc5dwbNJkqhAUoAGgzRmULAnoOM5EIpveYd3J2VeSAIew==} engines: {node: '>=12'} dev: true - /trough/2.1.0: + /trough@2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-easing/0.2.0: + /ts-easing@0.2.0: resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} dev: false - /ts-jest/29.0.5_7zwficsud2wmcwakxus3xxpqke: + /ts-jest@29.0.5(@jest/types@29.5.0)(esbuild@0.17.12)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -14011,51 +14066,16 @@ packages: bs-logger: 0.2.6 esbuild: 0.17.12 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_@types+node@18.15.5 - jest-util: 29.4.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.3.8 - typescript: 4.9.5 - yargs-parser: 21.1.1 - dev: false - - /ts-jest/29.0.5_kxkw7io5lipdvgpiby7d7545le: - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - bs-logger: 0.2.6 - esbuild: 0.17.12 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_757mb262zsxkcnuknwfdsckmku - jest-util: 29.4.0 + jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.8 typescript: 4.9.5 yargs-parser: 21.1.1 - dev: true - /ts-node/10.9.1_345kigqis4fipgyy5xb3ndshmq: + /ts-node@10.9.1(@types/node@18.15.5)(typescript@4.9.5): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -14084,9 +14104,8 @@ packages: typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsc-watch/6.0.0_typescript@4.9.5: + /tsc-watch@6.0.0(typescript@4.9.5): resolution: {integrity: sha512-zgpju+/z5z29/kK5V28Nz16CMkX2voFOUxkTlCim/R25hxzbyUqu2NfTnmJBQfESBSPbEQUGqDdB9A8opAcB4A==} engines: {node: '>=12.12.0'} hasBin: true @@ -14100,21 +14119,21 @@ packages: typescript: 4.9.5 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib/2.4.0: + /tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - /tslib/2.4.1: + /tslib@2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} dev: false - /tslib/2.5.0: + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} - /tty-table/4.1.6: + /tty-table@4.1.6: resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} engines: {node: '>=8.0.0'} hasBin: true @@ -14128,13 +14147,13 @@ packages: yargs: 17.6.2 dev: true - /twin.macro/2.8.2: + /twin.macro@2.8.2(ts-node@10.9.1): resolution: {integrity: sha512-2Vg09mp+nA70AWUedJ8WRgB2me3buq7JGbOnjHnFnNaBzomVu5k7lJ9YGpByIlre+UYr7QRhtlj7+IUKxvCrUA==} engines: {node: '>=12.13.0'} dependencies: '@babel/parser': 7.20.1 '@babel/template': 7.18.10 - autoprefixer: 10.4.13_postcss@8.4.21 + autoprefixer: 10.4.13(postcss@8.4.21) babel-plugin-macros: 2.8.0 chalk: 4.1.2 clean-set: 1.1.2 @@ -14145,56 +14164,56 @@ packages: lodash.merge: 4.6.2 postcss: 8.4.21 string-similarity: 4.0.4 - tailwindcss: 2.2.19_gbtt6ss3tbiz4yjtvdr6fbrj44 + tailwindcss: 2.2.19(autoprefixer@10.4.13)(postcss@8.4.21)(ts-node@10.9.1) timsort: 0.3.0 transitivePeerDependencies: - ts-node dev: false - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /type-fest/1.4.0: + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} dev: true - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - /type-fest/3.2.0: + /type-fest@3.2.0: resolution: {integrity: sha512-Il3wdLRzWvbAEtocgxGQA9YOoRVeVUGOMBtel5LdEpNeEAol6GJTLw8GbX6Z8EIMfvfhoOXs2bwOijtAZdK5og==} engines: {node: '>=14.16'} - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -14202,15 +14221,15 @@ packages: mime-types: 2.1.35 dev: true - /typescript/4.9.5: + /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /ua-parser-js/0.7.32: + /ua-parser-js@0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -14219,19 +14238,19 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unc-path-regex/0.1.2: + /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} - /undici/5.7.0: + /undici@5.7.0: resolution: {integrity: sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA==} engines: {node: '>=12.18'} - /unfetch/5.0.0: + /unfetch@5.0.0: resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} dev: true - /unified/10.1.2: + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: '@types/unist': 2.0.6 @@ -14240,50 +14259,50 @@ packages: is-buffer: 2.0.5 is-plain-obj: 4.1.0 trough: 2.1.0 - vfile: 5.3.2 + vfile: 5.3.5 dev: false - /unique-string/3.0.0: + /unique-string@3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} dependencies: crypto-random-string: 4.0.0 dev: true - /unist-builder/3.0.0: + /unist-builder@3.0.0: resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-generated/2.0.0: + /unist-util-generated@2.0.0: resolution: {integrity: sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==} dev: false - /unist-util-is/5.1.1: + /unist-util-is@5.1.1: resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==} dev: false - /unist-util-position-from-estree/1.1.1: + /unist-util-position-from-estree@1.1.1: resolution: {integrity: sha512-xtoY50b5+7IH8tFbkw64gisG9tMSpxDjhX9TmaJJae/XuxQ9R/Kc8Nv1eOsf43Gt4KV/LkriMy9mptDr7XLcaw==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-position/4.0.3: + /unist-util-position@4.0.3: resolution: {integrity: sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-remove-position/4.0.1: + /unist-util-remove-position@4.0.1: resolution: {integrity: sha512-0yDkppiIhDlPrfHELgB+NLQD5mfjup3a8UYclHruTJWmY74je8g+CIFr79x5f6AkmzSwlvKLbs63hC0meOMowQ==} dependencies: '@types/unist': 2.0.6 unist-util-visit: 4.1.1 dev: false - /unist-util-remove/3.1.0: + /unist-util-remove@3.1.0: resolution: {integrity: sha512-rO/sIghl13eN8irs5OBN2a4RC10MsJdiePCfwrvnzGtgIbHcDXr2REr0qi9F2r/CIb1r9FyyFmcMRIGs+EyUFw==} dependencies: '@types/unist': 2.0.6 @@ -14291,20 +14310,20 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /unist-util-stringify-position/3.0.2: + /unist-util-stringify-position@3.0.2: resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==} dependencies: '@types/unist': 2.0.6 dev: false - /unist-util-visit-parents/5.1.1: + /unist-util-visit-parents@5.1.1: resolution: {integrity: sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==} dependencies: '@types/unist': 2.0.6 unist-util-is: 5.1.1 dev: false - /unist-util-visit/4.1.1: + /unist-util-visit@4.1.1: resolution: {integrity: sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==} dependencies: '@types/unist': 2.0.6 @@ -14312,39 +14331,39 @@ packages: unist-util-visit-parents: 5.1.1 dev: false - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/0.2.0: + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} dev: false - /unixify/1.0.0: + /unixify@1.0.0: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} dependencies: normalize-path: 2.1.1 dev: false - /unpipe/1.0.0: + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db@1.0.10(browserslist@4.21.4): resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: @@ -14354,36 +14373,36 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 - /update-check/1.5.4: + /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: registry-auth-token: 3.3.2 registry-url: 3.1.0 dev: true - /upper-case-first/2.0.2: + /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: tslib: 2.5.0 - /upper-case/2.0.2: + /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.5.0 - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 - /url-parse/1.5.10: + /url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} dependencies: querystringify: 2.2.0 requires-port: 1.0.0 dev: true - /use-callback-ref/1.3.0_h7fc2el62uaa77gho3xhys6ola: + /use-callback-ref@1.3.0(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -14398,7 +14417,7 @@ packages: tslib: 2.5.0 dev: false - /use-debounce/8.0.4_react@17.0.2: + /use-debounce@8.0.4(react@17.0.2): resolution: {integrity: sha512-fGqsYQzl8kLHF2QpQSgIwgOgJmnh6j5L6SIzQiHdLfwp3q1egUL3btq5Bg2SJysH6A0ILLgT2IqXZKoNJr0nFw==} engines: {node: '>= 10.0.0'} peerDependencies: @@ -14407,7 +14426,7 @@ packages: react: 17.0.2 dev: false - /use-error-boundary/2.0.6_sfoxds7t5ydpegc3knd667wn6m: + /use-error-boundary@2.0.6(react-dom@17.0.2)(react@17.0.2): resolution: {integrity: sha512-AWCVKSAanLe6R/on/ZkHYtGKfXs8BQX6z/TUGYqtvkajLqQyrGKJJscbahtq8OyN8L3LqTRjJWx4gCOLmfIObw==} peerDependencies: react: '>=16.9.0' @@ -14417,10 +14436,10 @@ packages: optional: true dependencies: react: 17.0.2 - react-dom: 17.0.2_react@17.0.2 + react-dom: 17.0.2(react@17.0.2) dev: false - /use-immer/0.6.0_immer@9.0.12+react@17.0.2: + /use-immer@0.6.0(immer@9.0.12)(react@17.0.2): resolution: {integrity: sha512-dFGRfvWCqPDTOt/S431ETYTg6+uxbpb7A1pptufwXVzGJY3RlXr38+3wyLNpc6SbbmAKjWl6+EP6uW74fkEsXQ==} peerDependencies: immer: '>=2.0.0' @@ -14430,7 +14449,7 @@ packages: react: 17.0.2 dev: false - /use-sidecar/1.1.2_h7fc2el62uaa77gho3xhys6ola: + /use-sidecar@1.1.2(@types/react@17.0.53)(react@17.0.2): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -14446,30 +14465,29 @@ packages: tslib: 2.5.0 dev: false - /use-sync-external-store/1.2.0_react@17.0.2: + /use-sync-external-store@1.2.0(react@17.0.2): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 17.0.2 - /utf-8-validate/6.0.3: + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.5.0 - dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /utils-merge/1.0.1: + /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true - /uvu/0.5.6: + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} hasBin: true @@ -14480,11 +14498,10 @@ packages: sade: 1.8.1 dev: false - /v8-compile-cache-lib/3.0.1: + /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true - /v8-to-istanbul/9.0.1: + /v8-to-istanbul@9.0.1: resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} engines: {node: '>=10.12.0'} dependencies: @@ -14492,35 +14509,34 @@ packages: '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: true - /value-or-promise/1.0.11: + /value-or-promise@1.0.11: resolution: {integrity: sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==} engines: {node: '>=12'} dev: false - /value-or-promise/1.0.12: + /value-or-promise@1.0.12: resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} engines: {node: '>=12'} - dev: true - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vfile-location/4.0.1: + /vfile-location@4.0.1: resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==} dependencies: '@types/unist': 2.0.6 vfile: 5.3.5 dev: false - /vfile-matter/3.0.1: + /vfile-matter@3.0.1: resolution: {integrity: sha512-CAAIDwnh6ZdtrqAuxdElUqQRQDQgbbIrYtDYI8gCjXS1qQ+1XdLoK8FIZWxJwn0/I+BkSSZpar3SOgjemQz4fg==} dependencies: '@types/js-yaml': 4.0.5 @@ -14528,14 +14544,14 @@ packages: js-yaml: 4.1.0 dev: false - /vfile-message/3.1.2: + /vfile-message@3.1.2: resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==} dependencies: '@types/unist': 2.0.6 unist-util-stringify-position: 3.0.2 dev: false - /vfile/5.3.2: + /vfile@5.3.2: resolution: {integrity: sha512-w0PLIugRY3Crkgw89TeMvHCzqCs/zpreR31hl4D92y6SOE07+bfJe+dK5Q2akwS+i/c801kzjoOr9gMcTe6IAA==} dependencies: '@types/unist': 2.0.6 @@ -14544,7 +14560,7 @@ packages: vfile-message: 3.1.2 dev: false - /vfile/5.3.5: + /vfile@5.3.5: resolution: {integrity: sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==} dependencies: '@types/unist': 2.0.6 @@ -14553,7 +14569,7 @@ packages: vfile-message: 3.1.2 dev: false - /vite/4.2.1_@types+node@18.15.5: + /vite@4.2.1(@types/node@18.15.5): resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -14587,31 +14603,31 @@ packages: fsevents: 2.3.2 dev: true - /void-elements/3.1.0: + /void-elements@3.1.0: resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} engines: {node: '>=0.10.0'} dev: false - /vscode-oniguruma/1.7.0: + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: false - /vscode-textmate/8.0.0: + /vscode-textmate@8.0.0: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: false - /w3c-xmlserializer/3.0.0: + /w3c-xmlserializer@3.0.0: resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} engines: {node: '>=12'} dependencies: xml-name-validator: 4.0.0 dev: true - /wait-for-expect/3.0.2: + /wait-for-expect@3.0.2: resolution: {integrity: sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==} dev: false - /wait-on/7.0.1: + /wait-on@7.0.1: resolution: {integrity: sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==} engines: {node: '>=12.0.0'} hasBin: true @@ -14625,41 +14641,41 @@ packages: - debug dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 - /warning/4.0.3: + /warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} dependencies: loose-envify: 1.4.0 dev: false - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-streams-polyfill/3.2.1: + /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} - /web-streams-polyfill/4.0.0-beta.3: + /web-streams-polyfill@4.0.0-beta.3: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} dev: false - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - /webidl-conversions/7.0.0: + /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} dev: true - /webpack-bundle-analyzer/4.3.0: + /webpack-bundle-analyzer@4.3.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-J3TPm54bPARx6QG8z4cKBszahnUglcv70+N+8gUqv2I5KOFHJbzBiLx+pAp606so0X004fxM7hqRu10MLjJifA==} engines: {node: '>= 10.13.0'} hasBin: true @@ -14672,30 +14688,30 @@ packages: lodash: 4.17.21 opener: 1.5.2 sirv: 1.0.19 - ws: 7.5.9 + ws: 7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /well-known-symbols/2.0.0: + /well-known-symbols@2.0.0: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} dev: true - /whatwg-encoding/2.0.0: + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype/3.0.0: + /whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} dev: true - /whatwg-url/11.0.0: + /whatwg-url@11.0.0: resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} engines: {node: '>=12'} dependencies: @@ -14703,13 +14719,13 @@ packages: webidl-conversions: 7.0.0 dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -14719,7 +14735,7 @@ packages: is-symbol: 1.0.4 dev: true - /which-collection/1.0.1: + /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} dependencies: is-map: 2.0.2 @@ -14728,10 +14744,10 @@ packages: is-weakset: 2.0.2 dev: true - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} - /which-pm/2.0.0: + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -14739,7 +14755,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array/1.1.8: + /which-typed-array@1.1.8: resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} engines: {node: '>= 0.4'} dependencies: @@ -14751,33 +14767,33 @@ packages: is-typed-array: 1.1.9 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 - /widest-line/4.0.1: + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} dependencies: string-width: 5.1.2 dev: true - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -14785,7 +14801,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -14793,7 +14809,7 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi/8.0.1: + /wrap-ansi@8.0.1: resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} engines: {node: '>=12'} dependencies: @@ -14802,17 +14818,17 @@ packages: strip-ansi: 7.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - /write-file-atomic/5.0.0: + /write-file-atomic@5.0.0: resolution: {integrity: sha512-R7NYMnHSlV42K54lwY9lvW6MnSm1HSJqZL3xiSgi9E7//FYaI74r2G0rd+/X6VAMkHEdzxQaU5HUOXWUz5kA/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: @@ -14820,7 +14836,7 @@ packages: signal-exit: 3.0.7 dev: true - /ws/7.5.9: + /ws@7.5.9(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} peerDependencies: @@ -14831,21 +14847,12 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 dev: true - /ws/8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - /ws/8.13.0: + /ws@8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3): resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -14856,8 +14863,11 @@ packages: optional: true utf-8-validate: optional: true + dependencies: + bufferutil: 4.0.7 + utf-8-validate: 6.0.3 - /xdg-default-browser/2.1.0: + /xdg-default-browser@2.1.0: resolution: {integrity: sha512-HY4G725+IDQr16N8XOjAms5qJGArdJaWIuC7Q7A8UXIwj2mifqnPXephazyL7sIkQPvmEoPX3E0v2yFv6hQUNg==} engines: {node: '>=4'} dependencies: @@ -14865,56 +14875,56 @@ packages: titleize: 1.0.1 dev: true - /xml-name-validator/4.0.0: + /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} dev: true - /xmlchars/2.2.0: + /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -14930,7 +14940,7 @@ packages: y18n: 4.0.3 yargs-parser: 18.1.3 - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -14943,7 +14953,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.2: + /yargs@17.6.2: resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} engines: {node: '>=12'} dependencies: @@ -14955,21 +14965,20 @@ packages: y18n: 5.0.8 yargs-parser: 21.1.1 - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} - dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - /yocto-queue/1.0.0: + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true - /zustand/3.7.2_react@17.0.2: + /zustand@3.7.2(react@17.0.2): resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==} engines: {node: '>=12.7.0'} peerDependencies: @@ -14981,15 +14990,14 @@ packages: react: 17.0.2 dev: false - /zwitch/2.0.2: + /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: false - file:packages/cli_graphql@17.0.0-alpha.2: - resolution: {directory: packages/cli, type: directory} - id: file:packages/cli + file:packages/cli/dist(graphql@17.0.0-alpha.2): + resolution: {directory: packages/cli/dist, type: directory} + id: file:packages/cli/dist name: '@gqty/cli' - version: 3.3.0 engines: {node: ^12.20.0 || >=14.13.0} hasBin: true peerDependencies: @@ -14998,16 +15006,15 @@ packages: graphql: optional: true dependencies: - gqty: link:packages/gqty + gqty: link:packages/gqty/dist graphql: 17.0.0-alpha.2 undici: 5.7.0 dev: true - file:packages/gqty_graphql@17.0.0-alpha.2: - resolution: {directory: packages/gqty, type: directory} - id: file:packages/gqty + file:packages/gqty/dist(graphql@17.0.0-alpha.2): + resolution: {directory: packages/gqty/dist, type: directory} + id: file:packages/gqty/dist name: gqty - version: 2.3.0 engines: {node: ^12.20.0 || >=14.13.0} peerDependencies: graphql: '*' @@ -15015,6 +15022,6 @@ packages: graphql: optional: true dependencies: - '@gqty/utils': link:packages/utils + '@gqty/utils': link:packages/utils/dist graphql: 17.0.0-alpha.2 dev: true From ee26393fd05aa49bbb5e95d132bddd7a72e94af5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:00:20 -0500 Subject: [PATCH 114/122] no injected --- integration/graphql-17/package.json | 8 ----- pnpm-lock.yaml | 53 +++-------------------------- 2 files changed, 4 insertions(+), 57 deletions(-) diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json index d8d158638..860245924 100644 --- a/integration/graphql-17/package.json +++ b/integration/graphql-17/package.json @@ -21,13 +21,5 @@ "graphql": "17.0.0-alpha.2", "graphql-ez": "^0.16.0", "typescript": "^4.9.5" - }, - "dependenciesMeta": { - "@gqty/cli": { - "injected": true - }, - "gqty": { - "injected": true - } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dade620de..335f4786a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,7 +486,7 @@ importers: devDependencies: '@gqty/cli': specifier: workspace:^3.3.0 - version: file:packages/cli/dist(graphql@17.0.0-alpha.2) + version: link:../../packages/cli/dist '@graphql-ez/fastify': specifier: ^0.12.0 version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@17.0.0-alpha.2) @@ -516,7 +516,7 @@ importers: version: 4.11.0 gqty: specifier: workspace:^2.3.0 - version: file:packages/gqty/dist(graphql@17.0.0-alpha.2) + version: link:../../packages/gqty/dist graphql: specifier: 17.0.0-alpha.2 version: 17.0.0-alpha.2 @@ -526,11 +526,6 @@ importers: typescript: specifier: ^4.9.5 version: 4.9.5 - dependenciesMeta: - '@gqty/cli': - injected: true - gqty: - injected: true internal/test-utils: dependencies: @@ -8916,14 +8911,6 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -13075,7 +13062,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rtl-css-js@1.16.0: @@ -14600,7 +14587,7 @@ packages: resolve: 1.22.1 rollup: 3.19.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /void-elements@3.1.0: @@ -14993,35 +14980,3 @@ packages: /zwitch@2.0.2: resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==} dev: false - - file:packages/cli/dist(graphql@17.0.0-alpha.2): - resolution: {directory: packages/cli/dist, type: directory} - id: file:packages/cli/dist - name: '@gqty/cli' - engines: {node: ^12.20.0 || >=14.13.0} - hasBin: true - peerDependencies: - graphql: '*' - peerDependenciesMeta: - graphql: - optional: true - dependencies: - gqty: link:packages/gqty/dist - graphql: 17.0.0-alpha.2 - undici: 5.7.0 - dev: true - - file:packages/gqty/dist(graphql@17.0.0-alpha.2): - resolution: {directory: packages/gqty/dist, type: directory} - id: file:packages/gqty/dist - name: gqty - engines: {node: ^12.20.0 || >=14.13.0} - peerDependencies: - graphql: '*' - peerDependenciesMeta: - graphql: - optional: true - dependencies: - '@gqty/utils': link:packages/utils/dist - graphql: 17.0.0-alpha.2 - dev: true From 929d40795aa4a0eff823f627e081f5f6640986c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:02:14 -0500 Subject: [PATCH 115/122] disable renovate --- renovate.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 3567d7de8..c6ba43b68 100644 --- a/renovate.json +++ b/renovate.json @@ -15,5 +15,6 @@ "platformAutomerge": true } ], - "ignoreDeps": ["pnpm"] + "ignoreDeps": ["pnpm"], + "enabled": false } From 0ad7b67cad459812de9d81ef63d5bc85b1145fcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:05:32 -0500 Subject: [PATCH 116/122] ts-jest deprecation fix and disable broken --- integration/graphql-17/package.json | 2 +- internal/test-utils/jest.config.js | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/integration/graphql-17/package.json b/integration/graphql-17/package.json index 860245924..cab11f055 100644 --- a/integration/graphql-17/package.json +++ b/integration/graphql-17/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "generate": "bob-tsm src/generate.ts", - "test": "pnpm i --ignore-scripts && c8 ava" + "test-disabled": "pnpm i --ignore-scripts && c8 ava" }, "devDependencies": { "@gqty/cli": "workspace:^3.3.0", diff --git a/internal/test-utils/jest.config.js b/internal/test-utils/jest.config.js index b6b7765ba..4ace177f2 100644 --- a/internal/test-utils/jest.config.js +++ b/internal/test-utils/jest.config.js @@ -10,14 +10,16 @@ process.env.TS_JEST_HOOKS = require.resolve('./tsJestHooks.js'); * @type {import("@jest/types").Config.InitialOptions} */ const defaultConfig = { - globals: { - 'ts-jest': { - tsconfig: require.resolve('./test/tsconfig.json'), - isolatedModules: true, - }, - }, preset: 'ts-jest', - transform: { '\\.[jt]sx?$': 'ts-jest' }, + transform: { + '\\.[jt]sx?$': [ + 'ts-jest', + { + tsconfig: require.resolve('./test/tsconfig.json'), + isolatedModules: true, + }, + ], + }, transformIgnorePatterns: ['[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$'], modulePathIgnorePatterns: ['/dist/'], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], From 540498dd37f1431fcb9c9645bb0b87c54f5b6241 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:07:02 -0500 Subject: [PATCH 117/122] fix create require --- packages/cli/src/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 1051785b8..ee2453d63 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -8,7 +8,8 @@ import { __innerState } from './innerState'; import type { IntrospectionOptions } from './introspection'; import { formatPrettier } from './prettier'; -const cjsRequire = globalThis.require || createRequire(import.meta.url); +const cjsRequire = + globalThis.require || createRequire(import.meta.url.toString()); export type GQtyConfig = GenerateOptions & { /** From a14b31badbf575ba9d10ce851cafcf0507012f50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:17:26 -0500 Subject: [PATCH 118/122] skip ts error --- packages/gqty/src/Client/compat/subscriptionsClient.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/gqty/src/Client/compat/subscriptionsClient.ts b/packages/gqty/src/Client/compat/subscriptionsClient.ts index 10748247e..258657624 100644 --- a/packages/gqty/src/Client/compat/subscriptionsClient.ts +++ b/packages/gqty/src/Client/compat/subscriptionsClient.ts @@ -67,7 +67,8 @@ export const createLegacySubscriptionsClient = ( } }; - const client = { + // @ts-expect-error This type missing needs to be fixed + const client: Client = { subscribe: < TData = Record, TExtensions = Record From 03c14a76aac4692d3916720aeb591844b984e3fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:20:02 -0500 Subject: [PATCH 119/122] rollback canary --- .github/workflows/canary.yaml | 44 ++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/.github/workflows/canary.yaml b/.github/workflows/canary.yaml index 855dd1ad3..71a06e4c1 100644 --- a/.github/workflows/canary.yaml +++ b/.github/workflows/canary.yaml @@ -6,12 +6,38 @@ on: - main jobs: - release-canary: - uses: the-guild-org/shared-config/.github/workflows/release-snapshot.yml@main - with: - packageManager: pnpm - nodeVersion: 16 # align with the-guild-org/changesets-snapshot-action - npmTag: canary - secrets: - githubToken: ${{ secrets.GITHUB_TOKEN }} - npmToken: ${{ secrets.NPM_TOKEN }} + publish-canary: + name: Publish Canary + runs-on: ubuntu-latest + if: github.event.pull_request.head.repo.full_name == github.repository + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + with: + # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits + fetch-depth: 0 + + - uses: pnpm/action-setup@v2.2.4 + with: + version: ^8.14.0 + - name: Setup Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: 'pnpm' + + - name: Setup NPM credentials + run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Install Dependencies + run: pnpm install + + - name: Release Canary + id: canary + uses: 'kamilkisiela/release-canary@master' + with: + npm-token: ${{ secrets.NPM_TOKEN }} + npm-script: 'pnpm release:canary' + changesets: true From 71982018a216cea238d1a8d8d40180703be406df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:23:33 -0500 Subject: [PATCH 120/122] dedupe and put package manager --- .github/workflows/canary.yaml | 44 +- package.json | 3 +- pnpm-lock.yaml | 2027 ++++++--------------------------- 3 files changed, 382 insertions(+), 1692 deletions(-) diff --git a/.github/workflows/canary.yaml b/.github/workflows/canary.yaml index 71a06e4c1..855dd1ad3 100644 --- a/.github/workflows/canary.yaml +++ b/.github/workflows/canary.yaml @@ -6,38 +6,12 @@ on: - main jobs: - publish-canary: - name: Publish Canary - runs-on: ubuntu-latest - if: github.event.pull_request.head.repo.full_name == github.repository - steps: - - name: Checkout Repo - uses: actions/checkout@v3 - with: - # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits - fetch-depth: 0 - - - uses: pnpm/action-setup@v2.2.4 - with: - version: ^8.14.0 - - name: Setup Node.js 18.x - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - - name: Setup NPM credentials - run: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Install Dependencies - run: pnpm install - - - name: Release Canary - id: canary - uses: 'kamilkisiela/release-canary@master' - with: - npm-token: ${{ secrets.NPM_TOKEN }} - npm-script: 'pnpm release:canary' - changesets: true + release-canary: + uses: the-guild-org/shared-config/.github/workflows/release-snapshot.yml@main + with: + packageManager: pnpm + nodeVersion: 16 # align with the-guild-org/changesets-snapshot-action + npmTag: canary + secrets: + githubToken: ${{ secrets.GITHUB_TOKEN }} + npmToken: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 5e609c3d2..fee4202c3 100644 --- a/package.json +++ b/package.json @@ -80,5 +80,6 @@ "patchedDependencies": { "use-sync-external-store@1.2.0": "patches/use-sync-external-store@1.2.0.patch" } - } + }, + "packageManager": "pnpm@8.14.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cbeb92ae..092841084 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,7 +48,7 @@ importers: version: 1.1.3 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 bob-esbuild: specifier: 5.0.0-alpha-227aebc.0 version: 5.0.0-alpha-227aebc.0(esbuild@0.18.20)(typescript@5.3.3) @@ -57,7 +57,7 @@ importers: version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) bob-ts: specifier: 5.0.0-alpha-227aebc.0 - version: 5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.18.20)(typescript@5.3.3) + version: 5.0.0-alpha-227aebc.0(@types/node@18.19.6)(esbuild@0.18.20)(typescript@5.3.3) bob-tsm: specifier: 2.0.0-alpha-227aebc.0 version: 2.0.0-alpha-227aebc.0(esbuild@0.18.20)(typescript@5.3.3) @@ -84,7 +84,7 @@ importers: version: 8.0.3 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) open: specifier: ^8.4.2 version: 8.4.2 @@ -99,13 +99,13 @@ importers: version: 4.4.0 semver: specifier: ^7.3.8 - version: 7.3.8 + version: 7.5.4 ts-jest: specifier: ^29.1.0 version: 29.1.1(@babel/core@7.23.7)(esbuild@0.18.20)(jest@29.5.0)(typescript@5.3.3) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.15.5)(typescript@5.3.3) + version: 10.9.1(@types/node@18.19.6)(typescript@5.3.3) tslib: specifier: ^2.5.0 version: 2.5.0 @@ -208,25 +208,25 @@ importers: version: link:../../packages/subscriptions/dist '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-altair': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.11.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-dataloader': specifier: ^0.8.0 - version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-upload': specifier: ^0.8.0 - version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0) + version: 0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.8.1) '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.19.6)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.8.1)(utf-8-validate@6.0.3) '@react-hookz/web': specifier: ^22.0.0 version: 22.0.0(react-dom@17.0.2)(react@17.0.2) @@ -247,13 +247,13 @@ importers: version: link:../../packages/gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.8.1 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + version: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) graphql-upload: specifier: ^13.0.0 - version: 13.0.0(graphql@16.6.0) + version: 13.0.0(graphql@16.8.1) ms: specifier: ^2.1.3 version: 2.1.3 @@ -296,16 +296,16 @@ importers: version: 4.14.191 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 '@types/react': specifier: ^17.0.53 version: 17.0.53 '@types/react-dom': specifier: ^18.0.11 - version: 18.0.11 + version: 18.2.7 bob-tsm: specifier: 2.0.0-alpha-227aebc.0 - version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@5.3.3) + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.19)(typescript@5.3.3) concurrently: specifier: ^7.6.0 version: 7.6.0 @@ -314,10 +314,10 @@ importers: version: 7.0.3 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.19 jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -366,37 +366,37 @@ importers: dependencies: '@graphql-ez/fastify': specifier: ^0.12.0 - version: 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.12.0(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/fastify-testing': specifier: ^0.4.0 - version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-codegen': specifier: ^0.8.0 - version: 0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.8.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@graphql-ez/plugin-schema': specifier: ^0.9.0 - version: 0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0) + version: 0.9.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1) '@rollup/plugin-babel': specifier: ^6.0.3 version: 6.0.3(@babel/core@7.23.7) '@types/jest': specifier: ^29.5.0 - version: 29.5.0 + version: 29.5.11 cross-env: specifier: ^7.0.3 version: 7.0.3 fastify: specifier: ^4.11.0 - version: 4.11.0 + version: 4.25.2 graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.8.1 graphql-ez: specifier: ^0.16.0 - version: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + version: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) jest-watch-typeahead: specifier: ^2.2.2 version: 2.2.2(jest@29.5.0) @@ -409,13 +409,13 @@ importers: devDependencies: '@graphql-ez/plugin-websockets': specifier: ^0.11.0 - version: 0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3) + version: 0.11.0(@types/node@18.19.6)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.8.1)(utf-8-validate@6.0.3) '@jest/types': specifier: ^29.5.0 version: 29.5.0 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 '@types/randomstring': specifier: ^1.1.8 version: 1.1.8 @@ -424,13 +424,13 @@ importers: version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) bob-ts: specifier: 5.0.0-alpha-227aebc.0 - version: 5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@5.3.3) + version: 5.0.0-alpha-227aebc.0(@types/node@18.19.6)(esbuild@0.17.19)(typescript@5.3.3) concurrently: specifier: ^7.6.0 version: 7.6.0 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.19 tslib: specifier: ^2.5.0 version: 2.5.0 @@ -466,7 +466,7 @@ importers: version: 3.1.5 fast-glob: specifier: ^3.2.12 - version: 3.2.12 + version: 3.3.2 gqty: specifier: workspace:^ version: link:../gqty/dist @@ -512,13 +512,13 @@ importers: version: 0.7.31 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 bob-tsm: specifier: 2.0.0-alpha-227aebc.0 - version: 2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@5.3.3) + version: 2.0.0-alpha-227aebc.0(esbuild@0.17.19)(typescript@5.3.3) esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.19 open-cli: specifier: ^7.2.0 version: 7.2.0 @@ -586,7 +586,7 @@ importers: version: 1.0.2 '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 '@types/object-hash': specifier: ^3.0.2 version: 3.0.6 @@ -607,19 +607,19 @@ importers: version: 7.0.3 esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.19 graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.8.1 graphql-sse: specifier: ^2.1.0 - version: 2.5.2(graphql@16.6.0) + version: 2.5.2(graphql@16.8.1) graphql-ws: specifier: ^5.11.3 - version: 5.14.3(graphql@16.6.0) + version: 5.14.3(graphql@16.8.1) jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) mkdirp: specifier: ^2.1.5 version: 2.1.5 @@ -663,19 +663,19 @@ importers: version: 8.2.4(size-limit@8.2.4) '@types/node': specifier: ^18.15.5 - version: 18.15.5 + version: 18.19.6 bob-esbuild-cli: specifier: 5.0.0-alpha-227aebc.0 version: 5.0.0-alpha-227aebc.0(bob-esbuild@5.0.0-alpha-227aebc.0) esbuild: specifier: ^0.17.12 - version: 0.17.12 + version: 0.17.19 gqty: specifier: workspace:^ version: link:../gqty/dist jest: specifier: ^29.5.0 - version: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) size-limit: specifier: ^8.2.4 version: 8.2.4 @@ -758,13 +758,13 @@ importers: version: link:../gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.8.1 graphql-sse: specifier: ^2.1.1 - version: 2.5.2(graphql@16.6.0) + version: 2.5.2(graphql@16.8.1) graphql-ws: specifier: ^5.12.1 - version: 5.14.3(graphql@16.6.0) + version: 5.14.3(graphql@16.8.1) jest: specifier: ^29.5.0 version: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) @@ -826,7 +826,7 @@ importers: version: link:../gqty/dist graphql: specifier: ^16.6.0 - version: 16.6.0 + version: 16.8.1 test-utils: specifier: workspace:^ version: link:../../internal/test-utils @@ -858,35 +858,6 @@ packages: '@jridgewell/gen-mapping': 0.1.1 '@jridgewell/trace-mapping': 0.3.17 - /@ardatan/relay-compiler@12.0.0(graphql@16.6.0): - resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} - hasBin: true - peerDependencies: - graphql: '*' - dependencies: - '@babel/core': 7.23.7 - '@babel/generator': 7.20.1 - '@babel/parser': 7.20.1 - '@babel/runtime': 7.20.13 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 - babel-preset-fbjs: 3.4.0(@babel/core@7.23.7) - chalk: 4.1.2 - fb-watchman: 2.0.2 - fbjs: 3.0.4 - glob: 7.2.3 - graphql: 16.6.0 - immutable: 3.7.6 - invariant: 2.2.4 - nullthrows: 1.1.1 - relay-runtime: 12.0.0 - signedsource: 1.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@ardatan/relay-compiler@12.0.0(graphql@16.8.1): resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true @@ -894,11 +865,11 @@ packages: graphql: '*' dependencies: '@babel/core': 7.23.7 - '@babel/generator': 7.20.1 - '@babel/parser': 7.20.1 - '@babel/runtime': 7.20.13 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 + '@babel/generator': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/runtime': 7.23.8 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 babel-preset-fbjs: 3.4.0(@babel/core@7.23.7) chalk: 4.1.2 fb-watchman: 2.0.2 @@ -916,12 +887,6 @@ packages: - supports-color dev: false - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -929,11 +894,6 @@ packages: '@babel/highlight': 7.23.4 chalk: 2.4.2 - /@babel/compat-data@7.20.1: - resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} @@ -960,14 +920,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.20.1: - resolution: {integrity: sha512-u1dMdBUmA7Z0rBB97xh8pIhviK7oItYOkjbsCxTWMknyvbQRBwX7/gn4JXurRdirWMFh+ZtYARqkA6ydogVZpg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} @@ -977,19 +929,11 @@ packages: '@jridgewell/trace-mapping': 0.3.17 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false - /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} @@ -998,19 +942,6 @@ packages: '@babel/types': 7.23.6 dev: true - /@babel/helper-compilation-targets@7.20.0(@babel/core@7.23.7): - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.1 - '@babel/core': 7.23.7 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - dev: false - /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} engines: {node: '>=6.9.0'} @@ -1021,24 +952,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.19.0(@babel/core@7.23.7): - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} engines: {node: '>=6.9.0'} @@ -1055,7 +968,6 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: true /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} @@ -1079,26 +991,15 @@ packages: '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.0 - /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} @@ -1106,38 +1007,17 @@ packages: '@babel/template': 7.22.15 '@babel/types': 7.23.6 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - /@babel/helper-member-expression-to-functions@7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false - /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: true - - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} @@ -1145,22 +1025,6 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.19.6: - resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.19.4 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -1174,23 +1038,11 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-optimise-call-expression@7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false - /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: true - - /@babel/helper-plugin-utils@7.19.0: - resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} - engines: {node: '>=6.9.0'} /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} @@ -1208,19 +1060,6 @@ packages: '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -1231,14 +1070,6 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - - /@babel/helper-simple-access@7.19.4: - resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -1246,25 +1077,11 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-skip-transparent-expression-wrappers@7.20.0: - resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 - dev: false - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.20.0 /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} @@ -1272,27 +1089,14 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} - engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} - engines: {node: '>=6.9.0'} - dev: false - /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} @@ -1316,14 +1120,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.19.1 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} @@ -1332,13 +1128,6 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.20.1: - resolution: {integrity: sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.20.0 - /@babel/parser@7.23.6: resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} @@ -1387,10 +1176,8 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-create-class-features-plugin': 7.19.0(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 dev: false /@babel/plugin-proposal-object-rest-spread@7.19.4(@babel/core@7.23.7): @@ -1400,12 +1187,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.1 + '@babel/compat-data': 7.23.5 '@babel/core': 7.23.7 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.23.7) - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.20.1(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) dev: false /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7): @@ -1431,7 +1218,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} @@ -1476,7 +1263,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 dev: false /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7): @@ -1522,7 +1309,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -1598,7 +1385,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} @@ -1611,16 +1398,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} @@ -1629,7 +1406,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7): resolution: {integrity: sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==} @@ -1656,16 +1432,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} @@ -1674,17 +1440,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-block-scoping@7.20.0(@babel/core@7.23.7): - resolution: {integrity: sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} @@ -1694,7 +1449,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} @@ -1719,26 +1473,6 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-classes@7.19.0(@babel/core@7.23.7): - resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.23.7) - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7): resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} engines: {node: '>=6.9.0'} @@ -1754,17 +1488,6 @@ packages: '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - dev: true - - /@babel/plugin-transform-computed-properties@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} @@ -1775,17 +1498,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - dev: true - - /@babel/plugin-transform-destructuring@7.20.0(@babel/core@7.23.7): - resolution: {integrity: sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} @@ -1795,7 +1507,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} @@ -1858,20 +1569,10 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.23.7) dev: false - /@babel/plugin-transform-for-of@7.18.8(@babel/core@7.23.7): - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7): resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} engines: {node: '>=6.9.0'} @@ -1881,19 +1582,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true - - /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-compilation-targets': 7.20.0(@babel/core@7.23.7) - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: false /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} @@ -1905,7 +1593,6 @@ packages: '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} @@ -1918,16 +1605,6 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-literals@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} @@ -1936,7 +1613,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} @@ -1949,16 +1625,6 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} @@ -1967,7 +1633,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} @@ -1980,20 +1645,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.19.6(@babel/core@7.23.7): - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} @@ -2004,7 +1655,6 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - dev: true /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} @@ -2087,19 +1737,6 @@ packages: '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} @@ -2109,7 +1746,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) - dev: true /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} @@ -2134,16 +1770,6 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-parameters@7.20.1(@babel/core@7.23.7): - resolution: {integrity: sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} @@ -2152,7 +1778,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} @@ -2178,16 +1803,6 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) dev: true - /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} @@ -2196,7 +1811,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.23.7): resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -2205,7 +1819,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 dev: false /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.23.7): @@ -2215,7 +1829,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.23.7): @@ -2225,7 +1839,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 dev: true /@babel/plugin-transform-react-jsx@7.19.0(@babel/core@7.23.7): @@ -2235,11 +1849,11 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.7 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 + '@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.18.6(@babel/core@7.23.7) - '@babel/types': 7.20.0 + '@babel/types': 7.23.6 dev: false /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7): @@ -2263,16 +1877,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.23.7): - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} @@ -2281,18 +1885,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true - - /@babel/plugin-transform-spread@7.19.0(@babel/core@7.23.7): - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - dev: false /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} @@ -2303,7 +1895,6 @@ packages: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} @@ -2315,16 +1906,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.23.7): - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.7 - '@babel/helper-plugin-utils': 7.19.0 - dev: false - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} @@ -2333,7 +1914,6 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - dev: true /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} @@ -2486,7 +2066,7 @@ packages: dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.20.0 + '@babel/types': 7.23.6 esutils: 2.0.3 dev: true @@ -2494,26 +2074,11 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} dev: true - /@babel/runtime@7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - /@babel/runtime@7.23.8: resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: true - - /@babel/template@7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 /@babel/template@7.22.15: resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} @@ -2523,23 +2088,6 @@ packages: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - /@babel/traverse@7.20.1: - resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.1 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.23.7: resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} engines: {node: '>=6.9.0'} @@ -2557,14 +2105,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.20.0: - resolution: {integrity: sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - /@babel/types@7.23.6: resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} @@ -3364,7 +2904,7 @@ packages: /@changesets/apply-release-plan@6.1.3: resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/config': 2.3.0 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 @@ -3382,7 +2922,7 @@ packages: /@changesets/assemble-release-plan@5.2.3: resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/errors': 0.1.4 '@changesets/get-dependents-graph': 1.3.5 '@changesets/types': 5.2.1 @@ -3410,7 +2950,7 @@ packages: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/apply-release-plan': 6.1.3 '@changesets/assemble-release-plan': 5.2.3 '@changesets/changelog-git': 0.1.14 @@ -3485,7 +3025,7 @@ packages: /@changesets/get-release-plan@3.0.16: resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/assemble-release-plan': 5.2.3 '@changesets/config': 2.3.0 '@changesets/pre': 1.0.14 @@ -3501,7 +3041,7 @@ packages: /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3526,7 +3066,7 @@ packages: /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -3536,7 +3076,7 @@ packages: /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -3557,7 +3097,7 @@ packages: /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -3578,8 +3118,8 @@ packages: /@emotion/babel-plugin@11.10.6: resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.23.8 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -3638,7 +3178,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 @@ -3674,7 +3214,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@emotion/babel-plugin': 11.10.6 '@emotion/is-prop-valid': 1.2.0 '@emotion/react': 11.10.6(@types/react@17.0.53)(react@17.0.2) @@ -3722,36 +3262,22 @@ packages: tslib: 2.5.0 dev: false - /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.6)(graphql@16.6.0): + /@envelop/execute-subscription-event@3.0.4(@envelop/core@3.0.6)(graphql@16.8.1): resolution: {integrity: sha512-xGc8urS9IFqX4NnrSy8zQAs/ugi9ShjX7ddfK2pfl1rI7NPUQ3E1BNb0n7CCnlUBTuM9uIri3Mfs4HTbEsA9Vw==} peerDependencies: '@envelop/core': ^3.0.4 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: '@envelop/core': 3.0.6 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.5.0 dev: false - /@envelop/types@3.0.1: - resolution: {integrity: sha512-Ok62K1K+rlS+wQw77k8Pis8+1/h7+/9Wk5Fgcc2U6M5haEWsLFAHcHsk8rYlnJdEUl2Y3yJcCSOYbt1dyTaU5w==} - dependencies: - tslib: 2.5.0 - /@envelop/types@3.0.2: resolution: {integrity: sha512-pOFea9ha0EkURWxJ/35axoH9fDGP5S2cUu/5Mmo9pb8zUf+TaEot8vB670XXihFEn/92759BMjLJNWBKmNhyng==} dependencies: tslib: 2.5.0 - /@esbuild/android-arm64@0.17.12: - resolution: {integrity: sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -3770,15 +3296,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.12: - resolution: {integrity: sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.17.19: resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -3797,15 +3314,6 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.12: - resolution: {integrity: sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-x64@0.17.19: resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -3824,15 +3332,6 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.12: - resolution: {integrity: sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.17.19: resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -3851,15 +3350,6 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.12: - resolution: {integrity: sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.17.19: resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -3878,15 +3368,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.12: - resolution: {integrity: sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-arm64@0.17.19: resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -3905,15 +3386,6 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.12: - resolution: {integrity: sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.17.19: resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -3932,15 +3404,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.12: - resolution: {integrity: sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm64@0.17.19: resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -3959,15 +3422,6 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.12: - resolution: {integrity: sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-arm@0.17.19: resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -3986,15 +3440,6 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.12: - resolution: {integrity: sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ia32@0.17.19: resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -4013,15 +3458,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.12: - resolution: {integrity: sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.17.19: resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -4040,15 +3476,6 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.12: - resolution: {integrity: sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.17.19: resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -4067,15 +3494,6 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.12: - resolution: {integrity: sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.17.19: resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -4094,15 +3512,6 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.12: - resolution: {integrity: sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-riscv64@0.17.19: resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -4121,15 +3530,6 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.12: - resolution: {integrity: sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-s390x@0.17.19: resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -4148,15 +3548,6 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.12: - resolution: {integrity: sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-x64@0.17.19: resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -4175,15 +3566,6 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.12: - resolution: {integrity: sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/netbsd-x64@0.17.19: resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -4202,15 +3584,6 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.12: - resolution: {integrity: sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/openbsd-x64@0.17.19: resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -4229,15 +3602,6 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.12: - resolution: {integrity: sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /@esbuild/sunos-x64@0.17.19: resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -4256,15 +3620,6 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.12: - resolution: {integrity: sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-arm64@0.17.19: resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -4283,15 +3638,6 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.12: - resolution: {integrity: sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-ia32@0.17.19: resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -4310,15 +3656,6 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.12: - resolution: {integrity: sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /@esbuild/win32-x64@0.17.19: resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -4379,14 +3716,6 @@ packages: engines: {node: '>=14.0.0', npm: '>=6.0.0'} dev: false - /@fastify/ajv-compiler@3.4.0: - resolution: {integrity: sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w==} - dependencies: - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) - fast-uri: 2.1.0 - dev: false - /@fastify/ajv-compiler@3.5.0: resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} dependencies: @@ -4406,18 +3735,8 @@ packages: resolution: {integrity: sha512-E8Hfdvs1bG6u0N4vN5Nty6JONUfTdOciyD5rn8KnEsLKIenvOVcr210BQR9t34PRkNyjqnMLGk3e0BsaxRdL+g==} dev: false - /@fastify/error@3.0.0: - resolution: {integrity: sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg==} - /@fastify/error@3.4.1: resolution: {integrity: sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ==} - dev: false - - /@fastify/fast-json-stringify-compiler@4.1.0: - resolution: {integrity: sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw==} - dependencies: - fast-json-stringify: 5.4.0 - dev: false /@fastify/fast-json-stringify-compiler@4.3.0: resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} @@ -4438,19 +3757,19 @@ packages: /@fastify/under-pressure@8.1.0: resolution: {integrity: sha512-2Nm0UyVxTdssvNTbYVZFSH4C2LwgQcphOxgX6hIQce8jH1sm1gx/wusDBr6+0lyzwE06V537kwA7JeAvysK3xw==} dependencies: - '@fastify/error': 3.0.0 + '@fastify/error': 3.4.1 fastify-plugin: 4.3.0 dev: true - /@graphql-codegen/core@2.6.8(graphql@16.6.0): + /@graphql-codegen/core@2.6.8(graphql@16.8.1): resolution: {integrity: sha512-JKllNIipPrheRgl+/Hm/xuWMw9++xNQ12XJR/OHHgFopOg4zmN3TdlRSyYcv/K90hCFkkIwhlHFUQTfKrm8rxQ==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/schema': 9.0.15(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-tools/schema': 9.0.15(graphql@16.8.1) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) + graphql: 16.8.1 tslib: 2.4.1 dev: false @@ -4466,15 +3785,15 @@ packages: tslib: 2.5.0 dev: false - /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.6.0): + /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.8.1): resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.6.0 + graphql: 16.8.1 import-from: 4.0.0 lodash: 4.17.21 tslib: 2.4.1 @@ -4494,14 +3813,14 @@ packages: tslib: 2.5.0 dev: false - /@graphql-codegen/schema-ast@2.6.1(graphql@16.6.0): + /@graphql-codegen/schema-ast@2.6.1(graphql@16.8.1): resolution: {integrity: sha512-5TNW3b1IHJjCh07D2yQNGDQzUpUl2AD+GVe1Dzjqyx/d2Fn0TPMxLsHsKPS4Plg4saO8FK/QO70wLsP7fdbQ1w==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) + graphql: 16.8.1 tslib: 2.4.1 dev: false @@ -4516,65 +3835,65 @@ packages: tslib: 2.5.0 dev: false - /@graphql-codegen/typed-document-node@2.3.10(graphql@16.6.0): + /@graphql-codegen/typed-document-node@2.3.10(graphql@16.8.1): resolution: {integrity: sha512-FcEKubvEl2bHZG2N7u0AwioRYQmhBDRb/JXNBoNXjv9hg32juwejbilS9WWxgcxS13nPj14byEPfHs6GDrKZLw==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript-operations@2.5.10(graphql@16.6.0): + /@graphql-codegen/typescript-operations@2.5.10(graphql@16.8.1): resolution: {integrity: sha512-N5H7JhcMRzjM2KdvCitqkOd4hphzD9q3NVWGLvBe3Xgqx5Cs3Y4GUcCJbRolSXdQcYBVgZpLZrUe/qoxwYyfeg==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.8.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.6.0): + /@graphql-codegen/typescript-resolvers@2.7.10(graphql@16.8.1): resolution: {integrity: sha512-MCts4Vq4l8j5zxbfSjm3bkqYOsMWF9yzzNakYSTWsQZqxqAggsiMz18GTdhQvWCtFt6eKYadVrX3WDZBLuAHOA==} 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': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 2.13.5(graphql@16.8.1) + '@graphql-tools/utils': 8.13.1(graphql@16.8.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@graphql-codegen/typescript@2.8.8(graphql@16.6.0): + /@graphql-codegen/typescript@2.8.8(graphql@16.8.1): resolution: {integrity: sha512-A0oUi3Oy6+DormOlrTC4orxT9OBZkIglhbJBcDmk34jAKKUgesukXRd4yOhmTrnbchpXz2T8IAOFB3FWIaK4Rw==} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-codegen/schema-ast': 2.6.1(graphql@16.6.0) - '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-codegen/schema-ast': 2.6.1(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.8.1) auto-bind: 4.0.0 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.4.1 transitivePeerDependencies: - encoding @@ -4597,20 +3916,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.6.0): + /@graphql-codegen/visitor-plugin-common@2.13.5(graphql@16.8.1): resolution: {integrity: sha512-OV/mGnSvB/WkEqFu/3bPkAPDNRGRB3xONww5+06CObl383yGrasqM04shYYK4cpcCn9PVWFe8u0SLSEeGmMVrg==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-tools/optimize': 1.3.1(graphql@16.8.1) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.8.1) + '@graphql-tools/utils': 8.13.1(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -4618,20 +3937,20 @@ packages: - supports-color dev: false - /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.6.0): + /@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.8.1): resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} 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': 3.1.2(graphql@16.6.0) - '@graphql-tools/optimize': 1.3.1(graphql@16.6.0) - '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-tools/optimize': 1.3.1(graphql@16.8.1) + '@graphql-tools/relay-operation-optimizer': 6.5.8(graphql@16.8.1) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.6.0 - graphql-tag: 2.12.6(graphql@16.6.0) + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: @@ -4660,7 +3979,7 @@ packages: - supports-color dev: false - /@graphql-ez/client@0.6.1(@types/node@18.15.5)(graphql@16.6.0): + /@graphql-ez/client@0.6.1(@types/node@18.19.6)(graphql@16.8.1): resolution: {integrity: sha512-WdyK6Lqn7woRtZ6ccs+i8eLDKdFqwYpx4idsAk6hyXWrdR5SCVuuoziZZpFv+sQuIeR34SDpZGv3oxREaFWcag==} peerDependencies: '@graphql-typed-document-node/core': '*' @@ -4670,13 +3989,13 @@ packages: '@graphql-typed-document-node/core': optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 - graphql: 16.6.0 + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@types/node': 18.19.6 + graphql: 16.8.1 undici: 5.7.0 dev: false - /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify-testing@0.4.0(@graphql-ez/fastify@0.12.0)(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-ZnrrF9A5RY72XTDt5YFsJLYK3jyZpPXRhzRvHjItM26skGAyHrSE3azgHznIVCWxvrZZb4jtu0yQRcAwPd9nuA==} peerDependencies: '@graphql-ez/fastify': 0.12.0 @@ -4684,40 +4003,18 @@ packages: graphql: '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/client': 0.6.1(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-ez/fastify': 0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/client': 0.6.1(@types/node@18.19.6)(graphql@16.8.1) + '@graphql-ez/fastify': 0.12.0(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1) + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + fastify: 4.25.2 + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) transitivePeerDependencies: - '@graphql-typed-document-node/core' - '@types/node' dev: false - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.11.0)(graphql-ez@0.16.0)(graphql@16.6.0): - resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} - engines: {node: '>=14.13.1'} - peerDependencies: - '@types/node': '*' - fastify: ^4.7.0 - graphql: '*' - graphql-ez: ^0.16.0 - peerDependenciesMeta: - fastify: - optional: true - graphql: - optional: true - dependencies: - '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 - fastify: 4.11.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - dev: false - - /@graphql-ez/fastify@0.12.0(@types/node@18.15.5)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/fastify@0.12.0(@types/node@18.19.6)(fastify@4.25.2)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-U4o9qwkvnOrwf6H9Z5CUtJZAslFNy1EqYBghKAtM5111pXRyIAD3Hgy/M3GrH9EeyCiY0v8y+N2u9dtOppMyng==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4732,32 +4029,32 @@ packages: optional: true dependencies: '@fastify/cors': 8.2.0 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@types/node': 18.19.6 fastify: 4.25.2 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) dev: false - /@graphql-ez/plugin-altair@0.11.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-altair@0.11.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-7z567qkqwjhfm7yppCrH68CuPf6/89VX7FH+OlmXcl/v0Tif97pwhcs6LUFTTvBuIYyFOKKSinUBEGTqFHZMwg==} engines: {node: '>=14.13.1'} peerDependencies: '@types/node': '*' graphql-ez: ^0.16.0 dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@types/node': 18.15.5 + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@types/node': 18.19.6 altair-static-slim: 5.0.9 cross-undici-fetch: 0.4.14 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) mime-types: 2.1.35 transitivePeerDependencies: - encoding - graphql dev: false - /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-codegen@0.8.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-dv0nW2PAG4EqaFwLn0lmm45rPtQ7yqfP4ega3J3JPHM1qUCBNi/QBTk2X2V3k2bBLCyDzDtXiNNDKgu9ILKW0w==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4767,18 +4064,18 @@ packages: graphql: optional: true dependencies: - '@graphql-codegen/core': 2.6.8(graphql@16.6.0) - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.6.0) - '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.6.0) - '@graphql-codegen/typescript': 2.8.8(graphql@16.6.0) - '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.6.0) - '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.6.0) - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.6.0) - '@graphql-tools/load': 7.8.8(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-codegen/core': 2.6.8(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 2.3.10(graphql@16.8.1) + '@graphql-codegen/typescript': 2.8.8(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 2.5.10(graphql@16.8.1) + '@graphql-codegen/typescript-resolvers': 2.7.10(graphql@16.8.1) + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@graphql-tools/graphql-file-loader': 7.5.13(graphql@16.8.1) + '@graphql-tools/load': 7.8.8(graphql@16.8.1) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) mkdirp: 1.0.4 prettier: 2.8.6 transitivePeerDependencies: @@ -4787,22 +4084,22 @@ packages: - supports-color dev: false - /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-dataloader@0.8.0(@envelop/core@3.0.6)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-tg+y2qvNgiXXVd9/nPLh0900LG3rr2Zetmf1MmVo/lpEslt3LvnxOoZ+os41IkaugUAoWE5SqeVsZWryFNQKaw==} engines: {node: '>=14.13.1'} peerDependencies: graphql-ez: ^0.16.0 dependencies: '@envelop/dataloader': 4.0.4(@envelop/core@3.0.6)(dataloader@2.1.0) - '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.6.0) + '@envelop/execute-subscription-event': 3.0.4(@envelop/core@3.0.6)(graphql@16.8.1) dataloader: 2.1.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) transitivePeerDependencies: - '@envelop/core' - graphql dev: false - /@graphql-ez/plugin-schema@0.9.0(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql@16.6.0): + /@graphql-ez/plugin-schema@0.9.0(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql@16.8.1): resolution: {integrity: sha512-53qxFKiZcDQyyu25mkCIicy1pAfSPca2hgTHWYsS1SRkrIiGMK3tQ/WRkFE6FTOfgnrh6Inx4PA0YEVDWqZCow==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4812,16 +4109,16 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@graphql-tools/schema': 9.0.15(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@graphql-tools/schema': 9.0.15(graphql@16.8.1) + '@graphql-tools/utils': 9.2.0(graphql@16.8.1) + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.15.5)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.6.0): + /@graphql-ez/plugin-upload@0.8.0(@types/graphql-upload@16.0.0)(@types/node@18.19.6)(graphql-ez@0.16.0)(graphql-upload@13.0.0)(graphql@16.8.1): resolution: {integrity: sha512-R/cE1vT5kZxWe4EpuwV15znWU+GSu4KsUIgdCUYcE897XO1O9+Iadn4K/RyPuRY3tv//6+7Bj5gKruJaFgmsbg==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4835,16 +4132,16 @@ packages: graphql-upload: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) '@types/graphql-upload': 16.0.0 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - graphql-upload: 13.0.0(graphql@16.6.0) + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) + graphql-upload: 13.0.0(graphql@16.8.1) transitivePeerDependencies: - '@types/node' dev: false - /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.15.5)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.6.0)(utf-8-validate@6.0.3): + /@graphql-ez/plugin-websockets@0.11.0(@types/node@18.19.6)(bufferutil@4.0.7)(graphql-ez@0.16.0)(graphql@16.8.1)(utf-8-validate@6.0.3): resolution: {integrity: sha512-jtvw5o3rw3Y6JNFfl+CoybQWdzqy0ml+eHNelHEd1Jd1b/Jbsc9RsIyOHE6uRqOxQhsBi6/1HL+nJCUuW+/n9A==} engines: {node: '>=14.13.1'} peerDependencies: @@ -4854,26 +4151,26 @@ packages: graphql: optional: true dependencies: - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) '@types/ws': 8.5.4 - graphql: 16.6.0 - graphql-ez: 0.16.0(@types/node@18.15.5)(graphql@16.6.0) - graphql-ws: 5.11.2(graphql@16.6.0) - subscriptions-transport-ws-envelop: 2.0.2(graphql@16.6.0)(ws@8.13.0) + graphql: 16.8.1 + graphql-ez: 0.16.0(@types/node@18.19.6)(graphql@16.8.1) + graphql-ws: 5.14.3(graphql@16.8.1) + subscriptions-transport-ws-envelop: 2.0.2(graphql@16.8.1)(ws@8.13.0) ws: 8.13.0(bufferutil@4.0.7)(utf-8-validate@6.0.3) transitivePeerDependencies: - '@types/node' - bufferutil - utf-8-validate - /@graphql-ez/utils@0.2.0(@types/node@18.15.5)(graphql@16.6.0): + /@graphql-ez/utils@0.2.0(@types/node@18.19.6)(graphql@16.8.1): resolution: {integrity: sha512-oYsmJPG6Ru1ODKni5QvtbBh6OhofIm+jRMTaGL2lZo9ZXqj2WFm4lI4heKTiJQv/VOqKpXOVFS38FvnJzW15Aw==} peerDependencies: '@types/node': '*' graphql: '*' dependencies: - '@types/node': 18.15.5 - graphql: 16.6.0 + '@types/node': 18.19.6 + graphql: 16.8.1 /@graphql-tools/batch-execute@8.5.16(graphql@16.8.1): resolution: {integrity: sha512-x/gXA6R1Q/qigT5LDesZYemErzFYvBBuTaVgiIJuE2wG6oMV1cln0O35Z7WVQw6H3I4vF7cCG7c7wKSoC+3z4Q==} @@ -4915,59 +4212,49 @@ packages: value-or-promise: 1.0.12 dev: false - /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.6.0): + /@graphql-tools/graphql-file-loader@7.5.13(graphql@16.8.1): resolution: {integrity: sha512-VWFVnw3aB6sykGfpb/Dn3sxQswqvp2FsVwDy8ubH1pgLuxlDuurhHjRHvMG2+p7IaHC7q8T3Vk/rLtZftrwOBQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/import': 6.7.14(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) + '@graphql-tools/import': 6.7.14(graphql@16.8.1) + '@graphql-tools/utils': 9.1.3(graphql@16.8.1) globby: 11.1.0 - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.5.0 unixify: 1.0.0 dev: false - /@graphql-tools/import@6.7.14(graphql@16.6.0): + /@graphql-tools/import@6.7.14(graphql@16.8.1): resolution: {integrity: sha512-lRX/MHM0Km497kg4VXMvtV1DeG/AfPJFO2ovaL0kDujWEdyCsWxsB4whY7nPeiNaPA/nT3mQ8MU7yFzVjogF/Q==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.8.1) + graphql: 16.8.1 resolve-from: 5.0.0 tslib: 2.5.0 dev: false - /@graphql-tools/load@7.8.8(graphql@16.6.0): + /@graphql-tools/load@7.8.8(graphql@16.8.1): resolution: {integrity: sha512-gMuQdO2jXmI0BNUc1MafxRQTWVMUtuH500pZAQtOdDdNJppV7lJdY6mMhITQ2qnhYDuMrcZPHhIkcftyQfkgUg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/schema': 9.0.12(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/schema': 9.0.12(graphql@16.8.1) + '@graphql-tools/utils': 9.1.3(graphql@16.8.1) + graphql: 16.8.1 p-limit: 3.1.0 tslib: 2.5.0 dev: false - /@graphql-tools/merge@8.3.14(graphql@16.6.0): + /@graphql-tools/merge@8.3.14(graphql@16.8.1): resolution: {integrity: sha512-zV0MU1DnxJLIB0wpL4N3u21agEiYFsjm6DI130jqHpwF0pR9HkF+Ni65BNfts4zQelP0GjkHltG+opaozAJ1NA==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 - dev: false - - /@graphql-tools/merge@8.3.17(graphql@16.6.0): - resolution: {integrity: sha512-CLzz49lc6BavPhH9gPRm0sJeNA7kC/tF/jLUTQsyef6xj82Jw3rqIJ9PE+bk1cqPCOG01WLOfquBu445OMDO2g==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/utils': 9.1.3(graphql@16.8.1) + graphql: 16.8.1 tslib: 2.5.0 dev: false @@ -4981,15 +4268,6 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/optimize@1.3.1(graphql@16.6.0): - resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.6.0 - tslib: 2.5.0 - dev: false - /@graphql-tools/optimize@1.3.1(graphql@16.8.1): resolution: {integrity: sha512-5j5CZSRGWVobt4bgRRg7zhjPiSimk+/zIuColih8E8DxuFOaJ+t0qu7eZS5KXWBkjcd4BPNuhUPpNlEmHPqVRQ==} peerDependencies: @@ -4999,20 +4277,6 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.6.0): - resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) - '@graphql-tools/utils': 8.13.1(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@graphql-tools/relay-operation-optimizer@6.5.8(graphql@16.8.1): resolution: {integrity: sha512-TQAO3i9/VlW7+4Q6E2BKWdEx+BkixHcjuwJLI59Eu4GJVETNi05Vsup4y5tr0kbtQU/oTGrYsCRIe0ssQ81jMQ==} peerDependencies: @@ -5027,28 +4291,16 @@ packages: - supports-color dev: false - /@graphql-tools/schema@9.0.12(graphql@16.6.0): + /@graphql-tools/schema@9.0.12(graphql@16.8.1): resolution: {integrity: sha512-DmezcEltQai0V1y96nwm0Kg11FDS/INEFekD4nnVgzBqawvznWqK6D6bujn+cw6kivoIr3Uq//QmU/hBlBzUlQ==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/merge': 8.3.14(graphql@16.6.0) - '@graphql-tools/utils': 9.1.3(graphql@16.6.0) - graphql: 16.6.0 - tslib: 2.5.0 - value-or-promise: 1.0.11 - dev: false - - /@graphql-tools/schema@9.0.15(graphql@16.6.0): - resolution: {integrity: sha512-p2DbpkOBcsi+yCEjwoS+r4pJ5z+3JjlJdhbPkCwC4q8lGf5r93dVYrExOrqGKTU5kxLXI/mxabSxcunjNIsDIg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/merge': 8.3.17(graphql@16.6.0) - '@graphql-tools/utils': 9.2.0(graphql@16.6.0) - graphql: 16.6.0 + '@graphql-tools/merge': 8.3.14(graphql@16.8.1) + '@graphql-tools/utils': 9.1.3(graphql@16.8.1) + graphql: 16.8.1 tslib: 2.5.0 - value-or-promise: 1.0.12 + value-or-promise: 1.0.11 dev: false /@graphql-tools/schema@9.0.15(graphql@16.8.1): @@ -5063,15 +4315,6 @@ packages: value-or-promise: 1.0.12 dev: false - /@graphql-tools/utils@8.13.1(graphql@16.6.0): - resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.6.0 - tslib: 2.5.0 - dev: false - /@graphql-tools/utils@8.13.1(graphql@16.8.1): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: @@ -5081,22 +4324,12 @@ packages: tslib: 2.5.0 dev: false - /@graphql-tools/utils@9.1.3(graphql@16.6.0): + /@graphql-tools/utils@9.1.3(graphql@16.8.1): resolution: {integrity: sha512-bbJyKhs6awp1/OmP+WKA1GOyu9UbgZGkhIj5srmiMGLHohEOKMjW784Sk0BZil1w2x95UPu0WHw6/d/HVCACCg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - graphql: 16.6.0 - tslib: 2.5.0 - dev: false - - /@graphql-tools/utils@9.2.0(graphql@16.6.0): - resolution: {integrity: sha512-s3lEG1iYkyYEnKCWrIFECX3XH2wmZvbg6Ir3udCvIDynq+ydaO7JQXobclpPtwSJtjlS353haF//6V7mnBQ4bg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) - graphql: 16.6.0 + graphql: 16.8.1 tslib: 2.5.0 dev: false @@ -5131,14 +4364,6 @@ packages: graphql: 16.8.1 dev: false - /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.6.0 - dev: false - /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: @@ -5443,7 +4668,7 @@ packages: /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -5452,7 +4677,7 @@ packages: /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -5732,12 +4957,12 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 - /@pablosz/graphql-helix@2.0.3(graphql@16.6.0): + /@pablosz/graphql-helix@2.0.3(graphql@16.8.1): resolution: {integrity: sha512-+uZMo0whkR0WbG3OJEgsrpgI8yH8iFhROysptXvxEOXUuptAcd3i0Dqi2fzcy32Qgg7WPS9G/yQkIsgMB6vFOQ==} peerDependencies: graphql: '*' dependencies: - graphql: 16.6.0 + graphql: 16.8.1 /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -5764,6 +4989,9 @@ packages: peerDependencies: react: ^16.8.0 || 17.x react-dom: ^16.8.0 || 17.x + peerDependenciesMeta: + react-dom: + optional: true dependencies: '@reach/utils': 0.13.2(react-dom@17.0.2)(react@17.0.2) '@reach/visually-hidden': 0.13.2(react-dom@17.0.2)(react@17.0.2) @@ -5850,8 +5078,8 @@ packages: optional: true dependencies: '@babel/core': 7.23.7 - '@babel/helper-module-imports': 7.18.6 - '@rollup/pluginutils': 5.0.2 + '@babel/helper-module-imports': 7.22.15 + '@rollup/pluginutils': 5.1.0(rollup@2.79.1) dev: false /@rollup/pluginutils@4.2.1: @@ -5862,20 +5090,6 @@ packages: picomatch: 2.3.1 dev: true - /@rollup/pluginutils@5.0.2: - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.0 - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: false - /@rollup/pluginutils@5.1.0(rollup@2.79.1): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -5889,7 +5103,6 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 2.79.1 - dev: true /@rushstack/eslint-patch@1.6.1: resolution: {integrity: sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==} @@ -5929,7 +5142,7 @@ packages: size-limit: 8.2.4 dependencies: esbuild: 0.17.19 - nanoid: 3.3.4 + nanoid: 3.3.7 size-limit: 8.2.4 dev: true @@ -5968,8 +5181,8 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.13 + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.8 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -5983,9 +5196,9 @@ packages: engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.0.1 - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@types/testing-library__jest-dom': 5.14.5 - aria-query: 5.1.3 + aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.14 @@ -6000,7 +5213,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.7 react: 18.2.0 @@ -6040,8 +5253,8 @@ packages: /@types/babel__core@7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.2 @@ -6049,18 +5262,18 @@ packages: /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.23.6 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.1 - '@babel/types': 7.20.0 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 /@types/babel__traverse@7.18.2: resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} dependencies: - '@babel/types': 7.20.0 + '@babel/types': 7.23.6 /@types/big.js@6.1.6: resolution: {integrity: sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA==} @@ -6092,13 +5305,8 @@ packages: '@types/keygrip': 1.0.2 '@types/node': 18.19.6 - /@types/estree@1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} - dev: false - /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true /@types/express-serve-static-core@4.17.31: resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} @@ -6164,19 +5372,11 @@ packages: dependencies: '@types/istanbul-lib-report': 3.0.0 - /@types/jest@29.5.0: - resolution: {integrity: sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==} - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: false - /@types/jest@29.5.11: resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 - dev: true /@types/jsdom@20.0.0: resolution: {integrity: sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==} @@ -6260,9 +5460,6 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node@18.15.5: - resolution: {integrity: sha512-Ark2WDjjZO7GmvsyFFf81MXuGTA/d6oP38anyxWOL6EREyBKAxKoFHwBhaZxCfLRLpO8JgVXwqOwSwa7jRcjew==} - /@types/node@18.19.6: resolution: {integrity: sha512-X36s5CXMrrJOs2lQCdDF68apW4Rfx9ixYMawlepwmE4Anezv/AV2LSpKD1Ub8DAc+urp5bk0BGZ6NtmBitfnsg==} dependencies: @@ -6300,12 +5497,6 @@ packages: /@types/range-parser@1.2.4: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} - dependencies: - '@types/react': 18.2.17 - dev: true - /@types/react-dom@18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: @@ -6411,7 +5602,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -6485,7 +5676,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -6506,7 +5697,7 @@ packages: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) eslint: 8.46.0 eslint-scope: 5.1.1 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -6565,7 +5756,7 @@ packages: /acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.11.3 acorn-walk: 8.2.0 dev: true @@ -6585,12 +5776,6 @@ packages: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true - - /acorn@8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -6763,7 +5948,7 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 @@ -6783,28 +5968,18 @@ packages: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 get-intrinsic: 1.2.2 dev: true - /array.prototype.flat@1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 @@ -6814,7 +5989,7 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 @@ -6823,7 +5998,7 @@ packages: /array.prototype.tosorted@1.1.2: resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-shim-unscopables: 1.0.0 @@ -6902,16 +6077,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /avvio@8.2.0: - resolution: {integrity: sha512-bbCQdg7bpEv6kGH41RO/3B2/GMMmJSo2iBK+X8AWN9mujtfUipMDfIjsgHCfpnKqoGEQrrmCDKSa5OQ19+fDmg==} - dependencies: - archy: 1.0.0 - debug: 4.3.4 - fastq: 1.13.0 - transitivePeerDependencies: - - supports-color - dev: false - /avvio@8.2.1: resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} dependencies: @@ -6963,7 +6128,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -6975,8 +6140,8 @@ packages: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.0 + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 '@types/babel__core': 7.1.19 '@types/babel__traverse': 7.18.2 @@ -6984,9 +6149,9 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 cosmiconfig: 7.1.0 - resolve: 1.22.1 + resolve: 1.22.8 dev: false /babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): @@ -7060,29 +6225,27 @@ packages: '@babel/plugin-syntax-flow': 7.18.6(@babel/core@7.23.7) '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.23.7) '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-arrow-functions': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoping': 7.20.0(@babel/core@7.23.7) - '@babel/plugin-transform-classes': 7.19.0(@babel/core@7.23.7) - '@babel/plugin-transform-computed-properties': 7.18.9(@babel/core@7.23.7) - '@babel/plugin-transform-destructuring': 7.20.0(@babel/core@7.23.7) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.7) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.7) '@babel/plugin-transform-flow-strip-types': 7.19.0(@babel/core@7.23.7) - '@babel/plugin-transform-for-of': 7.18.8(@babel/core@7.23.7) - '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.23.7) - '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.23.7) - '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-modules-commonjs': 7.19.6(@babel/core@7.23.7) - '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-parameters': 7.20.1(@babel/core@7.23.7) - '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.23.7) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.7) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.7) '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.23.7) '@babel/plugin-transform-react-jsx': 7.19.0(@babel/core@7.23.7) - '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.23.7) - '@babel/plugin-transform-spread': 7.19.0(@babel/core@7.23.7) - '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.23.7) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.7) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - transitivePeerDependencies: - - supports-color dev: false /babel-preset-jest@29.5.0(@babel/core@7.23.7): @@ -7164,7 +6327,7 @@ packages: rollup: 2.79.1 dev: true - /bob-esbuild-plugin@5.0.0-alpha-d826df0.0(esbuild@0.17.12)(rollup@2.79.1): + /bob-esbuild-plugin@5.0.0-alpha-d826df0.0(esbuild@0.17.19)(rollup@2.79.1): resolution: {integrity: sha512-ByIveo0lvUmB8sqC4aDqgnNiwg2IyVgtdjLRzBZe51whobfcgxOwYsE5vcY6XUZWClCHfHhQhsrALKixqPNJwg==} peerDependencies: esbuild: '>=0.14.39' @@ -7176,7 +6339,7 @@ packages: optional: true dependencies: '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - esbuild: 0.17.12 + esbuild: 0.17.19 rollup: 2.79.1 dev: true @@ -7214,7 +6377,7 @@ packages: typescript: 5.3.3 dev: true - /bob-ts@5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.17.12)(typescript@5.3.3): + /bob-ts@5.0.0-alpha-227aebc.0(@types/node@18.19.6)(esbuild@0.17.19)(typescript@5.3.3): resolution: {integrity: sha512-CTFOVp1Hzo7CQoVYuuGjeMU8kdm2VuUZ2uhOeb5zKigHaAziRfaArB2bbRrLI4joRENs6QPQdEJ6mg5ZtUbcVw==} engines: {node: '>=14.13.1'} hasBin: true @@ -7228,14 +6391,14 @@ packages: typescript: optional: true dependencies: - '@types/node': 18.15.5 - bob-esbuild-plugin: 5.0.0-alpha-d826df0.0(esbuild@0.17.12)(rollup@2.79.1) - esbuild: 0.17.12 + '@types/node': 18.19.6 + bob-esbuild-plugin: 5.0.0-alpha-d826df0.0(esbuild@0.17.19)(rollup@2.79.1) + esbuild: 0.17.19 rollup: 2.79.1 typescript: 5.3.3 dev: true - /bob-ts@5.0.0-alpha-227aebc.0(@types/node@18.15.5)(esbuild@0.18.20)(typescript@5.3.3): + /bob-ts@5.0.0-alpha-227aebc.0(@types/node@18.19.6)(esbuild@0.18.20)(typescript@5.3.3): resolution: {integrity: sha512-CTFOVp1Hzo7CQoVYuuGjeMU8kdm2VuUZ2uhOeb5zKigHaAziRfaArB2bbRrLI4joRENs6QPQdEJ6mg5ZtUbcVw==} engines: {node: '>=14.13.1'} hasBin: true @@ -7249,14 +6412,14 @@ packages: typescript: optional: true dependencies: - '@types/node': 18.15.5 + '@types/node': 18.19.6 bob-esbuild-plugin: 5.0.0-alpha-d826df0.0(esbuild@0.18.20)(rollup@2.79.1) esbuild: 0.18.20 rollup: 2.79.1 typescript: 5.3.3 dev: true - /bob-tsm@2.0.0-alpha-227aebc.0(esbuild@0.17.12)(typescript@5.3.3): + /bob-tsm@2.0.0-alpha-227aebc.0(esbuild@0.17.19)(typescript@5.3.3): resolution: {integrity: sha512-GiT+6+dvhFdsfb0reGtzoXFFJRMCpgIsaxyKXC+gEP3yh6UC+Yu1gpwbC3jhXGDH5j9TcpCPTZ1OnvmRLVR0Yw==} engines: {node: '>=14.13.1'} hasBin: true @@ -7267,7 +6430,7 @@ packages: typescript: optional: true dependencies: - esbuild: 0.17.12 + esbuild: 0.17.19 typescript: 5.3.3 optionalDependencies: fsevents: 2.3.3 @@ -7301,7 +6464,7 @@ packages: string-width: 5.1.2 type-fest: 2.19.0 widest-line: 4.0.1 - wrap-ansi: 8.0.1 + wrap-ansi: 8.1.0 dev: true /bplist-parser@0.2.0: @@ -7335,17 +6498,6 @@ packages: wcwidth: 1.0.1 dev: true - /browserslist@4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001429 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10(browserslist@4.21.4) - dev: false - /browserslist@4.22.2: resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -7423,13 +6575,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.3 - dev: true - /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: @@ -7486,9 +6631,6 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001429: - resolution: {integrity: sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==} - /caniuse-lite@1.0.30001576: resolution: {integrity: sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==} @@ -7772,11 +6914,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /content-type@1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - dev: false - /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -8029,9 +7166,9 @@ packages: /deep-equal@2.0.5: resolution: {integrity: sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 es-get-iterator: 1.1.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.2 is-arguments: 1.1.1 is-date-object: 1.0.5 is-regex: 1.1.4 @@ -8039,11 +7176,11 @@ packages: object-is: 1.1.5 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.1 side-channel: 1.0.4 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.8 + which-typed-array: 1.1.13 dev: true /deep-extend@0.6.0: @@ -8101,14 +7238,6 @@ packages: engines: {node: '>=12'} dev: true - /define-properties@1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: true - /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -8226,10 +7355,6 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} - dev: false - /electron-to-chromium@1.4.630: resolution: {integrity: sha512-osHqhtjojpCsACVnuD11xO5g9xaCyw7Qqn/C2KParkMv42i8jrJJgx3g7mkHfpxwhy9MnOJr8+pKOdZ7qzgizg==} @@ -8275,36 +7400,6 @@ packages: dependencies: is-arrayish: 0.2.1 - /es-abstract@1.20.4: - resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 - get-symbol-description: 1.0.0 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.3 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.5 - string.prototype.trimstart: 1.0.5 - unbox-primitive: 1.0.2 - dev: true - /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -8353,8 +7448,8 @@ packages: /es-get-iterator@1.1.2: resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -8367,11 +7462,11 @@ packages: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} dependencies: asynciterator.prototype: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 es-set-tostringtag: 2.0.2 - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.2 globalthis: 1.0.3 has-property-descriptors: 1.0.0 @@ -8406,36 +7501,6 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.17.12: - resolution: {integrity: sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.17.12 - '@esbuild/android-arm64': 0.17.12 - '@esbuild/android-x64': 0.17.12 - '@esbuild/darwin-arm64': 0.17.12 - '@esbuild/darwin-x64': 0.17.12 - '@esbuild/freebsd-arm64': 0.17.12 - '@esbuild/freebsd-x64': 0.17.12 - '@esbuild/linux-arm': 0.17.12 - '@esbuild/linux-arm64': 0.17.12 - '@esbuild/linux-ia32': 0.17.12 - '@esbuild/linux-loong64': 0.17.12 - '@esbuild/linux-mips64el': 0.17.12 - '@esbuild/linux-ppc64': 0.17.12 - '@esbuild/linux-riscv64': 0.17.12 - '@esbuild/linux-s390x': 0.17.12 - '@esbuild/linux-x64': 0.17.12 - '@esbuild/netbsd-x64': 0.17.12 - '@esbuild/openbsd-x64': 0.17.12 - '@esbuild/sunos-x64': 0.17.12 - '@esbuild/win32-arm64': 0.17.12 - '@esbuild/win32-ia32': 0.17.12 - '@esbuild/win32-x64': 0.17.12 - dev: true - /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} engines: {node: '>=12'} @@ -8574,7 +7639,7 @@ packages: eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.46.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 - is-core-module: 2.11.0 + is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -8936,16 +8001,6 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -8955,7 +8010,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -8972,17 +8026,6 @@ packages: rfdc: 1.3.0 dev: false - /fast-json-stringify@5.4.0: - resolution: {integrity: sha512-PIzon53oX/zEGLrGbu4DpfNcYiV4K4rk+JsVrawRPO/G8cNBEMZ3KlIk2BCGqN+m1KCCA4zt5E7Hh3GG9ojRVA==} - dependencies: - '@fastify/deepmerge': 1.1.0 - ajv: 8.11.0 - ajv-formats: 2.1.1(ajv@8.11.0) - fast-deep-equal: 3.1.3 - fast-uri: 2.1.0 - rfdc: 1.3.0 - dev: false - /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true @@ -9011,28 +8054,6 @@ packages: /fastify-plugin@4.3.0: resolution: {integrity: sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ==} - /fastify@4.11.0: - resolution: {integrity: sha512-JteZ8pjEqd+6n+azQnQfSJV8MUMxAmxbvC2Dx/Mybj039Lf/u3kda9Kq84uy/huCpqCzZoyHIZS5JFGF3wLztw==} - dependencies: - '@fastify/ajv-compiler': 3.4.0 - '@fastify/error': 3.0.0 - '@fastify/fast-json-stringify-compiler': 4.1.0 - abstract-logging: 2.0.1 - avvio: 8.2.0 - content-type: 1.0.4 - find-my-way: 7.3.1 - light-my-request: 5.6.1 - pino: 8.7.0 - process-warning: 2.0.0 - proxy-addr: 2.0.7 - rfdc: 1.3.0 - secure-json-parse: 2.5.0 - semver: 7.3.8 - tiny-lru: 10.0.1 - transitivePeerDependencies: - - supports-color - dev: false - /fastify@4.25.2: resolution: {integrity: sha512-SywRouGleDHvRh054onj+lEZnbC1sBCLkR0UY3oyJwjD4BdZJUrxBqfkfCaqn74pVCwBaRHGuL3nEWeHbHzAfw==} dependencies: @@ -9113,15 +8134,6 @@ packages: dependencies: to-regex-range: 5.0.1 - /find-my-way@7.3.1: - resolution: {integrity: sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg==} - engines: {node: '>=14'} - dependencies: - fast-deep-equal: 3.1.3 - fast-querystring: 1.0.0 - safe-regex2: 2.0.0 - dev: false - /find-my-way@7.7.0: resolution: {integrity: sha512-+SrHpvQ52Q6W9f3wJoJBbAQULJuNEEQwBvlvYwACDhBTLOTMiQ0HYWh4+vC3OivGP2ENcTI1oKlFA2OepJNjhQ==} engines: {node: '>=14'} @@ -9309,22 +8321,8 @@ packages: requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true - - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - functions-have-names: 1.2.3 - dev: true /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} @@ -9348,14 +8346,6 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - /get-intrinsic@1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: true - /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: @@ -9394,8 +8384,8 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true /get-tsconfig@4.7.2: @@ -9461,7 +8451,7 @@ packages: fs.realpath: 1.0.0 minimatch: 7.4.2 minipass: 4.2.4 - path-scurry: 1.6.1 + path-scurry: 1.10.1 dev: true /globals@11.12.0: @@ -9488,7 +8478,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 @@ -9498,7 +8488,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.0 merge2: 1.4.1 slash: 4.0.0 @@ -9521,7 +8511,7 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /graphql-ez@0.16.0(@types/node@18.15.5)(graphql@16.6.0): + /graphql-ez@0.16.0(@types/node@18.19.6)(graphql@16.8.1): resolution: {integrity: sha512-ZognCmC3fP0AZg76QGKmylmZG6uonLTL1qY5Jpx7uTKKGI9o+617URQa6H31TkIdFDWPKACEYzLJ+toMQZ45LA==} engines: {node: '>=14.13.1'} peerDependencies: @@ -9531,33 +8521,23 @@ packages: optional: true dependencies: '@envelop/core': 3.0.6 - '@envelop/types': 3.0.1 - '@graphql-ez/utils': 0.2.0(@types/node@18.15.5)(graphql@16.6.0) - '@pablosz/graphql-helix': 2.0.3(graphql@16.6.0) - graphql: 16.6.0 + '@envelop/types': 3.0.2 + '@graphql-ez/utils': 0.2.0(@types/node@18.19.6)(graphql@16.8.1) + '@pablosz/graphql-helix': 2.0.3(graphql@16.8.1) + graphql: 16.8.1 tiny-lru: 10.0.1 transitivePeerDependencies: - '@types/node' - /graphql-sse@2.5.2(graphql@16.6.0): + /graphql-sse@2.5.2(graphql@16.8.1): resolution: {integrity: sha512-KCTl7HpD12xQrbXGdLrc1BL0ybfB6M83lxRO1mqT31pvOY01ZuWgiJKTY8+NAX8sgEMPVrnXXOXh9LqYDgNI+g==} engines: {node: '>=12'} peerDependencies: graphql: '>=0.11 <=16' dependencies: - graphql: 16.6.0 + graphql: 16.8.1 dev: true - /graphql-tag@2.12.6(graphql@16.6.0): - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} - engines: {node: '>=10'} - peerDependencies: - graphql: ^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: 16.6.0 - tslib: 2.5.0 - dev: false - /graphql-tag@2.12.6(graphql@16.8.1): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -9568,7 +8548,7 @@ packages: tslib: 2.5.0 dev: false - /graphql-upload@13.0.0(graphql@16.6.0): + /graphql-upload@13.0.0(graphql@16.8.1): resolution: {integrity: sha512-YKhx8m/uOtKu4Y1UzBFJhbBGJTlk7k4CydlUUiNrtxnwZv0WigbRHP+DVhRNKt7u7DXOtcKZeYJlGtnMXvreXA==} engines: {node: ^12.22.0 || ^14.17.0 || >= 16.0.0} peerDependencies: @@ -9576,31 +8556,18 @@ packages: dependencies: busboy: 0.3.1 fs-capacitor: 6.2.0 - graphql: 16.6.0 + graphql: 16.8.1 http-errors: 1.8.1 object-path: 0.11.8 dev: false - /graphql-ws@5.11.2(graphql@16.6.0): - resolution: {integrity: sha512-4EiZ3/UXYcjm+xFGP544/yW1+DVI8ZpKASFbzrV5EDTFWJp0ZvLl4Dy2fSZAzz9imKp5pZMIcjB0x/H69Pv/6w==} - engines: {node: '>=10'} - peerDependencies: - graphql: '>=0.11 <=16' - dependencies: - graphql: 16.6.0 - - /graphql-ws@5.14.3(graphql@16.6.0): + /graphql-ws@5.14.3(graphql@16.8.1): resolution: {integrity: sha512-F/i2xNIVbaEF2xWggID0X/UZQa2V8kqKDPO8hwmu53bVOcTL7uNkxnexeEgSCVxYBQUTUNEI8+e4LO1FOhKPKQ==} engines: {node: '>=10'} peerDependencies: graphql: '>=0.11 <=16' - dependencies: - graphql: 16.6.0 - dev: true - - /graphql@16.6.0: - resolution: {integrity: sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + dependencies: + graphql: 16.8.1 /graphql@16.8.1: resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} @@ -9633,7 +8600,7 @@ packages: /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.2 dev: true /has-proto@1.0.1: @@ -9657,14 +8624,14 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 + dev: true /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 - dev: true /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -9855,15 +8822,6 @@ packages: wrap-ansi: 6.2.0 dev: false - /internal-slot@1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.3 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} @@ -9896,7 +8854,7 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -9935,7 +8893,7 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -9951,16 +8909,10 @@ packages: ci-info: 3.7.1 dev: true - /is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 - dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -9988,7 +8940,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-fullwidth-code-point@3.0.0: @@ -10079,7 +9031,7 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -10097,7 +9049,7 @@ packages: /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-stream@2.0.1: @@ -10137,17 +9089,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typed-array@1.1.9: - resolution: {integrity: sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-abstract: 1.20.4 - for-each: 0.3.3 - has-tostringtag: 1.0.0 - dev: true - /is-unc-path@1.0.0: resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} @@ -10173,14 +9114,14 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true /is-windows@1.0.2: @@ -10225,10 +9166,10 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.23.7 - '@babel/parser': 7.20.1 + '@babel/parser': 7.23.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -10313,33 +9254,6 @@ packages: transitivePeerDependencies: - supports-color - /jest-cli@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.6.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - /jest-cli@29.5.0(@types/node@18.19.6)(ts-node@10.9.1): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10366,46 +9280,6 @@ packages: - '@types/node' - supports-color - ts-node - dev: true - - /jest-config@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.7 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 18.15.5 - babel-jest: 29.5.0(@babel/core@7.23.7) - chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.5)(typescript@5.3.3) - transitivePeerDependencies: - - supports-color /jest-config@29.5.0(@types/node@18.19.6)(ts-node@10.9.1): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} @@ -10442,7 +9316,7 @@ packages: pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@types/node@18.15.5)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.19.6)(typescript@5.3.3) transitivePeerDependencies: - supports-color @@ -10547,7 +9421,7 @@ packages: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.23.5 '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -10599,7 +9473,7 @@ packages: jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 - resolve: 1.22.1 + resolve: 1.22.8 resolve.exports: 2.0.0 slash: 3.0.0 @@ -10665,11 +9539,11 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.7 - '@babel/generator': 7.20.1 + '@babel/generator': 7.23.6 '@babel/plugin-syntax-jsx': 7.18.6(@babel/core@7.23.7) '@babel/plugin-syntax-typescript': 7.20.0(@babel/core@7.23.7) - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.0 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 '@jest/expect-utils': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 @@ -10686,7 +9560,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.3.8 + semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -10720,7 +9594,7 @@ packages: dependencies: ansi-escapes: 6.0.0 chalk: 5.2.0 - jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) jest-regex-util: 29.4.3 jest-watcher: 29.5.0 slash: 5.0.0 @@ -10750,25 +9624,6 @@ packages: merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.5.0(@types/node@18.15.5)(ts-node@10.9.1): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.1) - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - /jest@29.5.0(@types/node@18.19.6)(ts-node@10.9.1): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10787,7 +9642,6 @@ packages: - '@types/node' - supports-color - ts-node - dev: true /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} @@ -10830,7 +9684,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.11.3 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -11006,19 +9860,6 @@ packages: set-cookie-parser: 2.5.1 dev: false - /light-my-request@5.6.1: - resolution: {integrity: sha512-sbJnC1UBRivi9L1kICr3CESb82pNiPNB3TvtdIrZZqW0Qh8uDXvoywMmWKZlihDcmw952CMICCzM+54LDf+E+g==} - dependencies: - cookie: 0.5.0 - process-warning: 2.0.0 - set-cookie-parser: 2.5.1 - dev: false - - /lilconfig@2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - dev: true - /lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -11151,7 +9992,7 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -11371,16 +10212,10 @@ packages: thenify-all: 1.6.0 dev: true - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /nanospinner@1.1.0: resolution: {integrity: sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==} @@ -11420,7 +10255,7 @@ packages: dependencies: '@next/env': 12.3.4 '@swc/helpers': 0.4.11 - caniuse-lite: 1.0.30001429 + caniuse-lite: 1.0.30001576 postcss: 8.4.14 react: 17.0.2 react-dom: 17.0.2(react@17.0.2) @@ -11465,7 +10300,7 @@ packages: '@next/env': 13.4.12 '@swc/helpers': 0.5.1 busboy: 1.6.0 - caniuse-lite: 1.0.30001429 + caniuse-lite: 1.0.30001576 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -11530,15 +10365,11 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: false - /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.8 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -11548,8 +10379,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.11.0 - semver: 7.3.8 + is-core-module: 2.13.1 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -11558,8 +10389,8 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.11.0 - semver: 7.3.8 + is-core-module: 2.13.1 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -11608,10 +10439,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - dev: true - /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -11620,8 +10447,8 @@ packages: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 + call-bind: 1.0.5 + define-properties: 1.2.1 dev: true /object-keys@1.1.1: @@ -11638,8 +10465,8 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} 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 dev: true @@ -11648,7 +10475,7 @@ packages: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -11657,7 +10484,7 @@ packages: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -11665,7 +10492,7 @@ packages: /object.groupby@1.0.1: resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 @@ -11682,7 +10509,7 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 dev: true @@ -11889,7 +10716,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -11963,14 +10790,6 @@ packages: minipass: 7.0.4 dev: true - /path-scurry@1.6.1: - resolution: {integrity: sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==} - engines: {node: '>=14'} - dependencies: - lru-cache: 7.18.1 - minipass: 4.2.4 - dev: true - /path-to-regexp@2.2.1: resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} dev: true @@ -12007,13 +10826,6 @@ packages: engines: {node: '>=6'} dev: true - /pino-abstract-transport@1.0.0: - resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} - dependencies: - readable-stream: 4.2.0 - split2: 4.1.0 - dev: false - /pino-abstract-transport@1.1.0: resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} dependencies: @@ -12042,23 +10854,6 @@ packages: thread-stream: 2.2.0 dev: false - /pino@8.7.0: - resolution: {integrity: sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==} - hasBin: true - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.1.2 - on-exit-leak-free: 2.1.0 - pino-abstract-transport: 1.0.0 - pino-std-serializers: 6.0.0 - process-warning: 2.0.0 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.4.1 - sonic-boom: 3.2.0 - thread-stream: 2.2.0 - dev: false - /pirates@4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} @@ -12114,7 +10909,7 @@ packages: dependencies: lilconfig: 3.0.0 postcss: 8.4.33 - ts-node: 10.9.1(@types/node@18.15.5)(typescript@5.3.3) + ts-node: 10.9.1(@types/node@18.19.6)(typescript@5.3.3) yaml: 2.3.4 dev: true @@ -12144,7 +10939,7 @@ packages: resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -12152,7 +10947,7 @@ packages: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -12358,7 +11153,7 @@ packages: peerDependencies: react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 react: 17.0.2 dev: false @@ -12390,7 +11185,7 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 focus-lock: 0.9.2 prop-types: 15.8.1 react: 17.0.2 @@ -12629,7 +11424,7 @@ packages: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 @@ -12650,31 +11445,22 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: true /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.20.13 - dev: true - - /regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - functions-have-names: 1.2.3 + '@babel/runtime': 7.23.8 dev: true /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 dev: true @@ -12715,7 +11501,7 @@ packages: /relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.23.8 fbjs: 3.0.4 invariant: 2.2.4 transitivePeerDependencies: @@ -12763,14 +11549,6 @@ packages: resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -12778,7 +11556,6 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true /resolve@2.0.0-next.5: resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} @@ -12831,7 +11608,6 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 - dev: true /rollup@3.19.1: resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} @@ -12871,7 +11647,7 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 get-intrinsic: 1.2.2 has-symbols: 1.0.3 isarray: 2.0.5 @@ -12887,8 +11663,8 @@ packages: /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 is-regex: 1.1.4 dev: true @@ -12924,10 +11700,6 @@ packages: dependencies: loose-envify: 1.4.0 - /secure-json-parse@2.5.0: - resolution: {integrity: sha512-ZQruFgZnIWH+WyO9t5rWt4ZEGqCKPwhiw+YbzTwpmT9elgLrLcfuyUiSnwwjUiVy9r4VM3urtbNF1xmEh9IL2w==} - dev: false - /secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} dev: false @@ -12937,10 +11709,6 @@ packages: hasBin: true dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -12951,6 +11719,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -13070,9 +11839,9 @@ packages: /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 dev: true /signal-exit@3.0.7: @@ -13107,7 +11876,7 @@ packages: bytes-iec: 3.1.1 chokidar: 3.5.3 globby: 11.1.0 - lilconfig: 2.0.6 + lilconfig: 2.1.0 nanospinner: 1.1.0 picocolors: 1.0.0 dev: true @@ -13131,7 +11900,7 @@ packages: engines: {node: '>=6'} hasBin: true dependencies: - array.prototype.flat: 1.3.0 + array.prototype.flat: 1.3.2 breakword: 1.0.5 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 @@ -13146,12 +11915,6 @@ packages: tslib: 2.5.0 dev: false - /sonic-boom@3.2.0: - resolution: {integrity: sha512-SbbZ+Kqj/XIunvIAgUZRlqd6CGQYq71tRRbXR92Za8J/R3Yh4Av+TWENiSiEgnlwckYLyP0YZQWVfyNC0dzLaA==} - dependencies: - atomic-sleep: 1.0.0 - dev: false - /sonic-boom@3.8.0: resolution: {integrity: sha512-ybz6OYOUjoQQCQ/i4LU8kaToD8ACtYP+Cj5qd2AO36bwbdewxWJ3ArmJ2cr6AvxlL2o0PqnCcPGUgkILbfkaCA==} dependencies: @@ -13303,7 +12066,7 @@ packages: /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 get-intrinsic: 1.2.2 @@ -13323,14 +12086,6 @@ packages: es-abstract: 1.22.3 dev: true - /string.prototype.trimend@1.0.5: - resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - dev: true - /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: @@ -13339,14 +12094,6 @@ packages: es-abstract: 1.22.3 dev: true - /string.prototype.trimstart@1.0.5: - resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 - dev: true - /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: @@ -13466,7 +12213,7 @@ packages: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false - /subscriptions-transport-ws-envelop@2.0.2(graphql@16.6.0)(ws@8.13.0): + /subscriptions-transport-ws-envelop@2.0.2(graphql@16.8.1)(ws@8.13.0): resolution: {integrity: sha512-HMwQgdiMBgWC48LplRtDsgrdQKnsns7VvLZTN1eIFNT01XJd6yuuudrl85TbO5QnTAiw6g2Sh5bjTFYKjFIGwQ==} peerDependencies: graphql: '>=0.10.0' @@ -13474,7 +12221,7 @@ packages: dependencies: backo2: 1.0.2 eventemitter3: 4.0.7 - graphql: 16.6.0 + graphql: 16.8.1 isomorphic-ws: 4.0.1(ws@8.13.0) iterall: 1.3.0 symbol-observable: 4.0.0 @@ -13770,7 +12517,7 @@ packages: bs-logger: 0.2.6 esbuild: 0.18.20 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@18.15.5)(ts-node@10.9.1) + jest: 29.5.0(@types/node@18.19.6)(ts-node@10.9.1) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -13780,7 +12527,7 @@ packages: yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@types/node@18.15.5)(typescript@5.3.3): + /ts-node@10.9.1(@types/node@18.19.6)(typescript@5.3.3): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13799,8 +12546,8 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - '@types/node': 18.15.5 - acorn: 8.8.1 + '@types/node': 18.19.6 + acorn: 8.11.3 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -13972,7 +12719,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -14043,17 +12790,6 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.10(browserslist@4.21.4): - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.4 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: false - /update-browserslist-db@1.0.13(browserslist@4.22.2): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -14222,7 +12958,7 @@ packages: '@types/node': 18.19.6 esbuild: 0.17.19 postcss: 8.4.21 - resolve: 1.22.1 + resolve: 1.22.8 rollup: 3.19.1 optionalDependencies: fsevents: 2.3.3 @@ -14300,7 +13036,7 @@ packages: engines: {node: '>= 10.13.0'} hasBin: true dependencies: - acorn: 8.8.1 + acorn: 8.11.3 acorn-walk: 8.2.0 chalk: 4.1.2 commander: 7.2.0 @@ -14354,7 +13090,7 @@ packages: resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} engines: {node: '>= 0.4'} dependencies: - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 has-tostringtag: 1.0.0 is-async-function: 2.0.0 is-date-object: 1.0.5 @@ -14399,18 +13135,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which-typed-array@1.1.8: - resolution: {integrity: sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-abstract: 1.20.4 - for-each: 0.3.3 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.9 - dev: true - /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -14453,15 +13177,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.0.1: - resolution: {integrity: sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - dev: true - /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} From 118fec1d4cde2f06a7826da70c54d2088718615a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 14:31:26 -0500 Subject: [PATCH 121/122] fix --- packages/cli/src/commands/default.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/default.ts b/packages/cli/src/commands/default.ts index b33cf7f8f..4fb7b08fb 100644 --- a/packages/cli/src/commands/default.ts +++ b/packages/cli/src/commands/default.ts @@ -273,7 +273,7 @@ export const addCommand = (command: Command) => { let shouldRun = false; for await (const { filename } of watch('.', { recursive: true })) { - if (isMatch(filename, endpoints)) { + if (filename && isMatch(filename, endpoints)) { // Already queued if (shouldRun) continue; shouldRun = true; From bf9a8a18ef040787797496fe833838893b19c733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20S=C3=A1ez?= Date: Fri, 12 Jan 2024 16:45:52 -0500 Subject: [PATCH 122/122] fix subscribe on complete --- packages/gqty/src/Client/resolvers.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/gqty/src/Client/resolvers.ts b/packages/gqty/src/Client/resolvers.ts index 837d1b5ba..35c01a6cb 100644 --- a/packages/gqty/src/Client/resolvers.ts +++ b/packages/gqty/src/Client/resolvers.ts @@ -445,6 +445,10 @@ export const createResolvers = ({ pending.push((fn(accessor) as any) ?? (value as any)); deferred?.resolve(); }, + onComplete() { + done = true; + deferred?.resolve(); + }, }); // Assuming child selections are cached and reused in subsequent

- a GraphQL client built for rapid iteration. + A No-GraphQL Client for TypeScript + Documentation Discord - +